I try to use PuLP to solve route optimization problem but it took around 1 hour to finish. I also monitor resources and it seems to use only 1 processor. Is it possible to do a multi-thread or multi-processor? or is there anyway to improve an efficiency?
Here is some source code.
Variables & Objective function
# DECISION VARIABLE X
x_vars = LpVariable.dicts("route",[(i,j,k) for i in job_id for j in job_id for k in truck_id],lowBound=0,upBound=1,cat=LpBinary)
# DECISION VARIABLE Y
y_vars = LpVariable.dicts("work",[(j,k) for j in job_id for k in truck_id],lowBound=0,upBound=1,cat=LpBinary)
# OBJECTIVE FUNCTION
opt_model += lpSum(x_vars[(i,j,k)]*travel_cost[i+'-'+j+'-'+k] for i in job_id for j in job_id for k in truck_id)
Constrains
#CONSTRAINTS x[i,j,k] = 0 for all i!=k & j!=k
for k in truck_id:
opt_model += lpSum(x_vars[(i,j,k)] for j in job_id for i in yard_id if i!=truck_yard[k]) == 0
#CONSTRAINTS
#2
t2 = time.time()
print(t2 - t1)
for j in job_id:
for k in truck_id:
opt_model += lpSum(x_vars[(i,j,k)] for i in job_id) == y_vars[(j,k)]
Solver
Solver_name = 'PULP_CBC_CMD'
solver = pl.getSolver(Solver_name)
results = opt_model.solve(solver)