opensubscriber
   Find in this group all groups
 
Unknown more information…

i : issues@commons.apache.org 1 September 2009 • 5:37AM -0400

[jira] Issue Comment Edited: (MATH-286) SimplexSolver not working as expected?
by Andrea (JIRA)

REPLY TO AUTHOR
 
REPLY TO GROUP





    [ https://issues.apache.org/jira/browse/MATH-286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12749580#action_12749580 ]

Andrea edited comment on MATH-286 at 8/31/09 2:36 PM:
------------------------------------------------------

Hi all,
What I wrote before doesn't really make sense...

Look at this LP simplex solver:

http://www.phpsimplex.com/simplex/page2.php?objetivo=max&x1=0.8&x2=0.7&restricciones=3&variables=2&l=en&x11=1&x12=1&desigualdad1=-1&y1=18&x21=1&x22=0&desigualdad2=1&y2=10&x31=0&x32=1&desigualdad3=1&y3=8&Submit=Continue

why after the first phase is over the coefficients for x1 and x2 are set to 0.8 and 0.7 while here they are 0? Couldn't be the SimplexTableau's discardArtificialVariables doesn't do everything correct?

Just guessing...

      was (Author: ciaccia):
    Hi Ben,
Even if I don't completely understand the format of the posted tableau, I guess the error is in the last step...

You can solve the above problem on this homepage, where you can see all the steps of the simplex method:

http://www.phpsimplex.com/simplex/page2.php?objetivo=max&x1=0.8&x2=0.7&restricciones=3&variables=2&l=en&x11=1&x12=1&desigualdad1=-1&y1=18&x21=1&x22=0&desigualdad2=1&y2=10&x31=0&x32=1&desigualdad3=1&y3=8&Submit=Continue

The tables you posted and the tables on the above homepage look similar till the last step (the first of the second phase)... Try look at it, maybe you find the problem
  
> SimplexSolver not working as expected?
> --------------------------------------
>
>                 Key: MATH-286
>                 URL: https://issues.apache.org/jira/browse/MATH-286
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Java 1.6.0_13 on  Windows XP 32-bit
>            Reporter: Andrea
>         Attachments: simplex.txt, SimplexSolverTest.patch, SimplexTableau.patch
>
>
> I guess (but I could be wrong) that SimplexSolver does not always return the optimal solution, nor satisfies all the constraints...
> Consider this LP:
> max: 0.8 x0 + 0.2 x1 + 0.7 x2 + 0.3 x3 + 0.6 x4 + 0.4 x5;
> r1: x0 + x2 + x4 = 23.0;
> r2: x1 + x3 + x5 = 23.0;
> r3: x0 >= 10.0;
> r4: x2 >= 8.0;
> r5: x4 >= 5.0;
> LPSolve returns 25.8, with x0 = 10.0, x1 = 0.0, x2 = 8.0, x3 = 0.0, x4 = 5.0, x5 = 23.0;
> The same LP expressed in Apache commons math is:
> LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { 0.8, 0.2, 0.7, 0.3, 0.6, 0.4 }, 0 );
> Collection<LinearConstraint> constraints = new ArrayList<LinearConstraint>();
> constraints.add(new LinearConstraint(new double[] { 1, 0, 1, 0, 1, 0 }, Relationship.EQ, 23.0));
> constraints.add(new LinearConstraint(new double[] { 0, 1, 0, 1, 0, 1 }, Relationship.EQ, 23.0));
> constraints.add(new LinearConstraint(new double[] { 1, 0, 0, 0, 0, 0 }, Relationship.GEQ, 10.0));
> constraints.add(new LinearConstraint(new double[] { 0, 0, 1, 0, 0, 0 }, Relationship.GEQ, 8.0));
> constraints.add(new LinearConstraint(new double[] { 0, 0, 0, 0, 1, 0 }, Relationship.GEQ, 5.0));
> RealPointValuePair solution = new SimplexSolver().optimize(f, constraints, GoalType.MAXIMIZE, true);
> that returns 22.20, with x0 = 15.0, x1 = 23.0, x2 = 8.0, x3 = 0.0, x4 = 0.0, x5 = 0.0;
> Is it possible SimplexSolver is buggy that way? The returned value is 22.20 instead of 25.8, and the last constraint (x4 >= 5.0) is not satisfied...
> Am I using the interface wrongly?

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Bookmark with:

Delicious   Digg   reddit   Facebook   StumbleUpon

Related Messages

opensubscriber is not affiliated with the authors of this message nor responsible for its content.