Saving the Solution path in regular time intervals

Dear Users,

I would like to generate a report which shows me what solution was
found after say every 10 seconds, in order to generate a graph which
depicts the path a solver took to reach a solution.

In the Logfile, I can see what his current best solution is, but I
cannot control the interval at which it logs the time. Currently for
CPLEX, I have found that the timestamp is shown in seconds after every
twenty entries. For SBB I’ve found this entry to be at similar, but
not in time dependant intervals.

Is it possible to change the logfile properties to write a report on a
time basis instead of (for the case of a SBB.opt file to define a
“loginterval” on time instead of nodes)? For example, instead of
loginterval reporting the solution found in each 100 nodes, to instead
report every 100 seconds?

Should this not be possible, do you have any ideas how I can force the
solver to spit out the current solution (and perhaps the current best
bound) in regular, predefined time intervals? It doesnt matter if its
CPU time, or walltime, just something that is comparable inbetween
models and solvers.

Any ideas would be greatly appreciated.

The models I am solving are of the MINLP (The objective is Nonlinear)
class and the approximations are solved as LP’s, using SBB(+CONOPT)
and CPLEX.

Short excerpt of the “worst” model:
objlogfix … KNLINFIX =e= sum((n,t),
nodes(n,‘FUNCA’)yNLINFIX(n,t) + nodes(n,‘FUNCB’)(sum(j,
xNLINFIX(j,n,t)*jobs(j,‘CPU’))/
nodes(n,‘CPUAVAIL’))**nodes(n,‘FUNCC’)) ;
fullallocationNLINFIX(j,t) … sum(n, xNLINFIX(j,n,t)) =e=
feasj(j,t) ;
cpusupplylimitNLINFIX(n,t) … sum(j,
xNLINFIX(j,n,t)*jobs(j,‘CPU’)) =l= nodes(n,‘CPUAVAIL’) ;
memsupplylimitNLINFIX(n,t) … sum(j,
xNLINFIX(j,n,t)*jobs(j,‘MEM’)) =l= nodes(n,‘MEMAVAIL’) ;
yinitNLINFIX(n,t) … yNLINFIX(n,t) =g= sum(j,
xNLINFIX(j,n,t))/200;

Model AMANDA_NLIN_FIX /
objlogfix,fullallocationNLINFIX,cpusupplylimitNLINFIX,memsupplylimitNLINFIX,yinitNLINFIX / ;
AMANDA_NLIN_FIX.nodlim=999999999;
AMANDA_NLIN_FIX.optfile=1;
Solve AMANDA_NLIN_FIX using minlp minimizing KNLINFIX;



Regards,
Christian

\

Christian,

the GAMS/Cplex and GAMS/SBB options "miptrace ",
“miptracenode n”, and “miptracetime d” will create a comma delimited
file with the progress of incumbent and best bound for time and/or
node intervals. The file you get is pretty much selfexplenatory.

Hope this helps,
Michael Bussieck - GAMSWorld Coordinator

On Sep 7, 12:13 pm, Bodenstein
wrote:

Dear Users,

I would like to generate a report which shows me what solution was
found after say every 10 seconds, in order to generate a graph which
depicts the path a solver took to reach a solution.

In the Logfile, I can see what his current best solution is, but I
cannot control the interval at which it logs the time. Currently for
CPLEX, I have found that the timestamp is shown in seconds after every
twenty entries. For SBB I’ve found this entry to be at similar, but
not in time dependant intervals.

Is it possible to change the logfile properties to write a report on a
time basis instead of (for the case of a SBB.opt file to define a
“loginterval” on time instead of nodes)? For example, instead of
loginterval reporting the solution found in each 100 nodes, to instead
report every 100 seconds?

Should this not be possible, do you have any ideas how I can force the
solver to spit out the current solution (and perhaps the current best
bound) in regular, predefined time intervals? It doesnt matter if its
CPU time, or walltime, just something that is comparable inbetween
models and solvers.

Any ideas would be greatly appreciated.

The models I am solving are of the MINLP (The objective is Nonlinear)
class and the approximations are solved as LP’s, using SBB(+CONOPT)
and CPLEX.

