You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Thomas Neidhart (JIRA)" <ji...@apache.org> on 2013/01/19 14:50:13 UTC

[jira] [Resolved] (MATH-930) SimplexSolver finds suboptimal solution or throws NoFeasibleSolutionException

     [ https://issues.apache.org/jira/browse/MATH-930?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Neidhart resolved MATH-930.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 3.2

I have added more elaborate information about convergence criteria to the class javadoc of SimplexSolver and added an additional constructor to override the epsilon value.

As your problem seems to work fine with an epsilon value of 1e-4, no further changes are required imho.

After discussion on the mailinglist, the non-deterministic behavior, resulting in different results / exceptions is actually good and should give the user a hint that the current convergence criteria may be too strict.

Thanks for the report, your problem has been added as a unit test.
                
> SimplexSolver finds suboptimal solution or throws NoFeasibleSolutionException
> -----------------------------------------------------------------------------
>
>                 Key: MATH-930
>                 URL: https://issues.apache.org/jira/browse/MATH-930
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.1.1
>            Reporter: Konstantin
>            Priority: Minor
>             Fix For: 3.2
>
>         Attachments: exception.txt, program.7z, test.m
>
>
> When I run this code sometimes I get NoFeasibleSolutionException, and sometimes the result is 0.37522987682323883. 
> Octave gives result 0.70679 and a point = {1.59032, 1.00000, 0.70679, 0.40399, 1.04004, 0.67396, 0.37868, 0.22823, 0.98909, 0.68793, 0.17021,
> 0.09192, 0.67501, 0.44573, 0.07829, 0.00000, 0.81316, 0.63520, 0.55634
> 0.40399, 0.48504, 0.45944, 0.22823, 0.22823, 0.34873, 0.32313, 0.09192,
> 0.09192, 0.25681, 0.23122, 0.00000, 0.00000, 1.59032
> double[][] coefficients = new double[97][];
>         double[] value = new double[97];
>         Relationship[] relationship = new Relationship[97];
>         int i = 0;
>         double[] m0  = {1, -1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, 1, 1, -1, 0};
>         coefficients[i] = m0;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m1  = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1};
>         coefficients[i] = m1;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m2  = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1};
>         coefficients[i] = m2;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m3  = {0, 1, 0, -1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0, -1, 0, 1, 0, 1, 0, -1, 0, 1, 0, -1, 0, -1, 0, 1, 0};
>         coefficients[i] = m3;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m4  = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.628803};
>         coefficients[i] = m4;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m5  = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.676993};
>         coefficients[i] = m5;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m6  = {0, 0, 1, -1, 0, 0, -1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, -1, 1, 0, 0, 1, -1, 0, 0, 1, -1, 0, 0, -1, 1, 0};
>         coefficients[i] = m6;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m7  = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.136677};
>         coefficients[i] = m7;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m8  = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.444434};
>         coefficients[i] = m8;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m9  = {0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, -1, 0};
>         coefficients[i] = m9;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m10  = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.254028};
>         coefficients[i] = m10;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m11  = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.302218};
>         coefficients[i] = m11;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m12  = {0, 0, 0, 0, 1, -1, -1, 1, 0, 0, 0, 0, -1, 1, 1, -1, 0, 0, 0, 0, -1, 1, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 0};
>         coefficients[i] = m12;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m13  = {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.653981};
>         coefficients[i] = m13;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m14  = {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.690437};
>         coefficients[i] = m14;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m15  = {0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 1, 0, -1, 0};
>         coefficients[i] = m15;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m16  = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.423786};
>         coefficients[i] = m16;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m17  = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.486717};
>         coefficients[i] = m17;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m18  = {0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 1, -1, 0};
>         coefficients[i] = m18;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m19  = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.049232};
>         coefficients[i] = m19;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m20  = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.304747};
>         coefficients[i] = m20;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m21  = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0};
>         coefficients[i] = m21;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m22  = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.129826};
>         coefficients[i] = m22;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m23  = {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.205625};
>         coefficients[i] = m23;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m24  = {0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, -1, 1, -1, -1, 1, 0};
>         coefficients[i] = m24;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m25  = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.621944};
>         coefficients[i] = m25;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m26  = {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.764385};
>         coefficients[i] = m26;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m27  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, -1, 0};
>         coefficients[i] = m27;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m28  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.432572};
>         coefficients[i] = m28;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m29  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.480762};
>         coefficients[i] = m29;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m30  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, -1, 0};
>         coefficients[i] = m30;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m31  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.055983};
>         coefficients[i] = m31;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m32  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.11378};
>         coefficients[i] = m32;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m33  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0};
>         coefficients[i] = m33;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m34  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.009607};
>         coefficients[i] = m34;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m35  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.057797};
>         coefficients[i] = m35;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m36  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, -1, 0};
>         coefficients[i] = m36;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m37  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.407308};
>         coefficients[i] = m37;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m38  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.452749};
>         coefficients[i] = m38;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m39  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0};
>         coefficients[i] = m39;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m40  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.269677};
>         coefficients[i] = m40;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m41  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.321806};
>         coefficients[i] = m41;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m42  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0};
>         coefficients[i] = m42;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m43  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.049232};
>         coefficients[i] = m43;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m44  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.06902};
>         coefficients[i] = m44;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m45  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0};
>         coefficients[i] = m45;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m46  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0};
>         coefficients[i] = m46;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m47  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.028754};
>         coefficients[i] = m47;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m48  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, 0};
>         coefficients[i] = m48;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m49  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.484254};
>         coefficients[i] = m49;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m50  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.524607};
>         coefficients[i] = m50;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m51  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1, 0, -1, 0};
>         coefficients[i] = m51;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m52  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.385492};
>         coefficients[i] = m52;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m53  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.430134};
>         coefficients[i] = m53;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m54  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, -1, 1, 0, 0, -1, 1, 0, 0, 1, -1, 0};
>         coefficients[i] = m54;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m55  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34983};
>         coefficients[i] = m55;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m56  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.375781};
>         coefficients[i] = m56;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m57  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0};
>         coefficients[i] = m57;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m58  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.254028};
>         coefficients[i] = m58;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m59  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.281308};
>         coefficients[i] = m59;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m60  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, 0, 0, 0, 0, -1, 1, 1, -1, 0};
>         coefficients[i] = m60;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m61  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.304995};
>         coefficients[i] = m61;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m62  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.345347};
>         coefficients[i] = m62;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m63  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 1, 0};
>         coefficients[i] = m63;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m64  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.288899};
>         coefficients[i] = m64;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m65  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.332212};
>         coefficients[i] = m65;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m66  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -1, 1, 0};
>         coefficients[i] = m66;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m67  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.14351};
>         coefficients[i] = m67;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m68  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.17057};
>         coefficients[i] = m68;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m69  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0};
>         coefficients[i] = m69;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m70  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -0.129826};
>         coefficients[i] = m70;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m71  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -0.157435};
>         coefficients[i] = m71;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m72  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, -1, 1, 1, -1, 0};
>         coefficients[i] = m72;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m73  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -0};
>         coefficients[i] = m73;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m74  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1};
>         coefficients[i] = m74;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m75  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 1, 0};
>         coefficients[i] = m75;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m76  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -0.141071};
>         coefficients[i] = m76;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m77  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -0.232574};
>         coefficients[i] = m77;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m78  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, -1, 1, 0};
>         coefficients[i] = m78;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m79  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0};
>         coefficients[i] = m79;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m80  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1};
>         coefficients[i] = m80;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m81  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0};
>         coefficients[i] = m81;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m82  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -0.009607};
>         coefficients[i] = m82;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m83  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -0.057797};
>         coefficients[i] = m83;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m84  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 1, 0};
>         coefficients[i] = m84;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m85  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -0};
>         coefficients[i] = m85;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m86  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1};
>         coefficients[i] = m86;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m87  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0};
>         coefficients[i] = m87;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m88  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -0.091644};
>         coefficients[i] = m88;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m89  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -0.203531};
>         coefficients[i] = m89;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m90  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0};
>         coefficients[i] = m90;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m91  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -0};
>         coefficients[i] = m91;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m92  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1};
>         coefficients[i] = m92;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m93  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0};
>         coefficients[i] = m93;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m94  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0};
>         coefficients[i] = m94;
>         relationship[i] = Relationship.GEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m95  = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -0.028754};
>         coefficients[i] = m95;
>         relationship[i] = Relationship.LEQ;
>         value[i] = 0.0;
>         i++;
>         double[] m96  = {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
>         coefficients[i] = m96;
>         relationship[i] = Relationship.EQ;
>         value[i] = 1.0;
> ArrayList<LinearConstraint> constraints = new ArrayList<>(97);
>                 for (int j = 0; j < 97; j++) {
>                     constraints.add(new LinearConstraint(coefficients[j], relationship[j], value[j]));
>                 }
>                 double[] fooc = new double[33];
>                 fooc[3] = 1;
>                 LinearObjectiveFunction foo = new LinearObjectiveFunction(fooc, 0);
>                 SimplexSolver solver = new SimplexSolver();
>                 LinearConstraintSet se = new LinearConstraintSet(constraints);
>                 PointValuePair res = solver.optimize(MaxIter.unlimited(), foo, se, new NonNegativeConstraint(true));

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira