I am developing a bidding VRP model using DOCPLEX. In my code, I have defined the expressions: term1, term2, term3, term4, and term5. After solving the model, how can I obtain the values of these terms?
Specifically, how can I retrieve the value of term4 with the function ‘Type of next’?
Here is my code
from docplex.cp.model import CpoModel
from docplex.cp.modeler import *
import func
# Example data
NberExistConstract = func.readexcel1D("input.xlsx", "NberExistConstract")
NberNewConstract = func.readexcel1D("input.xlsx", "NberNewConstract")
NbBid = func.readexcel1D("input.xlsx", "NbBid")
NbTask = func.readexcel1D("input.xlsx", "NbTask")
NbVehicle = func.readexcel1D("input.xlsx", "NbVehicle")
K = range(1, NberExistConstract + NberNewConstract + 1)
KE = range(1, NberExistConstract + 1)
KN = range(NberExistConstract + 1, NberExistConstract + NberNewConstract + 1)
B = range(1, NbBid + 1)
T = range(1, NbVehicle + 1)
V = range(0, NbTask + 2)
Vn = range(1, NbTask + 1)
print(min(KN))
# Cost and revenue
fixcost = func.readexcel1D("input.xlsx", "fixcost")
pke = func.readexcel1D("input.xlsx", "pke")
pkn = func.readexcel1D("input.xlsx", "pkn")
stdpkn = func.readexcel1D("input.xlsx", "stdpkn")
unittaskcost = func.readexcel1D("input.xlsx", "unittaskcost")
unittransitcost = func.readexcel2D("input.xlsx", "unittransitcost")
# Parameters
zalpha = func.readexcel1D("input.xlsx", "zalpha")
time_matrix = func.readexcel2D("input.xlsx", "time")
Tmax = func.readexcel1D("input.xlsx", "Tmax")
tasktimesize = func.readexcel1D("input.xlsx", "tasktimesize")
# Create model
model = CpoModel()
# Define interval variables
xtime = [model.interval_var(optional=True, size=tasktimesize[i-1], end=[0, Tmax], name=f'xtime_{i}') for i in Vn]
assign_xtime = [[model.interval_var(optional=True, end=[0, Tmax], name=f'assign_xtime_{i}_{t}') for t in T] for i in V]
# Define sequence variables
route_time = [model.sequence_var([assign_xtime[i][t-1] for i in V], types=[i for i in V], name=f'route_time_{t}') for t in T]
# Define truck_time interval variables
truck_time = [model.interval_var(optional=True, name=f'truck_time_{t}') for t in T]
# Define boolean and integer variables
z = [[model.binary_var(name=f'z_{k}_{b}')for b in B ] for k in KN]
w = [model.binary_var(name=f'w_{b}') for b in B]
C = [model.integer_var(min=0, name=f'C_{b}') for b in B]
# Define the objective function
term1 = sum(pke[k-1] for k in KE)
term2 = sum(C[b-1] for b in B)
term3 = sum(unittaskcost[i-1] * model.presence_of(xtime[i-1]) for i in Vn)
term4 = sum(element(unittransitcost[i],model.type_of_next(route_time[t-1], assign_xtime[i][t-1], NbTask+1, 0))
for i in Vn for t in T)
term5 = sum(fixcost * model.presence_of(truck_time[t-1]) for t in T)
.......
FULL CODE in link: https://drive.google.com/drive/folders/1-Fnk0QkBV5_PF1EsPNA6VZSz4XDd37Ir?usp=sharing
Thanks
I am reading: https://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.solution.py.html?highlight=solution#module-docplex.cp.solution