How to execute a warm start using GAMS/Cplex

Problems with modeling
Post Reply
abb.omidi
User
User
Posts: 39
Joined: 6 years ago

How to execute a warm start using GAMS/Cplex

Post by abb.omidi »

Dear community team,

I have tried to solve a scheduling model. I would like to use a warm start to solve my problem because The model takes much time to solve optimally even for a small set of given data. The model statistic and what I'm looking for are as follows.
The original model, a small instance, is solved in 2 minutes. Its objective function value is 5966.

Code: Select all

MODEL STATISTICS

BLOCKS OF EQUATIONS           4     SINGLE EQUATIONS          101
BLOCKS OF VARIABLES           3     SINGLE VARIABLES           56  10 projected
NON ZERO ELEMENTS           291     DISCRETE VARIABLES         45
I'm using the following two different methods to implement a warm start.
1- Determine a basic feasible solution and feed them into the model.
2- Using GAP control to achieve a sub-optimal solution and then feeding into the model.

In the first choice, I'm using the below options:

Code: Select all

* warm start
Free variable dummy;
Equation e0; e0.. dummy =e= 0;
Model schedule_warm / e0, e2, e3, e4 /;
schedule_warm.cutoff= 25000;
Options solvelink= 5, mip=cplex, optcr= 0.00, optca= 0.00, threads= 4;
Solve schedule_warm using mip minimize dummy;
c.up(j)= c.l(j);
y.up(j,k)= y.l(j,k);

$onecho > cplex.opt
mipstart 1
$offecho
schedule_warm.optfile=1;

* solve original
Model schedule_cold / e1, e2, e3, e4 /;
Options solvelink= 5, mip=cplex, optcr= 0.00, optca= 0.00, threads= 4;
Solve schedule_cold using mip minimize object;
In this case, the model is solved quickly (less than 1 second) and the objective function value is 6737.

In the second case, I adjusted the GAP in 0.20 and solved the model.

Code: Select all

* using gap control
Model schedule_gap / e1, e2, e3, e4 /;
schedule_gap.cutoff= 25000;
Options solvelink= 5, mip=cplex, optcr= 0.20, optca= 0.20, threads= 4;
Solve schedule_gap using mip minimize object;
c.up(j)= c.l(j);
y.up(j,k)= y.l(j,k);

$onecho > cplex.opt
mipstart 1
$offecho
schedule_gap.optfile=1;
$offtext

* solve original
Model schedule_cold / e1, e2, e3, e4 /;
Options solvelink= 5, mip=cplex, optcr= 0.00, optca= 0.00, threads= 4;
Solve schedule_cold using mip minimize object;
In this case, the model is solved in 12 seconds and the objective function value is 5966.

Code: Select all

MODEL STATISTICS

BLOCKS OF EQUATIONS           4     SINGLE EQUATIONS          101
BLOCKS OF VARIABLES           3     SINGLE VARIABLES           56
NON ZERO ELEMENTS           291     DISCRETE VARIABLES         20
According to the above comments, I was wondering if:
1) Is my approach suitable to use a warm start into the model?
2) What does "MIPSTART 1" mean? (when I remove it, the result is the same)
3) Is there any way to improve the objective function value of 6737?
4) Are there any specific ways to execute a warm start using GAMS/Cplex?

Regards
Omidi. A
Post Reply