Intlingprog: Solver stopped prematurely. No integer feasible point found.

5 views (last 30 days)
I have a huge MILP model of a real-time railway traffic management problem implemented in 2021b. I get the following message when I try to run the model: Solver stopped prematurely. No integer feasible point found. I tried it on a couple of scenarios and it works perfectly for them. I started to investigate which constraints may cause the problem and I found out that if I drop two of them, then it solves the problem. However, after checking the constraints that I had to comment out are clearly satisfied by the solution. I am really stuck with the problem. Has anybody already faced a similar problem? Do you have any ideas? Thank you for your answers in advance!
  3 Comments
Walter Roberson
Walter Roberson on 23 Feb 2023
Generally speaking, for some of the optimizers, the space near a constraint boundary might not be fully explored before the algorithm gives up (based on iterations for example.)
If the jacobian currently predicts that a model variable is beyond the constraint boundary, then there are different ways an optimizer can react:
  • clamp the variable at the constraint boundary -- which can mean that the area "near" that boundary might not get explored
  • "bounce off" the constraint boundary -- which might bounce too far
  • pick a random position between the current value and the boundary -- possibly fairest but might not get around to checking the best area
None of these are entirely satisfactory.
John D'Errico
John D'Errico on 23 Feb 2023
I would check the solution that it did find. Are the constraints you removed in some way close to the solution, so those constraints were nearly active? Since you also found that removing the integer preprocessing solved the problem, that should only help speed things up. But it may be that numerical problems may be getting in the way, and have then somehow tightened a constraint so that an integer solution that would have been feasible could no longer be found.

Sign in to comment.

Answers (1)

Shubham
Shubham on 4 May 2023
The error message "Solver stopped prematurely. No integer feasible point found" indicates that the solver was not able to find a feasible solution to the MILP problem. This can happen for a variety of reasons, including numerical issues, infeasible constraints, or solver settings.
Here are some steps you can try to resolve the issue:
  1. Check solver settings: Make sure that the solver settings are appropriate for the problem. For example, you may need to increase the solver tolerance or adjust the branching strategy to improve the search for feasible solutions. You can also try different solvers to see if they are able to find a feasible solution.
  2. Check constraint feasibility: Verify that all constraints are feasible for the problem. Sometimes, constraints can be infeasible due to numerical issues or other reasons. You can use a feasibility checker or constraint validator to identify any infeasible constraints.
  3. Check variable bounds: Verify that all variable bounds are appropriate for the problem. Sometimes, variables can be constrained too tightly, which can make it difficult for the solver to find a feasible solution. You can try relaxing the variable bounds to see if this helps.
  4. Check initial solution: Verify that the initial solution is feasible for the problem. Sometimes, a good initial solution can help the solver to find a feasible solution more quickly. You can try using a heuristic or other method to generate a good initial solution.
  5. Check for modeling errors: Verify that there are no modeling errors in the MILP problem. Sometimes, modeling errors can cause the solver to fail to find a feasible solution. You can use a model checker or other tool to identify any modeling errors.

Categories

Find more on Linear Programming and Mixed-Integer Linear Programming in Help Center and File Exchange

Tags

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!