Package org.ddolib.examples.misp
Class MispLnsMain
java.lang.Object
org.ddolib.examples.misp.MispLnsMain
Entry point for solving the Maximum Independent Set Problem (MISP)
using a Large Neighborhood Search (LNS) approach combined with
Decision Diagram Optimization (DDO).
The Maximum Independent Set problem consists in selecting a largest possible subset of vertices in a graph such that no two selected vertices are adjacent. In other words, the selected vertices form an independent set.
This class demonstrates how to:
- Load a graph instance (in DOT format)
- Define a
LnsModelwith problem-specific components - Use a lower bound heuristic to guide the search
- Apply dominance rules to prune suboptimal states
- Run a Large Neighborhood Search (LNS) optimization
- Print intermediate and final solutions
Execution
The program accepts an optional command-line argument specifying the path to a MISP instance file. If not provided, a default instance is loaded from:
data/MISP/tadpole_4_2.dot
Model Components
MispProblem– defines the graph structureMispFastLowerBound– provides a fast lower bound on the independent set sizeMispDominance– defines dominance relations between statesSimpleDominanceChecker– applies dominance pruningMispRanking– ranks states during decision diagram compilation
Search Configuration
- Search strategy: Large Neighborhood Search (LNS)
- Time limit: 100 milliseconds
No width heuristic is explicitly specified, so default behavior (if provided by the framework) is used.
Output
The program prints:
- Intermediate solutions during the search
- Final solution statistics
- The best independent set found
- See Also:
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
MispLnsMain
public MispLnsMain()
-
-
Method Details
-
main
Main entry point of the program.Loads a Maximum Independent Set instance, configures the LNS model with problem-specific heuristics and dominance rules, and runs the optimization process.
- Parameters:
args- optional command-line arguments:args[0]– path to the MISP instance file
- Throws:
IOException- if the instance file cannot be read
-