[Scip] scip and zimpl

Tobias Achterberg achterberg at zib.de
Wed Jun 11 15:08:40 MEST 2008


Hi Bahador,

> Q1- Why does not zimpl create binary variables when output format is the 
> lp format?
> 
> I have following variable in test.zpl file:
> 
> X [F * F] binary;
> 
> after creating the test.lp file (zimpl -O test.zpl), I tried to solve 
> the problem using scip. The output message from scip indicates that 
> there is not any binary variable. After presolving, all the variables 
> are converted to binary variables.
> 
> I tried the mps output format (zimpl -O -t mps test.zpl). In this case 
> the original problem has binary variables and presolving consumes less 
> time than previous case.

Although it is possible to add a BINARY section to .lp files, zimpl just puts all integer 
and binary variables to the GENERALS section. This is no harm, since binary variables and 
integer variables with bounds 0 <= x <= 1 are identical.

SCIP reads the GENERALS variables and assigns a type "INTEGER" to them. In presolving, it 
detects that these are integers with bounds 0 <= x <= 1 and converts them into binaries. 
It is, however, unclear to me why this consumes any noticeable time. It would be nice if 
you can send us the test.zpl file.


> Q2-  I ask this question because I am not an expert in Integer 
> programming. I saw many times in output message from scip that there are 
> non-integral values in the "dual sol" column. How is it possible to have 
> a non-integral dual ''intermediate solution'' (before finding the 
> optimal solution) for MIP problem?

The "dualbound" column of the SCIP output shows you the proven dual bound of your problem 
instance. If you have a minimization problem, the dual bound gives a lower bound on the 
optimal objective value.

The global dual bound (which is shown in the "dualbound" column) is the worst (i.e., 
smallest in case of minimization) of the dual bounds of all remaining open leaf nodes in 
the search tree. The dual bounds in the leaves are calculated by solving an LP relaxation. 
And because integrality is relaxed in the LPs, the objective value can be fractional. 
Hence, the "dualbound" can also be fractional.

If you have a pure IP (all variables integer), and if your objective coefficients are 
integral numbers, then of course every feasible solution will have an integral objective 
value. Therefore, you can always round up (in case of minimization) the "dualbound". SCIP 
does not do this in the output (and also not internally) because even the changes in the 
fractional part of the objective value provide valueable information. For example, if you 
see dual bounds that evolve like this:

13.0405
13.0891
13.1321
13.2342
13.3874
13.4923

then you can see that there is some progress. If SCIP would just print

14.0000
14.0000
14.0000
14.0000
14.0000
14.0000

you cannot see whether the optimization is stuck or whether something happens.



Best, Tobias



More information about the Scip mailing list