[Cmpl] Suboptimal solution when reading from CSV

Mike Steglich mike.steglich at th-wildau.de
Mon Nov 24 12:52:07 EST 2014


Hi Indrjajit,

I analysed your problem with invoking Cplex shipped with the Ampl demo version. This Cplex version is customised for Ampl and can't be used with Cmpl. If you want to use Cplex then try to receive a normal Cplex version directly from IBM's academic initiative. This version works with Cmpl as I've described it in one of my last emails before.

I found a bug in readcsv() for reading a vector that is specified as n rows with one element in the csv file. I will fix it with the next release. In the meantime please specify a vector in a csv file one row with n elements. This works properly. 

But I would like to suggest to use a cmplData file instead csv files. This is Cmpl's standard data format and it is more convenient and more flexible. 

Thanks,

Mike






> Am 23.11.2014 um 20:05 schrieb Indrajit Sen Gupta <indrajitsg at gmail.com <mailto:indrajitsg at gmail.com>>:
> 
> Hi Mike,
>  
> I am trying out one of the examples from the manual (Pg 31):
>  
> -------------------------------------------------------------------
> %arg -solver cbc
> %arg -solutionAscii
> parameters:
> # Reading data from CSV
>  c[] := readcsv("c.csv");
>  b[] := readcsv("b.csv");
>  A[,] := readcsv("a.csv");
> # Reading data directly
> # c[] := (1,2,3);
> # b[] := (15,20);
> # A[,] := ((5.6, 7.7, 10.5),
> #   (9.8, 4.2, 11.1));
>  
> variables:
>  x[defset(c[])] : real[0..];
>  
> objectives:
>  c[]T * x[] -> max;
> constraints:
>  A[,] * x[] <= b[];
> -------------------------------------------------------------------
> When I use the readcsv command to read the data, this is the output that I get:
>  
> ---------------------------------------------------------------------------------------------------------
> Problem              prob04.cmpl
> Nr. of variables     3
> Nr. of constraints   2
> Objective name       line[1]
> Solver name          CBC
> Display variables    (all)
> Display constraints  (all)
> ---------------------------------------------------------------------------------------------------------
> Objective status     optimal
> Objective value      3.8961 (max!)
> Variables 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> x[1]                    C                   0                   0            Infinity           -0.454545
> x[2]                    C             1.94805                   0            Infinity                   0
> x[3]                    C                   0                   0            Infinity           -0.727273
> ---------------------------------------------------------------------------------------------------------
> Constraints 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> line[2]                 L                  15           -Infinity                  15             0.25974
> line[3]                 L             8.18182           -Infinity                  20                   0
> ---------------------------------------------------------------------------------------------------------
> This is obviously not optimal. Now if I read the data directly from inside the CMPL file, I get the correct answer:
>  
> ---------------------------------------------------------------------------------------------------------
> Problem              prob04.cmpl
> Nr. of variables     3
> Nr. of constraints   2
> Objective name       line[1]
> Solver name          CBC
> Display variables    (all)
> Display constraints  (all)
> ---------------------------------------------------------------------------------------------------------
> Objective status     optimal
> Objective value      4.28571 (max!)
> Variables 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> x[1]                    C                   0                   0            Infinity                -0.6
> x[2]                    C                   0                   0            Infinity                -0.2
> x[3]                    C             1.42857                   0            Infinity                   0
> ---------------------------------------------------------------------------------------------------------
> Constraints 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> line[2]                 L                  15           -Infinity                  15            0.285714
> line[3]                 L             15.8571           -Infinity                  20                   0
> ---------------------------------------------------------------------------------------------------------
> Any thoughts on why this is happening?
>  
> The contents of the CSV files are exactly as mentioned in page 31.
>  
> Regards,
> Indrajit
>  
>  
> 
> _______________________________________________
> Cmpl mailing list
> Cmpl at list.coin-or.org <mailto:Cmpl at list.coin-or.org>
> http://list.coin-or.org/mailman/listinfo/cmpl

> Am 23.11.2014 um 20:05 schrieb Indrajit Sen Gupta <indrajitsg at gmail.com>:
> 
> Hi Mike,
>  
> I am trying out one of the examples from the manual (Pg 31):
>  
> -------------------------------------------------------------------
> %arg -solver cbc
> %arg -solutionAscii
> parameters:
> # Reading data from CSV
>  c[] := readcsv("c.csv");
>  b[] := readcsv("b.csv");
>  A[,] := readcsv("a.csv");
> # Reading data directly
> # c[] := (1,2,3);
> # b[] := (15,20);
> # A[,] := ((5.6, 7.7, 10.5),
> #   (9.8, 4.2, 11.1));
>  
> variables:
>  x[defset(c[])] : real[0..];
>  
> objectives:
>  c[]T * x[] -> max;
> constraints:
>  A[,] * x[] <= b[];
> -------------------------------------------------------------------
> When I use the readcsv command to read the data, this is the output that I get:
>  
> ---------------------------------------------------------------------------------------------------------
> Problem              prob04.cmpl
> Nr. of variables     3
> Nr. of constraints   2
> Objective name       line[1]
> Solver name          CBC
> Display variables    (all)
> Display constraints  (all)
> ---------------------------------------------------------------------------------------------------------
> Objective status     optimal
> Objective value      3.8961 (max!)
> Variables 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> x[1]                    C                   0                   0            Infinity           -0.454545
> x[2]                    C             1.94805                   0            Infinity                   0
> x[3]                    C                   0                   0            Infinity           -0.727273
> ---------------------------------------------------------------------------------------------------------
> Constraints 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> line[2]                 L                  15           -Infinity                  15             0.25974
> line[3]                 L             8.18182           -Infinity                  20                   0
> ---------------------------------------------------------------------------------------------------------
> This is obviously not optimal. Now if I read the data directly from inside the CMPL file, I get the correct answer:
>  
> ---------------------------------------------------------------------------------------------------------
> Problem              prob04.cmpl
> Nr. of variables     3
> Nr. of constraints   2
> Objective name       line[1]
> Solver name          CBC
> Display variables    (all)
> Display constraints  (all)
> ---------------------------------------------------------------------------------------------------------
> Objective status     optimal
> Objective value      4.28571 (max!)
> Variables 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> x[1]                    C                   0                   0            Infinity                -0.6
> x[2]                    C                   0                   0            Infinity                -0.2
> x[3]                    C             1.42857                   0            Infinity                   0
> ---------------------------------------------------------------------------------------------------------
> Constraints 
> Name                 Type            Activity         Lower bound         Upper bound            Marginal
> ---------------------------------------------------------------------------------------------------------
> line[2]                 L                  15           -Infinity                  15            0.285714
> line[3]                 L             15.8571           -Infinity                  20                   0
> ---------------------------------------------------------------------------------------------------------
> Any thoughts on why this is happening?
>  
> The contents of the CSV files are exactly as mentioned in page 31.
>  
> Regards,
> Indrajit
>  
>  
> 
> _______________________________________________
> Cmpl mailing list
> Cmpl at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/cmpl

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cmpl/attachments/20141124/6c9bf3c2/attachment.html>


More information about the Cmpl mailing list