SimplexSolver returns no feasible solution
------------------------------------------

                 Key: MATH-299
                 URL: https://issues.apache.org/jira/browse/MATH-299
             Project: Commons Math
          Issue Type: Bug
    Affects Versions: 2.0
         Environment: Windows XP commons Math 2.0 jre 1.6.0.16
            Reporter: David


I am trying to optimize this:

maximize: v

v <= a1*p1 + a2*p2 + a3*p3 + a4*p4
v <= b1*p1 + b2*p2 + b3*p3 + b4*p4
v <= c1*p1 + c2*p2 + c3*p3 + c4*p4
v <= d1*p1 + d2*p2 + d3*p3 + d4*p4

p1 + p2 + p3 + p4 = 1

where a1-d4 are constant specified below by the code (i didn't want to copy and 
paste them up here. you can look below to see what they are in the objective 
function). 

                LinearObjectiveFunction f = new LinearObjectiveFunction(        
        
                                new double[] { 1,
                                                0, 
                                                0, 0, 0}, 0 );
                Collection<LinearConstraint>  constraints = new 
ArrayList<LinearConstraint> ();


                constraints.add(new LinearConstraint(new double[] { -1, 
                                1.7316145027890766, 
                                 1.3584341412980305,
                                 0.9305633063383639,
                                 1.687117394945513
                },
                Relationship.GEQ, 0));

                constraints.add(new LinearConstraint(new double[] { -1, 
                                0.6617060079461883, 
                                 1.4862459822191323,
                                 0.7692647272328988,
                                 0.7329140944025636
                },
                Relationship.GEQ, 0));

                constraints.add(new LinearConstraint(new double[] { -1, 
                                1.3255966888982322, 
                                286.21607948837584,
                                1.135907611434458,
                                0.9803367440299271
                },
                Relationship.GEQ, 0));

                constraints.add(new LinearConstraint(new double[] { -1, 
                                0.5428682596573682, 
                                1.5745685116536952,
                                1.4834419186882808,
                                1.2884923232048968
                },
                Relationship.GEQ, 0));


                constraints.add(new LinearConstraint(new double[] {0, 1, 1, 1, 
1},
                                Relationship.EQ, 1));
                RealPointValuePair solution = null;
                try {
                
                        solution = new SimplexSolver().optimize(f, constraints,
                                        GoalType.MAXIMIZE, true);
                }
                catch (OptimizationException e) {
                        e.printStackTrace();
                }

I get this error back from the SimplexSolver.

org.apache.commons.math.optimization.linear.NoFeasibleSolutionException: no 
feasible solution
        at 
org.apache.commons.math.optimization.linear.SimplexSolver.solvePhase1(SimplexSolver.java:177)
        at 
org.apache.commons.math.optimization.linear.SimplexSolver.doOptimize(SimplexSolver.java:187)
        at 
org.apache.commons.math.optimization.linear.AbstractLinearOptimizer.optimize(AbstractLinearOptimizer.java:106)
        at Runner.main(Runner.java:101)

One interesting thing to note is that if you round all the numbers to the 
nearest 100's place, it works. If you keep it with the floating point precision 
shown here, it doesn't.
                

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

Reply via email to