Manage output report from optimization

I am using Jump to solve an optimisation. The solving process stops because it does not find a feasible solution. I am in the early stages of debugging my program.
I use the println(model) function to display the variables and constraints in my model.
The execution summary report shows me all this information for the iterations performed:

  • objective
  • inf_pr
  • inf_du
  • lg(mu)
  • |||d||
  • lg(rg)
  • alpha_du
  • alpha_pr
  • ls
  • and a sumarry of the number of variables and restrictions.
    It does not show me the values of my variables during the different iterations.

Is it possible to get the variable values used in the iterations?
Is it possible to have (or export) a more complete report from the resolution?

Thanks in advance for your help.

I’m guessing from your post that you are using Ipopt.

There’s an open issue to add support for debugging the values in each iteration:

The options. for Ipopt are available here:

You could try increasing the print_level

model = Model(Ipopt.Optimizer)
set_optimizer_attribute(model, "print_level", 10)

Since you’re using Ipopt, there are some other things you could try/questions to answer:

  • is your problem convex? If not, Ipopt may converge to an infeasible solution, even if the problem has a feasible solution
  • is your starting point feasible? Here’s how to provide a start point in JuMP: Variables · JuMP
  • Try commenting out all constraints and add them back one at a time until the solver returns infeasible. That’s usually a good way of isolating the issue.

Finally, if your problem is small enough, consider posting. it here as a minimal working example. People should be able to copy-paste the code and have it run, so you’ll need to include any data etc.

1 Like

Thank you very much for such a comprehensive answer. The optimisation in ipopt is extremely customisable. I am going to try the different techniques you have suggested to solve the infeasibility of my problem.

1 Like