0

Can someone explain me the function of the parameter "adjusted", which calls e.g. getAdjustmentExponent(), for lower, upper, weights,... in the class ModelEntity of the ojalgo package? I can understand the function if it should improve the numerical performance but I cannot understand why the constraints are adjusted like this:

Problem to compute:

min  2x+y  
s.t. x+y=3,
     0<=x<=3.0,
     0<=y<=0.05 <--

into ojalgo problem

min  2x+y 
s.t. x+y=3
     0<=x<=3.0
     0<=y<=0.5 <--

Is this a bug or do I overlook something?

Thomas
  • 15
  • 4

1 Answers1

0

It's done to improve the numerical performance. Is there a problem with how it works, do you get incorrect solutions?

Your example suggests that something is wrong, but is that really what happens?

apete
  • 1,250
  • 1
  • 10
  • 16
  • Thank you for the explanation. The general implementation should be correct so far I could test it. My problem is ill-conditioned and thus I got wrong results. Finally, I found solver settings which work (with deactivated compensate function). I reactivated it and I have an issue (https://github.com/optimatika/ojAlgo-extensions/issues/3). This is probably only a cplex extension specific problem. – Thomas Oct 16 '17 at 12:37
  • Fixed that problem. You can turn off ojAlgo's presolvers by calling ```ExpressionsBasedModel.clearPresolvers();``` – apete Oct 16 '17 at 19:36
  • Thanks. Now it is working well. Good to know that I can deactivate the presolver. However, I like to have such a tool. Is it correct that expressions are not adjusted at the moment? I know it is probably not always a good idea but sometimes it can be nice to transform "0.01a+0.03b<=0.04" into "1.0a+3.0b<=4". – Thomas Oct 19 '17 at 15:00
  • The parameter adjustment is not a presolver, and cannot be disabled. (It disables itself if the input parameters are too extreme.) – apete Oct 20 '17 at 20:08
  • I realized it. Furthermore, my last question is obsolete as expression parameter adjustments are executed. – Thomas Oct 20 '17 at 23:29