[FlopCpp] Problem using FlopC++ with GLPK

Michal Kaut mail at michalkaut.net
Thu Sep 17 14:00:16 EDT 2009


I have tested the first problem and have the same wrong solution from
glpk 4.39. Using Cbc works fine, though..

I will try to find the source of the problem and report back.


Michal


Renato Bruni 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
> 
> 
> _______________________________________________
> FlopCpp mailing list
> FlopCpp at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/flopcpp
> 
> -------------------------------------------
> Modern Hosting PIPNI - http://www.pipni.cz/



More information about the FlopCpp mailing list