spoorendonk on master
vrptw time before demand (compare)
spoorendonk on master
format (compare)
spoorendonk on use-knapsack
spoorendonk on master
knapsack less output num customers from arg and 5 more (compare)
spoorendonk on use-knapsack
update knapsack value (compare)
spoorendonk on use-knapsack
spoorendonk on use-knapsack
workflow (compare)
spoorendonk on use-knapsack
knapsack less output num customers from arg and 2 more (compare)
spoorendonk on master
remove an optimize (compare)
spoorendonk on use-knapsack
update workflow (compare)
type="I"
is maybe not super clear
I also added the strong constraints to the model. The next step would be to se if we can add them dynamically with some sort of callback =)
working on it, got could up in some multi threading for solving subproblems in parallel
but ok, yeah, whenever I could be of any help, you just say so =)
I don't know how much time you have on your hands? And what kind of help you would find interesting?
Setting up models to expose stuff that does/doesn't work helps me a lot - like the ttfcmcf. In that direction I am locking into https://github.com/GregorCH/ipet to thoroughly test and track running times.
It could also go deeper into the c++ if you feel really confident!
in digging in my well documented codebase...
def callback(cb: CallbackModel, where: Where):
if where == Where.PathMipCuts:
relax = cb.relaxation
for y in y_vars:
e = (arcs[y.id].start, arcs[y.id].end)
xEdges = [x for k in range(k) for x in x_vars[k] if x.edge = e]
xksum = sum([relax[x.id] for x in xEdges])
if xksum > relax[y.id]:
cb.addCut(xsum([ 1*x for x in xEdges]) <= y)
tt_r18.1_12.csv
objval: 372254.0000000172
real 1m14.640s
user 15m30.381s
sys 0m10.323s
with and without cuts in 06 example
Alps0208I Search completed.
Alps0261I Best solution found had quality 250351 and was found at depth 32
Alps0265I Number of nodes fully processed: 20
Alps0266I Number of nodes partially processed: 15
Alps0267I Number of nodes branched: 17
Alps0268I Number of nodes pruned before processing: 0
Alps0270I Number of nodes left: 0
Alps0272I Tree depth: 7
Alps0274I Search CPU time: 143.07 seconds
Alps0278I Search wall-clock time: 83.62 seconds
================ DECOMP Statistics [BEGIN]: ===============
Total Decomp = 83.60 100.00 35 3.51
Total Solve Relax = 0.00 0.00 0 0.00
Total Solve Relax App = 0.00 0.00 0 0.00
Total Solution Update = 0.79 0.94 109 0.05
Total Generate Cuts = 72.43 86.63 48 1.59
Total Generate Vars = 6.59 7.88 82 0.10
Total Compress Cols = 0.04 0.05 14 0.01
================ DECOMP Statistics [END ]: ===============
Node 32 process stopping on bound. This LB= 250366 Global UB= 250351.
Alps0208I Search completed.
Alps0261I Best solution found had quality 250351 and was found at depth 30
Alps0265I Number of nodes fully processed: 18
Alps0266I Number of nodes partially processed: 15
Alps0267I Number of nodes branched: 16
Alps0268I Number of nodes pruned before processing: 0
Alps0270I Number of nodes left: 0
Alps0272I Tree depth: 7
Alps0274I Search CPU time: 48.34 seconds
Alps0278I Search wall-clock time: 3.56 seconds
================ DECOMP Statistics [BEGIN]: ===============
Total Decomp = 3.54 100.00 33 0.31
Total Solve Relax = 0.00 0.00 0 0.00
Total Solve Relax App = 0.00 0.00 0 0.00
Total Solution Update = 0.86 24.17 134 0.05
Total Generate Cuts = 0.00 0.00 49 0.00
Total Generate Vars = 0.66 18.52 97 0.01
Total Compress Cols = 0.06 1.70 21 0.00
================ DECOMP Statistics [END ]: ===============