[Scip] Interpretation of solution file from SCIP: missing variables and

Stefan Vigerske stefan at math.hu-berlin.de
Thu Feb 27 11:18:26 CET 2014


Hi,

On 02/27/2014 01:40 AM, Ramón Casero Cañas wrote:
> Dear all,
>
> So thanks to your help and the documentation, I have been able to
> write my problem to a PIP file, call the SCIP binary from Matlab
> (scip-3.0.2.linux.x86_64.gnu.opt.spx), solve the problem until it
> finds 1 valid solution, write the solution to a file, and read it back
> into Matlab.
>
> I have variables
>
> x1
> y1
> z1
> ...
> x4574
> y4574
> z4574
>
> both in the objective function and constraints.
>
> SCIP runs for a while, finds a solution, and writes its to a file. It
> seems that I have variables missing in the solution
>
> solution status: solution limit reached
> objective value:                    -760.711552889581
> x1                                   0.44337718267988   (obj:0)
> y1                                  -1.11537963003733   (obj:0)
> z1                                  0.640066367478129   (obj:0)
> x2                                  0.635593926577552   (obj:0)
> y2                                  0.405953492189133   (obj:0)
> z2                                   1.13206100660573   (obj:0)
> ...
> x20                                 0.225420591151844   (obj:0)
> y20                                  1.33025644597009   (obj:0)
> z20                                  0.17304145468582   (obj:0)
> y21                                  1.09858400598118   (obj:0)
> x22                                 0.042773405539517   (obj:0)
> y22                                  1.05348001958397   (obj:0)
> y23                                 0.715794911501469   (obj:0)
> ...
>
> Note how e.g. x21, z21 and z22 are missing here (and they are not
> elsewhere in the file either). Is this expected behaviour?

Only the variables with nonzero value in the solution are printed.

> In addition, the solutions file has at the end lines like:
>
> quadobjvar                          -760.711552889581   (obj:1)
> nlreform0                           0.820888812661168   (obj:0)
> nlreform1                           0.777248902182625   (obj:0)
> nlreform2                          -0.189610104867685   (obj:0)
> nlreform3                         -0.0728986988897996   (obj:0)
> ...
>
> What are those for? I did an online search, but could only find where
> nlreform is coded in SCIP, not what it means.

Well, the code is the explanation for their meaning ;-).

The nlreform variables are added during presolve when the problem is 
reformulated. These reformulations introduce a number of auxiliary 
variables (nlreform0, nlreform1, ...), which are required to setup a 
linear relaxation of your problem.
There is currently no way to suppress printing the values of these 
variables.

The quadobjvar variables is added by the PIP reader in SCIP to represent 
your quadratic objective function. As SCIP supports only linear 
objective functions, it moves a nonlinear objective function f(x) into a 
constraint f(x) <= z (in case of minimization), and then uses 1*z as 
objective function.

Hope that helps,
Stefan

>
> Best regards,
>
> Ramon.
>



More information about the Scip mailing list