[Ipopt] Jipopt issue

Alberto Calzada albertocalsa at gmail.com
Fri Jan 18 11:16:32 EST 2013


Hi Edson,

I found the way of running the derivative checker, so no worries about that.

Many thanks,

Alberto


On 18 January 2013 15:57, Alberto Calzada <albertocalsa at gmail.com> wrote:

> Hello, Edson,
>
> I am struggling to find a solution to these errors.
>
> 1) I am not sure if I am running properly the derivative tests in JIpopt.
> I am just adding these 2 lines:
>  addStrOption(Ipopt.KEY_DERIVATIVE_TEST, "first-order");
> addStrOption(Ipopt.KEY_DERIVATIVE_TEST_PRINT_ALL, "yes");
> But the program is not printing anything.
>
> 2) When I run a big optimisation problem, I get the error I mentioned you
> in my previous e-mail. But when I try to run a small optimisation problem,
> the following error appears:
>
> *
> ******************************************************************************
> *
> *This program contains Ipopt, a library for large-scale nonlinear
> optimization.*
> * Ipopt is released as open source code under the Common Public License
> (CPL).*
> *         For more information visit http://projects.coin-or.org/Ipopt*
> *
> ******************************************************************************
> *
> *
> *
> *Option hessian_information is not chosen as limited_memory, but eval_h
> returns f*
> *alse.*
> *Exception of type: OPTION_INVALID in file "IpTNLPAdapter.cpp" at line
> 869:*
> * Exception message: eval_h is called but has not been implemented*
> *
> *
> *EXIT: Invalid option encountered.*
> *DEBUG [AWT-EventQueue-1] (NotificationManager.java:104) -
> java.lang.ArrayIndexOu*
> *tOfBoundsException: 0*
> *java.lang.ArrayIndexOutOfBoundsException: 0*
> *        at
> model.core.Optimisation.ExtendedRuleBaseOptimisation.eval_h(ExtendedR*
> *uleBaseOptimisation.java:220)*
> *        at org.coinor.Ipopt.IpoptSolve(Native Method)*
> *        at org.coinor.Ipopt.solve(Ipopt.java:347)*
> *        at
> model.core.DataStructure.SubRuleBase.optimise(SubRuleBase.java:1230)*
> *        at
> view.util.MeasureParametersDialog$6.actionPerformed(MeasureParameters*
> *Dialog.java:158)*
> *        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
> *
> *        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown
> Source)*
> *        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown
> Source)*
> *        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)*
> *        at
> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour*
> *ce)*
>
> The thing is that I have actually implemented the eval_h function! This is
> my eval_h function:
>
> * @Override*
> * protected boolean eval_h(int n, double[] x, boolean new_x,*
> * double obj_factor, int m, double[] lambda, boolean new_lambda,*
> * int nele_hess, int[] iRow, int[] jCol, double[] values) {*
> *
> *
> * /* return the structure. This is a symmetric matrix, fill the lower left
> *
> * * triangle only. */*
> * if(values == null){*
> * /* return the structure. This is a symmetric matrix, fill the lower left
> *
> * * triangle only. */*
> * int idx = 0; /* nonzero element counter */*
> * int row = 0; /* row counter for loop */*
> * int col = 0; /* col counter for loop */*
> *
> *
> * idx=0;*
> * for (row = 0; row < 4; row++) {*
> * for (col = 0; col <= row; col++) {*
> * iRow[idx] = row;*
> * jCol[idx] = col;*
> * idx++;*
> * }*
> * }*
> * nele_hess = idx;*
> * }*
> * else {*
> * for(int i=0;i<nele_hess;i++){*
> * values[i] = 0;*
> * }*
> * }*
> * *
> * return true;*
> * }*
>
> Because what I am trying to optimise are the parameters of a rule-based
> knowledge representation system (weights, antecedents and consequent of
> each rule and attribute) and all my constraints are of the type: g_U[k] =
> a1+a2+..+aN, their second derivative (if I am not wrong) will always be
> zero for all of them. That is why I always do "*values[i] = 0" *for all
> my constraints.
>
> I am downloading the Valgrind application to debug the system, but I think
> that the problem I am getting now is not related with memory issues but
> maybe by solving this problem when optimising small rule-bases, we might
> solve also the one for big rule-bases at once...
>
> Many thanks once again Edson, I wouldn't be able to make this thing work
> without you,
>
> All the best,
>
> Alberto
>
>
>
> On 18 January 2013 13:19, Edson Cordeiro do Valle <edsoncv at enq.ufrgs.br>wrote:
>
>>     Hello Alberto
>> Well, if things went wrong, I suggest to use the default approach: use
>> derivative checker to detect errors on first and second derivatives.
>> To see the outputs from ipopt to java it is necessary to send the outputs
>> of ipopt to a java stream, through a JTextArea (implements the intermediate
>> callback function in java) and analyze your output.
>> The implementation in Java of this function would be something like that:
>>
>>     public boolean intermediate_callback(int AlgorithmMode, int iter,
>>             double obj_value, double inf_pr, double inf_du, double mu,
>>             double d_norm, double regularization_size, double alpha_du,
>>             double alpha_pr, int ls_trials) {
>>         Formatter formatter = new Formatter();
>>         // publish results to the output window
>>         myArea.append(formatter.format("%d \t %1.4e \t %1.2e \t %1.2e \t"
>> +
>>                 "%+1.1f \t %1.2e \t %1.1f \t %1.2e \t %1.2e \t %d",
>>                 iter, obj_value, inf_pr, inf_du, mu, d_norm,
>> regularization_size,
>>                 alpha_du, alpha_pr, ls_trials).toString() + "\n");
>>         return true;
>>     }
>>
>> Notice that due to a swing thread issues it may be necessary to create a
>> swingworker to update this values. I have a jipopt version that interacts
>> with swing controls and a JTextArea using swingworkers. I will ask my
>> company if I can share this implementation with COIN-Ipopt, but you can try
>> the above solution.
>>
>> It is also possible to run your java executable in valgrind (even if it
>> runs inside jvm) and check for leaks (I know that this work because Ive
>> done this in the past to debug the first versions of jipopt).  The problem
>> in this case is that, since jipopt.dll was not built with debug symbols,
>> you may not find exactly where (what line) exactly the problem is, but it
>> can give you a clue.
>>
>> Regards
>>
>>
>> Em 17-01-2013 18:37, Alberto Calzada escreveu:
>>
>> Dear Rafael and Edson,
>>
>>  Thank you very much for your patience and attention. I was finally and
>> just now able to solve the link issue. It was because my project is inside
>> another (much bigger) open-source project, and I needed to add the jipopt
>> .jar library not to the path of my own project, but to the path of the
>> whole workbench. Thank you for your advise during this last month, it was
>> very helpful to find the root of the problem.
>> However, now I think I got another problem which I believe is out of my
>> scope (it seems to occur out of the JVM, and looks like a memory error).
>> Please find attached the logs of the 4 failed executions I have had.
>>
>>  Again, any suggestion would be more than welcome,
>> Many thanks beforehand,
>>
>>  Best regards,
>>
>>  Alberto
>>
>>
>> On 16 January 2013 23:12, Edson Cordeiro do Valle <edsoncv at enq.ufrgs.br>wrote:
>>
>>>    Hello Alberto
>>> Can you send me your version of your project (a zipped folder) or a
>>> resumed version of it? If you send me I can take a look.
>>> Regards
>>>
>>> Em 11-01-2013 15:16, Alberto Calzada escreveu:
>>>
>>>  Dear Rafael,
>>>>
>>>> Again, thank you very much for your prompt respond and attention.
>>>>
>>>> That's the most strange thing: I am in Eclipse and I have added the
>>>> JIpopt library (jipopt-3.2.2.jar) in the path of my project. Moreover, I am
>>>> not getting any compilation error and I can access the Ipopt class from
>>>> Eclipse and the imports I do in my Java class which extends Ipopt works
>>>> also fine.
>>>>
>>>> I have also checked the jipopt-3.2.2.jar file and it has indeed inside
>>>> the org.coinor.Ipopt class. That is why I don't know exactly where could be
>>>> the problem.
>>>>
>>>> Thank you very much again,
>>>> Best regards,
>>>>
>>>> Alberto
>>>>
>>>
>>>
>>
>>
>>  --
>> *--
>> *
>>
>> *Mr Alberto Calzada
>> Full-time PhD Candidate*
>>
>> *Room 16J25 *
>>
>> *School of Computing and Mathematics
>> Faculty of Computing and Engineering*
>>
>> *University of Ulster at Jordanstown Campus
>> Northern Ireland, UK
>> Email: Calzada-A at email.ulster.ac.uk*
>>
>> *Tel:  +44 28 90361114 *
>>
>>
>>
>
>
> --
> *--
> *
>
> *Mr Alberto Calzada
> Full-time PhD Candidate*
>
> *Room 16J25 *
>
> *School of Computing and Mathematics
> Faculty of Computing and Engineering*
>
> *University of Ulster at Jordanstown Campus
> Northern Ireland, UK
> Email: Calzada-A at email.ulster.ac.uk*
>
> *Tel:  +44 28 90361114 *
>



-- 
*--
*

*Mr Alberto Calzada
Full-time PhD Candidate*

*Room 16J25 *

*School of Computing and Mathematics
Faculty of Computing and Engineering*

*University of Ulster at Jordanstown Campus
Northern Ireland, UK
Email: Calzada-A at email.ulster.ac.uk*

*Tel:  +44 28 90361114 *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130118/5b76e194/attachment-0001.html>


More information about the Ipopt mailing list