forked from scipopt/PySCIPOpt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
benderscut.pxi
77 lines (64 loc) · 2.68 KB
/
benderscut.pxi
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
##@file benderscut.pxi
#@brief Base class of the Benderscut Plugin
cdef class Benderscut:
cdef public Model model
cdef public Benders benders
cdef public str name
def benderscutfree(self):
pass
def benderscutinit(self):
pass
def benderscutexit(self):
pass
def benderscutinitsol(self):
pass
def benderscutexitsol(self):
pass
def benderscutexec(self, solution, probnumber, enfotype):
print("python error in benderscutexec: this method needs to be implemented")
return {}
cdef SCIP_RETCODE PyBenderscutCopy (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut):
return SCIP_OKAY
cdef SCIP_RETCODE PyBenderscutFree (SCIP* scip, SCIP_BENDERSCUT* benderscut):
cdef SCIP_BENDERSCUTDATA* benderscutdata
benderscutdata = SCIPbenderscutGetData(benderscut)
PyBenderscut = <Benderscut>benderscutdata
PyBenderscut.benderscutfree()
Py_DECREF(PyBenderscut)
return SCIP_OKAY
cdef SCIP_RETCODE PyBenderscutInit (SCIP* scip, SCIP_BENDERSCUT* benderscut):
cdef SCIP_BENDERSCUTDATA* benderscutdata
benderscutdata = SCIPbenderscutGetData(benderscut)
PyBenderscut = <Benderscut>benderscutdata
PyBenderscut.benderscutinit()
return SCIP_OKAY
cdef SCIP_RETCODE PyBenderscutExit (SCIP* scip, SCIP_BENDERSCUT* benderscut):
cdef SCIP_BENDERSCUTDATA* benderscutdata
benderscutdata = SCIPbenderscutGetData(benderscut)
PyBenderscut = <Benderscut>benderscutdata
PyBenderscut.benderscutexit()
return SCIP_OKAY
cdef SCIP_RETCODE PyBenderscutInitsol (SCIP* scip, SCIP_BENDERSCUT* benderscut):
cdef SCIP_BENDERSCUTDATA* benderscutdata
benderscutdata = SCIPbenderscutGetData(benderscut)
PyBenderscut = <Benderscut>benderscutdata
PyBenderscut.benderscutinitsol()
return SCIP_OKAY
cdef SCIP_RETCODE PyBenderscutExitsol (SCIP* scip, SCIP_BENDERSCUT* benderscut):
cdef SCIP_BENDERSCUTDATA* benderscutdata
benderscutdata = SCIPbenderscutGetData(benderscut)
PyBenderscut = <Benderscut>benderscutdata
PyBenderscut.benderscutexitsol()
return SCIP_OKAY
cdef SCIP_RETCODE PyBenderscutExec (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut, SCIP_SOL* sol, int probnumber, SCIP_BENDERSENFOTYPE type, SCIP_RESULT* result):
cdef SCIP_BENDERSCUTDATA* benderscutdata
benderscutdata = SCIPbenderscutGetData(benderscut)
PyBenderscut = <Benderscut>benderscutdata
if sol == NULL:
solution = None
else:
solution = Solution.create(scip, sol)
enfotype = type
result_dict = PyBenderscut.benderscutexec(solution, probnumber, enfotype)
result[0] = result_dict.get("result", <SCIP_RESULT>result[0])
return SCIP_OKAY