[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-glpk] Converting solutions between CPlex and GLPK

From: Timon ter Braak
Subject: [Help-glpk] Converting solutions between CPlex and GLPK
Date: Thu, 01 Sep 2011 00:27:29 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:6.0) Gecko/20110812 Thunderbird/6.0

I have a hard mixed integer problem. Due to the size of the problem, I like to specify it using Mathprog. But I have CPlex to do the number crunching, leading to the following setup:

1) Use GLPK to output the problem into LP format
2) Use CPlex to solve the problem
3) Use conversion script to translate the CPlex XML solution file into
   a GLPK solution file format
4) Use GLPK to 'solve' the problem with a precomputed (by CPlex)
   solution, and use the nice Mathprog features again.

The problem is step 3. I though I had cooked up something, but GLPK is complaining. The following is the case.

CPlex gives a list of constraints and variable values. The number of constraints is however 1 short of the amount of rows GLPK expects. The number of variables corresponds precisely with the amount of columns GLPK expects. When I add an extra line (i.e. a '0') to the converted solution file, then the whole setup works, but at times the 'solution'
becomes inconsistent.

Note that currently I am only looking at mixed integer problems (mip).
In the GLPK source code 'glp_read_mip' and 'glp_write_mip' are of interest.

What am I missing in mapping the CPlex output to the GLPK solution format?

Best regards,




*  The file created by the routine glp_write_sol is a plain text file,
*  which contains the following information:
*     m n
*     stat obj_val
*     r_val[1]
*     . . .
*     r_val[m]
*     c_val[1]
*     . . .
*     c_val[n]
*  where:
*  m is the number of rows (auxiliary variables);
*  n is the number of columns (structural variables);
*  stat is the solution status (GLP_UNDEF = 1, GLP_FEAS = 2,
*     GLP_NOFEAS = 4, or GLP_OPT = 5);
*  obj_val is the objective value;
*  r_val[i], i = 1,...,m, is the value of i-th row;
*  c_val[j], j = 1,...,n, is the value of j-th column. */

reply via email to

[Prev in Thread] Current Thread [Next in Thread]