1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
// Copyright (C) 2000, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
#ifndef OsiSolverParameters_H
#define OsiSolverParameters_H
enum OsiIntParam {
/*! \brief Iteration limit for initial solve and resolve.
The maximum number of iterations (whatever that means for the given
solver) the solver can execute in the OsiSolverinterface::initialSolve()
and OsiSolverinterface::resolve() methods before terminating.
*/
OsiMaxNumIteration = 0,
/*! \brief Iteration limit for hot start
The maximum number of iterations (whatever that means for the given
solver) the solver can execute in the
OsiSolverinterface::solveFromHotStart() method before terminating.
*/
OsiMaxNumIterationHotStart,
/*! \brief Handling of row and column names.
The name discipline specifies how the solver will handle row and column
names:
- 0: Auto names: Names cannot be set by the client. Names of the form
Rnnnnnnn or Cnnnnnnn are generated on demand when a name for a
specific row or column is requested; nnnnnnn is derived from the row
or column index. Requests for a vector of names return a vector with
zero entries.
- 1: Lazy names: Names supplied by the client are retained. Names of the
form Rnnnnnnn or Cnnnnnnn are generated on demand if no name has been
supplied by the client. Requests for a vector of names return a
vector sized to the largest index of a name supplied by the client;
some entries in the vector may be null strings.
- 2: Full names: Names supplied by the client are retained. Names of the
form Rnnnnnnn or Cnnnnnnn are generated on demand if no name has been
supplied by the client. Requests for a vector of names return a
vector sized to match the constraint system, and all entries will
contain either the name specified by the client or a generated name.
*/
OsiNameDiscipline,
/*! \brief End marker.
Used by OsiSolverInterface to allocate a fixed-sized array to store
integer parameters.
*/
OsiLastIntParam
} ;
enum OsiDblParam {
/*! \brief Dual objective limit.
This is to be used as a termination criteria in algorithms where the dual
objective changes monotonically (e.g., dual simplex, volume algorithm).
*/
OsiDualObjectiveLimit = 0,
/*! \brief Primal objective limit.
This is to be used as a termination criteria in algorithms where the
primal objective changes monotonically (e.g., primal simplex)
*/
OsiPrimalObjectiveLimit,
/*! \brief Dual feasibility tolerance.
The maximum amount a dual constraint can be violated and still be
considered feasible.
*/
OsiDualTolerance,
/*! \brief Primal feasibility tolerance.
The maximum amount a primal constraint can be violated and still be
considered feasible.
*/
OsiPrimalTolerance,
/** The value of any constant term in the objective function. */
OsiObjOffset,
/*! \brief End marker.
Used by OsiSolverInterface to allocate a fixed-sized array to store
double parameters.
*/
OsiLastDblParam
};
enum OsiStrParam {
/*! \brief The name of the loaded problem.
This is the string specified on the Name card of an mps file.
*/
OsiProbName = 0,
/*! \brief The name of the solver.
This parameter is read-only.
*/
OsiSolverName,
/*! \brief End marker.
Used by OsiSolverInterface to allocate a fixed-sized array to store
string parameters.
*/
OsiLastStrParam
};
enum OsiHintParam {
/** Whether to do a presolve in initialSolve */
OsiDoPresolveInInitial = 0,
/** Whether to use a dual algorithm in initialSolve.
The reverse is to use a primal algorithm */
OsiDoDualInInitial,
/** Whether to do a presolve in resolve */
OsiDoPresolveInResolve,
/** Whether to use a dual algorithm in resolve.
The reverse is to use a primal algorithm */
OsiDoDualInResolve,
/** Whether to scale problem */
OsiDoScale,
/** Whether to create a non-slack basis (only in initialSolve) */
OsiDoCrash,
/** Whether to reduce amount of printout, e.g., for branch and cut */
OsiDoReducePrint,
/** Whether we are in branch and cut - so can modify behavior */
OsiDoInBranchAndCut,
/** Just a marker, so that OsiSolverInterface can allocate a static sized
array to store parameters. */
OsiLastHintParam
};
enum OsiHintStrength {
/** Ignore hint (default) */
OsiHintIgnore = 0,
/** This means it is only a hint */
OsiHintTry,
/** This means do hint if at all possible */
OsiHintDo,
/** And this means throw an exception if not possible */
OsiForceDo
};
#endif
|