Closed datejada closed 7 months ago
WILD AND CRAZY IDEA! 💡⚡ @abelsiqueira It would be helpful to have a report similar to the one that Gurobi has, but created using functions in MOI and JuMP. I think it's possible to do, so if you're interested, we could collaborate on it and submit a pull request to the JuMP repository. You may be able to allocate time from the budget for generalization since it could be used for Tulipa/SpineOpt and any other model in JuMP.
BTW: for this issue in Tulipa, it will be enough to have the tutorial with hints on how to use the commands
@datejada, cool idea, we should talk about it.
WILD AND CRAZY IDEA! 💡⚡ @abelsiqueira It would be helpful to have a report similar to the one that Gurobi has, but created using functions in MOI and JuMP. I think it's possible to do, so if you're interested, we could collaborate on it and submit a pull request to the JuMP repository. You may be able to allocate time from the budget for generalization since it could be used for Tulipa/SpineOpt and any other model in JuMP.
Nevermind @abelsiqueira it already exists. The function is called ‘copy_conflict‘. And it is quite useful 😊
https://jump.dev/JuMP.jl/stable/api/JuMP/#JuMP.copy_conflict
So, we might add how to use it in this section.
These guys from JuMP are quite smart 🙃
Description
I have been working with the model in some cases, and it will be awesome to have a section with some hints to deal with infeasibilities in the model. We don't need to implement anything special (for now); it should be more of a guide on using the JuMP and MOI functions that help the user identify the infeasibilities in the model. The tutorial could be done with the same case study we use for the infeasibility in the tests. Then, show how to explore the model and understand the infeasibility. Here are some useful commands that I have been using, but more details and comments will be needed
In this example, after calculating the conflict, I query the constraint
max_output_flows_limit
because I knew the problem was there. But we might use more generic code that explores all the constraints, finds the ones with a conflict statusIN_CONFLICT
, and prints them.More information here: https://jump.dev/MathOptInterface.jl/stable/reference/models/#Conflict-Status
For instance, this is an example in Python using gurobipy of how to print them nicely (it is in Python, but the idea could be implemented quite similarly using the functions from MOI and JuMP:
Here is the link to the complete Gurobi example: https://support.gurobi.com/hc/en-us/articles/15656630439441-How-do-I-use-compute-IIS-to-find-a-subset-of-constraints-that-are-causing-model-infeasibility
Related Issues
No response