-1
$\begingroup$

Is there some packages in java that can be included to eclipse in order to solve a non linear problem? I have used ipopt but when running, there is a notification which say "NOTE: You are using Ipopt by default with the MUMPS linear solver. Other linear solvers might be more efficient (see Ipopt documentation)." while I search to use a non linear solver for my problem. Please help me.

Thank you

$\endgroup$
  • 1
    $\begingroup$ It's just a warning, not an error. Is your solution process too slow, or why do you care? $\endgroup$ – Wolfgang Bangerth Jan 5 '15 at 14:51
  • $\begingroup$ When solving my program through the maple optimization interface, I obtain a true result (positive objective function) but when using ipopt, it sames using a linear solver which biases the solution (I obtain a negative objective function different from the solution obtained by the not linear solver integrated in maple) $\endgroup$ – koukou Jan 5 '15 at 15:22
  • $\begingroup$ The choice of linear solver only affects the speed with which you solve, but not what solution you get. Do you have a non-convex objective function or feasible set? $\endgroup$ – Wolfgang Bangerth Jan 5 '15 at 18:16
  • $\begingroup$ My objective function has the following form : x^b - ay^b - wz^b. x,a,y,w,z are all known parameters. the only variable is b. I search to obtain the value of b which maximize this function. Thanks for your help $\endgroup$ – koukou Jan 5 '15 at 21:55
2
$\begingroup$

IPOPT provides its own nonlinear solvers that are part of the interior point methods it implements. As such, these solvers (really, internal class methods) will construct linear systems that must be solved, similar to a quasi-Newton method. The warning merely points out that you are using the default solver instead of something like Pardiso, or the HSL libraries, and as WolfgangBangerth points out, using a different solver should not affect the solution you get (but will affect the time it takes to get that solution). If you have installed IPOPT correctly, then that installation is probably sufficient to get you started.

$\endgroup$
2
$\begingroup$

Since your problem only concerns one variable and is unconstrained in this variable (yes?), you should consider to use the Brent algorithm. You can find an implementation of the Brent algorithm in Apache Commons Math, see API documentation here.

If you encounter problems with more variables and/or nonlinear constraints, you could also consider to use the COBYLA algorithm, developed by Michael Powell. I have ported the algorithm from FORTRAN 77 to Java, see here.

Powell has also developed more efficient algorithms for nonlinear objective functions without constraints, with bound constraints and with linear constraints for two or more variables. There is a Java implementation of his algorithm for bound constraints, BOBYQA, included in Apache Commons Math, see API documentation here.

$\endgroup$
1
$\begingroup$

You're not very precise regarding what problem you want to solve, but I know of a few Java code libraries that offer mathematical programming functionality.

JOptimizer Should be able to handle a variety of convex problems. I have no idea about performance, accuracy or bugs - I just know it exists.

ojAlgo (I wrote this) Can handle LP, QP and MIP. It's designed for use cases when you have smaller simpler problems and want a pure Java implementation.

Apache Commons Math also has an LP (simplex) solver.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.