Hi,
let's go on with the example from https://www.linkedin.com/pulse/what-optimization-how-can-help-you-do-more-less-zoo-buses-fleischer/
At https://www.ibm.com/developerworks/community/forums/html/topic?id=1aef661d-596b-4dca-964c-8c3917ded017&ps=25
we saw how we can ask cplex not a solution but many with docplex. (MIP)
Now let's see how we can do the same with CPOptimizer (Constraint Programming)
from docplex.cp.model import CpoModel
mdl = CpoModel(name='buses')
nbbus40 = mdl.integer_var(0,6,name='nbBus40')
nbbus30 = mdl.integer_var(0,6,name='nbBus30')
cost= mdl.integer_var(0,1000000,name='cost')
mdl.add(cost==nbbus40*500 + nbbus30*400)
mdl.add(cost<=4000)
mdl.add(nbbus40*40 + nbbus30*30 >= 300)
siter = mdl.start_search(SearchType='DepthFirst', Workers=1, TimeLimit=100)
# Parameters needed to avoid duplicate solutions
from pandas import *
dfsol=pandas.DataFrame()
for msol in siter:
print(msol[nbbus40]," buses 40 seats")
print(msol[nbbus30]," buses 30 seats")
print("cost = ",msol[cost])
dfsol=concat([dfsol,DataFrame([msol[nbbus40],msol[nbbus30],msol[cost]])],axis=1)
print("\n")
dfsol.columns=["nbBus40","nbBus30","cost"]
print(dfsol)
gives
nbBus40 nbBus30 cost
0 3 4 6
1 6 5 2
2 3900 4000 3800
NB:
And many other examples at https://www.linkedin.com/pulse/making-optimization-simple-python-alex-fleischer/
#CPOptimizer#DecisionOptimization