Package org.ddolib.examples.smic
Class SMICFastLowerBound
java.lang.Object
org.ddolib.examples.smic.SMICFastLowerBound
- All Implemented Interfaces:
FastLowerBound<SMICState>
The
SMICFastLowerBound class provides a fast and simple estimation
of the lower bound of the remaining cost (or completion time) in the
Single Machine with Inventory Constraint (SMIC) scheduling problem.
This lower bound is computed based on the processing times and release dates of the remaining jobs to be scheduled in a given state of the search process. It is intended to provide a quick and computationally inexpensive approximation to guide search algorithms such as DDO (Decision Diagram Optimization) or ACS (Anytime Column Search).
Computation principle:
- The method accumulates the total processing time of all remaining jobs.
- It also identifies the earliest release time among these jobs.
- The lower bound is then the sum of these processing times plus a correction based on the difference between the earliest release date and the current time.
The bound does not attempt to be exact but rather provides a quick estimation to help pruning suboptimal branches in the search tree.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionSMICFastLowerBound(SMICProblem problem) Constructs a fast lower bound estimator for the given SMIC problem. -
Method Summary
Modifier and TypeMethodDescriptiondoublefastLowerBound(SMICState state, Set<Integer> variables) Computes a fast lower bound for the current search state.
-
Constructor Details
-
SMICFastLowerBound
Constructs a fast lower bound estimator for the given SMIC problem.- Parameters:
problem- theSMICProbleminstance containing job data such as processing times and release dates
-
-
Method Details
-
fastLowerBound
Computes a fast lower bound for the current search state.The lower bound is estimated as:
LB = (min(0, minRelease - currentTime)) + sum(processingTimes)where:minReleaseis the smallest release time among the remaining jobs,currentTimeis the current machine time in the state,sum(processingTimes)is the total processing time of all remaining jobs.
- Specified by:
fastLowerBoundin interfaceFastLowerBound<SMICState>- Parameters:
state- the currentSMICState, representing the partial schedulevariables- the set of remaining decision variables (unused in this heuristic)- Returns:
- a lower bound estimate of the remaining cost or completion time
-