Re: [Fwd: What is this format?]

Domingo Alvarez Duarte <[email protected]> Tue, 26 Jan 2021 13:33:39 +0100
Newsgroups gmane.comp.gnu.glpk
Message-ID <[email protected]>
It seems to be a cplex OPL format.

After manually convert it to GMPL (see bellow) I'm getting a segfault 
with ubuntu 18.04 glpk distribution:

====

glpsol -m cplex2mpl.mod
GLPSOL: GLPK LP/MIP Solver, v4.65
Parameter(s) specified in the command line:
  -m cplex2mpl.mod
Reading model section from cplex2mpl.mod...
Reading data section from cplex2mpl.mod...
73 lines were read
Generating result...
Generating cstTemps...
Generating cstPlanches...
Model has been successfully generated
GLPK Integer Optimizer, v4.65
3 rows, 5 columns, 15 non-zeros
5 integer variables, none of which are binary
Preprocessing...
1 row, 0 columns, 0 non-zeros
0 integer variables, none of which are binary
Scaling...
  A: min|aij| =  1.000e+00  max|aij| =  1.000e+00  ratio = 1.000e+00
Problem data seem to be well scaled
Solving LP relaxation...
GLPK Simplex Optimizer, v4.65
1 row, 0 columns, 0 non-zeros
~     0: obj =   1.491000000e+02  infeas =  0.000e+00
OPTIMAL SOLUTION FOUND
Integer optimization begins...
glp_add_cols: ncs = 0; invalid number of columns
Error detected in file api/prob1.c at line 362
Aborted (core dumped)

====

But with my fork at https://github.com/mingodad/GLPK it seems to work:

====

glpsol5 -m cplex2mpl.mod
GLPSOL: GLPK LP/MIP Solver, v4.65, glp_double size 8
Parameter(s) specified in the command line:
  -m cplex2mpl.mod
Reading model section from cplex2mpl.mod...
73 lines were read
73 lines were read
Generating result...
Generating cstTemps...
Generating cstPlanches...
Model has been successfully generated
GLPK Integer Optimizer, v4.65
3 rows, 5 columns, 15 non-zeros
5 integer variables, none of which are binary
Preprocessing...
1 row, 0 columns, 0 non-zeros
0 integer variables, none of which are binary
Scaling...
  A: min|aij| =  1.000e+00  max|aij| =  1.000e+00  ratio = 1.000e+00
Problem data seem to be well scaled
Solving LP relaxation...
GLPK Simplex Optimizer, v4.65
1 row, 0 columns, 0 non-zeros
~     0: obj =   1.491000000e+02  infeas =  0.000e+00
OPTIMAL SOLUTION FOUND
Integer optimization begins...
Long-step dual simplex will be used
+     0: mip =     not found yet <=              +inf (1; 0)
+     0: >>>>>   1.491000000e+02 <= 1.491000000e+02   0.0% (1; 0)
+     0: mip =   1.491000000e+02 <=     tree is empty   0.0% (0; 1)
INTEGER OPTIMAL SOLUTION FOUND
Time used:   0.0 secs
Memory used: 0.1 Mb (118279 bytes)
Il faut fabriquer :
1.000000 objet(s) 1
1.000000 objet(s) 2
1.000000 objet(s) 3
1.000000 objet(s) 4
1.000000 objet(s) 5
Il faut fabriquer :149.100000
Model has been successfully processed

====

Manually converting to GMPL could be something like this:

====

param N integer;
param D;
param dureeJournee integer;
param planchesJournee integer;
set objets := {1..N};
param planches{objets} integer;
param duree{i in objets} := planches[i] / D;
param profit{objets};

var aFabriquer{objets} , >= 1, integer;

maximize result: sum{o in objets} profit[o]*aFabriquer[o];

s.t. cstTemps: sum{o in objets} duree[o]*aFabriquer[o] <= dureeJournee;
cstPlanches: sum{o in objets} planches[o]*aFabriquer[o] <= planchesJournee;
# une contrainte en plus: chaque objet est au moins fabriqu´e en 1 
exemplaire
#auMoins1: forall(o in objets) aFabriquer[o] >= 1;

solve;

#display duree, planches, profit;
printf "Il faut fabriquer :\n";
printf{i in objets} "%f objet(s) %d\n", aFabriquer[i], i;
printf "Il faut fabriquer :%f\n", result;

data;

param N := 5;
param D := 3.4;
param dureeJournee := 8;
param planchesJournee := 40;
param planches := 1 4, 2 5, 3 8, 4 3, 5 7;
param profit := 1 12.6, 2 45.0, 3 8.0, 4 76.0, 5 7.5;

end;

====

On 26/1/21 12:00, Andrew Makhorin wrote:
> -------- Forwarded Message --------
> From: Alexandre Garreau <[email protected]>
> To: [email protected]
> Subject: What is this format?
> Date: Tue, 26 Jan 2021 11:46:03 +0100
>
> Hello,
>
> In my university, they use cplex for teaching linear programming, and
> I’d
> like not to install anything proprietary on my computer, but I have to
> figure out how to deal with the files given while only doc for cplex,
> which
> I don’t have and never used…  Do you know what format this is? it uses
> “.mod” as an extension, apparently that’s what glpk uses for its own
> format… but in this case, it’s not isn’t it? I thought maybe free mps,
> but
> reading it with --freemps doesn’t work either.  Here I attach a sample
> file, with the various errors I get:
>
> $ glpsol --freemps charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --freemps charpentier1.mod
> Reading problem data from 'charpentier1.mod'...
> charpentier1.mod:1: invalid indicator record
> MPS file processing error
> $ glpsol --glp charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --glp charpentier1.mod
> Reading problem data from 'charpentier1.mod'...
> charpentier1.mod:1: error: line designator missing or invalid
> GLPK LP/MIP file processing error
> $ glpsol --math charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --math charpentier1.mod
> Reading model section from charpentier1.mod...
> charpentier1.mod:1: syntax error in model section
> Context:                                                            /
> MathProg model processing error
> $ glpsol --lp charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --lp charpentier1.mod
> Reading problem data from 'charpentier1.mod'...
> charpentier1.mod:1: 'minimize' or 'maximize' keyword missing
> CPLEX LP file processing error
> $ glpsol --freemps -m charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --freemps -m charpentier1.mod
> Reading model section from charpentier1.mod...
> charpentier1.mod:1: syntax error in model section
> Context:                                                            /
> MathProg model processing error
> $ glpsol --glp -m charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --glp -m charpentier1.mod
> Reading model section from charpentier1.mod...
> charpentier1.mod:1: syntax error in model section
> Context:                                                            /
> MathProg model processing error
> $ glpsol --math -m charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --math -m charpentier1.mod
> Reading model section from charpentier1.mod...
> charpentier1.mod:1: syntax error in model section
> Context:                                                            /
> MathProg model processing error
> $ glpsol --lp -m charpentier1.mod
> GLPSOL: GLPK LP/MIP Solver, v4.65
> Parameter(s) specified in the command line:
>   --lp -m charpentier1.mod
> Reading model section from charpentier1.mod...
> charpentier1.mod:1: syntax error in model section
> Context:                                                            /
> MathProg model processing error