Skip to content

Commit ef92404

Browse files
committed
Make GRB and COPT more compliant with gurobipy and coptpy
1 parent 2b18093 commit ef92404

File tree

3 files changed

+934
-192
lines changed

3 files changed

+934
-192
lines changed

lib/copt_model_ext_constants.cpp

Lines changed: 181 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,65 +6,190 @@ namespace nb = nanobind;
66
void bind_copt_constants(nb::module_ &m)
77
{
88
nb::module_ COPT = m.def_submodule("COPT");
9+
COPT.attr("BASIS_BASIC") = 1;
10+
COPT.attr("BASIS_FIXED") = 4;
11+
COPT.attr("BASIS_LOWER") = 0;
12+
COPT.attr("BASIS_SUPERBASIC") = 3;
13+
COPT.attr("BASIS_UPPER") = 2;
14+
COPT.attr("BINARY") = "B";
15+
COPT.attr("CBCONTEXT_INCUMBENT") = 8;
16+
COPT.attr("CBCONTEXT_MIPNODE") = 4;
17+
COPT.attr("CBCONTEXT_MIPRELAX") = 1;
18+
COPT.attr("CBCONTEXT_MIPSOL") = 2;
19+
COPT.attr("CLIENT_CLUSTER") = "Cluster";
20+
COPT.attr("CLIENT_FLOATING") = "Floating";
21+
COPT.attr("CLIENT_PASSWORD") = "PassWord";
22+
COPT.attr("CLIENT_PORT") = "Port";
23+
COPT.attr("CLIENT_PRIORITY") = "Priority";
24+
COPT.attr("CLIENT_WAITTIME") = "WaitTime";
25+
COPT.attr("CLIENT_WEBACESSKEY") = "WebAccessKey";
26+
COPT.attr("CLIENT_WEBLICENSEID") = "WebLicenseId";
27+
COPT.attr("CLIENT_WEBSERVER") = "WebServer";
28+
COPT.attr("CLIENT_WEBTOKENDURATION") = "WebTokenDuration";
29+
COPT.attr("CONE_QUAD") = 1;
30+
COPT.attr("CONE_RQUAD") = 2;
31+
COPT.attr("CONTINUOUS") = "C";
32+
COPT.attr("EQUAL") = "E";
33+
COPT.attr("FREE") = "N";
34+
COPT.attr("GENCONSTR_ABS") = 1;
35+
COPT.attr("GENCONSTR_AND") = 2;
36+
COPT.attr("GENCONSTR_MAX") = 3;
37+
COPT.attr("GENCONSTR_MIN") = 4;
38+
COPT.attr("GENCONSTR_OR") = 5;
39+
COPT.attr("GENCONSTR_PWL") = 6;
40+
COPT.attr("GREATER_EQUAL") = "G";
41+
COPT.attr("IMPRECISE") = 7;
42+
COPT.attr("INFEASIBLE") = 2;
43+
COPT.attr("INFINITY") = 1e+30;
44+
COPT.attr("INF_OR_UNB") = 4;
45+
COPT.attr("INTEGER") = "I";
46+
COPT.attr("INTERRUPTED") = 10;
47+
COPT.attr("LESS_EQUAL") = "L";
48+
COPT.attr("MAXIMIZE") = -1;
49+
COPT.attr("MINIMIZE") = 1;
50+
COPT.attr("NODELIMIT") = 6;
51+
COPT.attr("NUMERICAL") = 5;
52+
COPT.attr("OPTIMAL") = 1;
53+
COPT.attr("RANGE") = "R";
54+
COPT.attr("SOS_TYPE1") = 1;
55+
COPT.attr("SOS_TYPE2") = 2;
56+
COPT.attr("TIMEOUT") = 8;
57+
COPT.attr("UNBOUNDED") = 3;
58+
COPT.attr("UNDEFINED") = 1e+40;
59+
COPT.attr("UNFINISHED") = 9;
60+
COPT.attr("UNSTARTED") = 0;
61+
COPT.attr("VERSION_MAJOR") = 7;
62+
COPT.attr("VERSION_MINOR") = 1;
63+
COPT.attr("VERSION_TECHNICAL") = 3;
964

10-
COPT.attr("VERSION_MAJOR") = COPT_VERSION_MAJOR;
11-
COPT.attr("VERSION_MINOR") = COPT_VERSION_MINOR;
12-
COPT.attr("VERSION_TECHNICAL") = COPT_VERSION_TECHNICAL;
65+
nb::module_ Attr = COPT.def_submodule("Attr");
66+
Attr.attr("BarrierIter") = "BarrierIter";
67+
Attr.attr("BestBnd") = "BestBnd";
68+
Attr.attr("BestGap") = "BestGap";
69+
Attr.attr("BestObj") = "BestObj";
70+
Attr.attr("Bins") = "Bins";
71+
Attr.attr("Cols") = "Cols";
72+
Attr.attr("Cones") = "Cones";
73+
Attr.attr("Elems") = "Elems";
74+
Attr.attr("FeasRelaxObj") = "FeasRelaxObj";
75+
Attr.attr("HasBasis") = "HasBasis";
76+
Attr.attr("HasDualFarkas") = "HasDualFarkas";
77+
Attr.attr("HasFeasRelaxSol") = "HasFeasRelaxSol";
78+
Attr.attr("HasIIS") = "HasIIS";
79+
Attr.attr("HasLpSol") = "HasLpSol";
80+
Attr.attr("HasMipSol") = "HasMipSol";
81+
Attr.attr("HasPrimalRay") = "HasPrimalRay";
82+
Attr.attr("HasPsdObj") = "HasPSDObj";
83+
Attr.attr("HasQObj") = "HasQObj";
84+
Attr.attr("IISCols") = "IISCols";
85+
Attr.attr("IISIndicators") = "IISIndicators";
86+
Attr.attr("IISRows") = "IISRows";
87+
Attr.attr("IISSOSs") = "IISSOSs";
88+
Attr.attr("Indicators") = "Indicators";
89+
Attr.attr("Ints") = "Ints";
90+
Attr.attr("IsMIP") = "IsMIP";
91+
Attr.attr("IsMinIIS") = "IsMinIIS";
92+
Attr.attr("LmiConstrs") = "LMIConstrs";
93+
Attr.attr("LpObjVal") = "LpObjVal";
94+
Attr.attr("LpStatus") = "LpStatus";
95+
Attr.attr("MipStatus") = "MipStatus";
96+
Attr.attr("NodeCnt") = "NodeCnt";
97+
Attr.attr("ObjConst") = "ObjConst";
98+
Attr.attr("ObjSense") = "ObjSense";
99+
Attr.attr("PoolSols") = "PoolSols";
100+
Attr.attr("PsdCols") = "PSDCols";
101+
Attr.attr("PsdConstrs") = "PSDConstrs";
102+
Attr.attr("PsdElems") = "PSDElems";
103+
Attr.attr("QConstrs") = "QConstrs";
104+
Attr.attr("QElems") = "QElems";
105+
Attr.attr("Rows") = "Rows";
106+
Attr.attr("SimplexIter") = "SimplexIter";
107+
Attr.attr("SolvingTime") = "SolvingTime";
108+
Attr.attr("Soss") = "Soss";
109+
Attr.attr("SymMats") = "SymMats";
110+
Attr.attr("TuneResults") = "TuneResults";
13111

14-
COPT.attr("MINIMIZE") = COPT_MINIMIZE;
15-
COPT.attr("MAXIMIZE") = COPT_MAXIMIZE;
112+
nb::module_ Param = COPT.def_submodule("Param");
113+
Param.attr("AbsGap") = "AbsGap";
114+
Param.attr("BarHomogeneous") = "BarHomogeneous";
115+
Param.attr("BarIterLimit") = "BarIterLimit";
116+
Param.attr("BarOrder") = "BarOrder";
117+
Param.attr("BarStart") = "BarStart";
118+
Param.attr("BarThreads") = "BarThreads";
119+
Param.attr("ConflictAnalysis") = "ConflictAnalysis";
120+
Param.attr("Crossover") = "Crossover";
121+
Param.attr("CrossoverThreads") = "CrossoverThreads";
122+
Param.attr("CutLevel") = "CutLevel";
123+
Param.attr("DivingHeurLevel") = "DivingHeurLevel";
124+
Param.attr("DualPerturb") = "DualPerturb";
125+
Param.attr("DualPrice") = "DualPrice";
126+
Param.attr("DualTol") = "DualTol";
127+
Param.attr("Dualize") = "Dualize";
128+
Param.attr("FAPHeurLevel") = "FAPHeurLevel";
129+
Param.attr("FeasRelaxMode") = "FeasRelaxMode";
130+
Param.attr("FeasTol") = "FeasTol";
131+
Param.attr("GPUDevice") = "GPUDevice";
132+
Param.attr("GPUMode") = "GPUMode";
133+
Param.attr("HeurLevel") = "HeurLevel";
134+
Param.attr("IISMethod") = "IISMethod";
135+
Param.attr("IntTol") = "IntTol";
136+
Param.attr("LazyConstraints") = "LazyConstraints";
137+
Param.attr("LogToConsole") = "LogToConsole";
138+
Param.attr("Logging") = "Logging";
139+
Param.attr("LpMethod") = "LpMethod";
140+
Param.attr("MatrixTol") = "MatrixTol";
141+
Param.attr("MipStartMode") = "MipStartMode";
142+
Param.attr("MipStartNodeLimit") = "MipStartNodeLimit";
143+
Param.attr("MipTasks") = "MipTasks";
144+
Param.attr("NodeCutRounds") = "NodeCutRounds";
145+
Param.attr("NodeLimit") = "NodeLimit";
146+
Param.attr("PDLPTol") = "PDLPTol";
147+
Param.attr("Presolve") = "Presolve";
148+
Param.attr("RelGap") = "RelGap";
149+
Param.attr("ReqFarkasRay") = "ReqFarkasRay";
150+
Param.attr("RootCutLevel") = "RootCutLevel";
151+
Param.attr("RootCutRounds") = "RootCutRounds";
152+
Param.attr("RoundingHeurLevel") = "RoundingHeurLevel";
153+
Param.attr("SDPMethod") = "SDPMethod";
154+
Param.attr("Scaling") = "Scaling";
155+
Param.attr("SimplexThreads") = "SimplexThreads";
156+
Param.attr("SolTimeLimit") = "SolTimeLimit";
157+
Param.attr("StrongBranching") = "StrongBranching";
158+
Param.attr("SubMipHeurLevel") = "SubMipHeurLevel";
159+
Param.attr("Threads") = "Threads";
160+
Param.attr("TimeLimit") = "TimeLimit";
161+
Param.attr("TreeCutLevel") = "TreeCutLevel";
162+
Param.attr("TuneMeasure") = "TuneMeasure";
163+
Param.attr("TuneMethod") = "TuneMethod";
164+
Param.attr("TuneMode") = "TuneMode";
165+
Param.attr("TuneOutputLevel") = "TuneOutputLevel";
166+
Param.attr("TunePermutes") = "TunePermutes";
167+
Param.attr("TuneTargetRelGap") = "TuneTargetRelGap";
168+
Param.attr("TuneTargetTime") = "TuneTargetTime";
169+
Param.attr("TuneTimeLimit") = "TuneTimeLimit";
16170

17-
COPT.attr("INFINITY") = COPT_INFINITY;
18-
COPT.attr("UNDEFINED") = COPT_UNDEFINED;
19-
20-
COPT.attr("LESS_EQUAL") = COPT_LESS_EQUAL;
21-
COPT.attr("GREATER_EQUAL") = COPT_GREATER_EQUAL;
22-
COPT.attr("EQUAL") = COPT_EQUAL;
23-
COPT.attr("FREE") = COPT_FREE;
24-
COPT.attr("RANGE") = COPT_RANGE;
25-
26-
COPT.attr("CONTINUOUS") = COPT_CONTINUOUS;
27-
COPT.attr("BINARY") = COPT_BINARY;
28-
COPT.attr("INTEGER") = COPT_INTEGER;
29-
30-
COPT.attr("SOS_TYPE1") = COPT_SOS_TYPE1;
31-
COPT.attr("SOS_TYPE2") = COPT_SOS_TYPE2;
32-
33-
COPT.attr("CONE_QUAD") = COPT_CONE_QUAD;
34-
COPT.attr("CONE_RQUAD") = COPT_CONE_RQUAD;
35-
36-
COPT.attr("BASIS_LOWER") = COPT_BASIS_LOWER;
37-
COPT.attr("BASIS_BASIC") = COPT_BASIS_BASIC;
38-
COPT.attr("BASIS_UPPER") = COPT_BASIS_UPPER;
39-
COPT.attr("BASIS_SUPERBASIC") = COPT_BASIS_SUPERBASIC;
40-
COPT.attr("BASIS_FIXED") = COPT_BASIS_FIXED;
41-
42-
COPT.attr("UNSTARTED") = COPT_MIPSTATUS_UNSTARTED;
43-
COPT.attr("OPTIMAL") = COPT_MIPSTATUS_OPTIMAL;
44-
COPT.attr("INFEASIBLE") = COPT_MIPSTATUS_INFEASIBLE;
45-
COPT.attr("UNBOUNDED") = COPT_MIPSTATUS_UNBOUNDED;
46-
COPT.attr("INF_OR_UNB") = COPT_MIPSTATUS_INF_OR_UNB;
47-
COPT.attr("NUMERICAL") = COPT_LPSTATUS_NUMERICAL;
48-
COPT.attr("NODELIMIT") = COPT_MIPSTATUS_NODELIMIT;
49-
COPT.attr("TIMEOUT") = COPT_MIPSTATUS_TIMEOUT;
50-
COPT.attr("UNFINISHED") = COPT_MIPSTATUS_UNFINISHED;
51-
COPT.attr("IMPRECISE") = COPT_LPSTATUS_IMPRECISE;
52-
COPT.attr("INTERRUPTED") = COPT_MIPSTATUS_INTERRUPTED;
53-
54-
COPT.attr("CBCONTEXT_INCUMBENT") = COPT_CBCONTEXT_INCUMBENT;
55-
COPT.attr("CBCONTEXT_MIPRELAX") = COPT_CBCONTEXT_MIPRELAX;
56-
COPT.attr("CBCONTEXT_MIPSOL") = COPT_CBCONTEXT_MIPSOL;
57-
COPT.attr("CBCONTEXT_MIPNODE") = COPT_CBCONTEXT_MIPNODE;
171+
nb::module_ Info = COPT.def_submodule("Info");
172+
Info.attr("Dual") = "Dual";
173+
Info.attr("DualFarkas") = "DualFarkas";
174+
Info.attr("LB") = "LB";
175+
Info.attr("Obj") = "Obj";
176+
Info.attr("PrimalRay") = "PrimalRay";
177+
Info.attr("RedCost") = "RedCost";
178+
Info.attr("RelaxLB") = "RelaxLB";
179+
Info.attr("RelaxUB") = "RelaxUB";
180+
Info.attr("RelaxValue") = "RelaxValue";
181+
Info.attr("Slack") = "Slack";
182+
Info.attr("UB") = "UB";
183+
Info.attr("Value") = "Value";
58184

59185
nb::module_ CbInfo = COPT.def_submodule("CbInfo");
60-
61-
CbInfo.attr(COPT_CBINFO_BESTOBJ) = COPT_CBINFO_BESTOBJ;
62-
CbInfo.attr(COPT_CBINFO_BESTBND) = COPT_CBINFO_BESTBND;
63-
CbInfo.attr(COPT_CBINFO_HASINCUMBENT) = COPT_CBINFO_HASINCUMBENT;
64-
CbInfo.attr(COPT_CBINFO_INCUMBENT) = COPT_CBINFO_INCUMBENT;
65-
CbInfo.attr(COPT_CBINFO_MIPCANDIDATE) = COPT_CBINFO_MIPCANDIDATE;
66-
CbInfo.attr(COPT_CBINFO_MIPCANDOBJ) = COPT_CBINFO_MIPCANDOBJ;
67-
CbInfo.attr(COPT_CBINFO_RELAXSOLUTION) = COPT_CBINFO_RELAXSOLUTION;
68-
CbInfo.attr(COPT_CBINFO_RELAXSOLOBJ) = COPT_CBINFO_RELAXSOLOBJ;
69-
CbInfo.attr(COPT_CBINFO_NODESTATUS) = COPT_CBINFO_NODESTATUS;
186+
CbInfo.attr("BestBnd") = "BestBnd";
187+
CbInfo.attr("BestObj") = "BestObj";
188+
CbInfo.attr("HasIncumbent") = "HasIncumbent";
189+
CbInfo.attr("Incumbent") = "Incumbent";
190+
CbInfo.attr("MipCandObj") = "MipCandObj";
191+
CbInfo.attr("MipCandidate") = "MipCandidate";
192+
CbInfo.attr("NodeStatus") = "NodeStatus";
193+
CbInfo.attr("RelaxSolObj") = "RelaxSolObj";
194+
CbInfo.attr("RelaxSolution") = "RelaxSolution";
70195
}

0 commit comments

Comments
 (0)