[Osi] Problem using FlopC++ with GLPK

Ted Ralphs ted at lehigh.edu
Sat Sep 19 10:06:42 EDT 2009


Did you try it with another solver to see if the result is the same?
This would tell you whether the problems is with FlopC++ or
Glpk/OsiGlpk.

Cheers,

Ted

On Thu, Sep 17, 2009 at 12:33 PM, Renato Bruni
<renato.bruni at diei.unipg.it> wrote:
> Hello everybody,
>
> we have some strange behaviour using FlopC++ 1.0.6 (having inside Osi
> 0.100.0) and GLPK 4.38.
>
> If we run the following example, with 5 variables and 2 constraints, we
> obtain solution x=(0, 2, 0, 0, 0) and objective= 2
> but the solution should be x=(4, 0, 0, 0, 0) and objective= 4
>
> #include "flopc.hpp"
> using namespace flopc;
> #include <OsiGlpkSolverInterface.hpp>
>
> int main() {
>    MP_model modello(new OsiGlpkSolverInterface);
>    MP_set N(5);
>    MP_variable x(N);
>    x.integer();
>
>    MP_constraint vinc1;
>    MP_constraint vinc2;
>    vinc1 = 2*x(0) + 4*x(1) + 6*x(4) == 8;
>    vinc2 = x(0) + x(4) <= 100;
>    modello.add(vinc1);
>    modello.add(vinc2);
>
>    modello.maximize( x(0) + x(1) + x(4) );
>    x.display("Optimal solution per x:");
> }
>
> If we run this other example, that is the same model with 5 variables and
> 2 constraints, we obtain solution x=(4, 0, 0, 0, 96) and objective= 4
> but the solution should be, like before, x=(4, 0, 0, 0, 0) and objective= 4
>
> #include "flopc.hpp"
> using namespace flopc;
> #include <OsiGlpkSolverInterface.hpp>
>
> int main() {
>    MP_model modello(new OsiGlpkSolverInterface);
>    MP_set N(5);
>    MP_set S(5);
>    MP_subset<1> Sub(S);
>    Sub.insert(0);
>    Sub.insert(1);
>    Sub.insert(4);
>
>    MP_variable x(N);
>    x.integer();
>
>    MP_data COEFF(Sub);
>                int i;
>                for(i=0; i<Sub.size();i++)
>                        COEFF(i)= 2*(i+1);//vector COEFF={2,4,6}
>    COEFF.display("COEFF ");
>
>    MP_constraint vinc1;
>    MP_constraint vinc2;
>    vinc1 = sum(Sub, COEFF(Sub)*x(Sub))==8;//2x0+4x1+6x4==8
>    vinc2 = x(0) + x(4) <= 100;
>    modello.add(vinc1);
>    modello.add(vinc2);
>
>    modello.maximize( sum(Sub, x(Sub)) );//max(x(0)+x(1)+x(4))
>   x.display("Optimal solution per x:");
> }
>
> Which can be the reason(s) of this incorrect behaviour?
> Are there incompatibilities between the versions of FlopC++ 1.0.6 and GLPK
> 4.38? In this case, which version of GLPK should be used?
>
> Thanks for your help.
> Best regards,
> Renato Bruni
>
>
> _______________________________________________
> Osi mailing list
> Osi at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/osi
>



-- 
Dr. Ted Ralphs
Associate Professor, Lehigh University
(610) 628-1280
ted 'at' lehigh 'dot' edu
coral.ie.lehigh.edu/~ted





More information about the Osi mailing list