Short excerpt of the “worst” model:
objlogfix … KNLINFIX =e= sum((n,t),
nodes(n,‘FUNCA’)yNLINFIX(n,t) + nodes(n,‘FUNCB’)(sum(j,
xNLINFIX(j,n,t)*jobs(j,‘CPU’))/
nodes(n,‘CPUAVAIL’))**nodes(n,‘FUNCC’)) ;
fullallocationNLINFIX(j,t) … sum(n, xNLINFIX(j,n,t)) =e=
feasj(j,t) ;
cpusupplylimitNLINFIX(n,t) … sum(j,
xNLINFIX(j,n,t)*jobs(j,‘CPU’)) =l= nodes(n,‘CPUAVAIL’) ;
memsupplylimitNLINFIX(n,t) … sum(j,
xNLINFIX(j,n,t)*jobs(j,‘MEM’)) =l= nodes(n,‘MEMAVAIL’) ;
yinitNLINFIX(n,t) … yNLINFIX(n,t) =g= sum(j,
xNLINFIX(j,n,t))/200;

Model AMANDA_NLIN_FIX /
objlogfix,fullallocationNLINFIX,cpusupplylimitNLINFIX,memsupplylimitNLINFIX,yinitNLINFIX / ;
AMANDA_NLIN_FIX.nodlim=999999999;
AMANDA_NLIN_FIX.optfile=1;
Solve AMANDA_NLIN_FIX using minlp minimizing KNLINFIX;

Regards,
Christian

\

Dear Michael,

Thanks a bunch! Often solving our problems is merely to identify the
right keyword to our success. I can take it from here.

Regards
Christian

On 8 Sep., 14:36, Gamsworld Admin wrote:

Christian,

the GAMS/Cplex and GAMS/SBB options "miptrace ",
“miptracenode n”, and “miptracetime d” will create a comma delimited
file with the progress of incumbent and best bound for time and/or
node intervals. The file you get is pretty much selfexplenatory.

Hope this helps,
Michael Bussieck - GAMSWorld Coordinator

On Sep 7, 12:13 pm, Bodenstein
wrote:

Dear Users,

I would like to generate a report which shows me what solution was
found after say every 10 seconds, in order to generate a graph which
depicts the path a solver took to reach a solution.

In the Logfile, I can see what his current best solution is, but I
cannot control the interval at which it logs the time. Currently for
CPLEX, I have found that the timestamp is shown in seconds after every
twenty entries. For SBB I’ve found this entry to be at similar, but
not in time dependant intervals.

Is it possible to change the logfile properties to write a report on a
time basis instead of (for the case of a SBB.opt file to define a
“loginterval” on time instead of nodes)? For example, instead of
loginterval reporting the solution found in each 100 nodes, to instead
report every 100 seconds?

Should this not be possible, do you have any ideas how I can force the
solver to spit out the current solution (and perhaps the current best
bound) in regular, predefined time intervals? It doesnt matter if its
CPU time, or walltime, just something that is comparable inbetween
models and solvers.

Any ideas would be greatly appreciated.

The models I am solving are of the MINLP (The objective is Nonlinear)
class and the approximations are solved as LP’s, using SBB(+CONOPT)
and CPLEX.

Short excerpt of the “worst” model:
objlogfix … KNLINFIX =e= sum((n,t),
nodes(n,‘FUNCA’)yNLINFIX(n,t) + nodes(n,‘FUNCB’)(sum(j,
xNLINFIX(j,n,t)*jobs(j,‘CPU’))/
nodes(n,‘CPUAVAIL’))**nodes(n,‘FUNCC’)) ;
fullallocationNLINFIX(j,t) … sum(n, xNLINFIX(j,n,t)) =e=
feasj(j,t) ;
cpusupplylimitNLINFIX(n,t) … sum(j,
xNLINFIX(j,n,t)*jobs(j,‘CPU’)) =l= nodes(n,‘CPUAVAIL’) ;
memsupplylimitNLINFIX(n,t) … sum(j,
xNLINFIX(j,n,t)*jobs(j,‘MEM’)) =l= nodes(n,‘MEMAVAIL’) ;
yinitNLINFIX(n,t) … yNLINFIX(n,t) =g= sum(j,
xNLINFIX(j,n,t))/200;

Model AMANDA_NLIN_FIX /
objlogfix,fullallocationNLINFIX,cpusupplylimitNLINFIX,memsupplylimitNLINFIX,yinitNLINFIX / ;
AMANDA_NLIN_FIX.nodlim=999999999;
AMANDA_NLIN_FIX.optfile=1;
Solve AMANDA_NLIN_FIX using minlp minimizing KNLINFIX;

Regards,
Christian

\