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?
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.
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.