-
-
Notifications
You must be signed in to change notification settings - Fork 209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Result change betwen ojAlgo version 53 and 54 or later #587
Comments
Hej Magnus, I briefly tried the v54 code and can confirm that the solver returns INFEASIBLE. It is the LP solver, used to find the initial feasible solution, that concludes the problem to be infeasible. I believe there's only minor tweaking to the LP solver between v53 and v54. The problem parameters are of greatly varying magnitude – 1.6829766774912231E12 and 1.0244148343231408E-14. Most likely some minor numerical difference cause the algorithm to interpret the numbers differently. I'll have a look at this in more detail later. |
Thanks for your answer. I modified the test above and try several modified model versions, by limiting small values in two different ways, using either the setSmallValuesToEpsilon or setSmallValuesToZero function, included here at the end. Setting small values to zero do not make this example work. But setting them to Epsilon give a result if epsilon is 1E-8. Do you know a better way to get an approximate solution when the initial model fail? Best Regards, ` @test //Quadratic model that fail in package org.ojalgo.matrix.store, ojAlgo, version 54.0
} private MatrixStore setSmallValuesToZero(MatrixStore ae, double epsilon) { private MatrixStore setSmallValuesToEpsilon(MatrixStore ae, double epsilon) { |
The 3:d party solver integrations (like CPLEX) are only available when using ExpressionsBasedModel. I did try to build a model and solve the problem that way. Then the result is a solution very similar to what you got in your test case. BUT, if I solve that same model using CPLEX, CPLEX states the problem to be infeasible. |
When I update ojAlgo my tests stumble on a case that gives OPTIMAL in version 53 of ojAlgo but give INFEASIBLE in v54 and later.
I tried 55.1.2 with same result as 54.0.0
The solutions are very different. With 53.0.0 I get an optimal solution and 54.0.0 say it is infeasible.
version 53 gives OPTIMAL -1.4162052484896982E24 @ { 1.406005993853654E-7, -7.895855702762938E-6, 714.3828764355712, 1.682976677491224E12, -6017.883736346659, 4605.691058549535 }
version 54 & 55 gives INFEASIBLE 0.0 @ { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }
I have made two versions since ojAlgo API change slightly between them, quadraticTest53 usable in v53 and quadraticTest54 usable with v54. In the code I left some settings, which I tried, commented away.
I am curious if this is a bug or possible to resolve by changing the settings in a way I did not yet try.
Thank you, for a great library!
The text was updated successfully, but these errors were encountered: