Class SMICDominance

java.lang.Object
org.ddolib.examples.smic.SMICDominance
All Implemented Interfaces:
Dominance<SMICState>

public class SMICDominance extends Object implements Dominance<SMICState>
The SMICDominance class defines the dominance relation between two states of the SMICState in the context of the Single Machine with Inventory Constraint (SMIC) problem.

Dominance relations are used by search algorithms (such as DDO, A*, or ACS) to prune suboptimal or redundant states during the exploration process. A state s1 is said to be dominated by another state s2 if s2 represents an equivalent or better configuration of the system according to a defined dominance rule.

In this implementation, the dominance rule is defined as follows:

  • Two states are compared only if they have the same set of remaining jobs;
  • Among such states, the one with the smaller (or equal) current time dominates the other, since it reaches the same configuration earlier or at the same time.

This criterion allows pruning of states that would take longer to reach the same remaining set of jobs, improving search efficiency without losing optimality.

See Also:
  • Constructor Details

    • SMICDominance

      public SMICDominance()
  • Method Details

    • getKey

      public Integer getKey(SMICState state)
      Returns a key used to group comparable states.

      In this implementation, all states share the same key (0), meaning that any pair of states can potentially be compared for dominance.

      Specified by:
      getKey in interface Dominance<SMICState>
      Parameters:
      state - the state for which the grouping key is computed
      Returns:
      always 0, as no grouping distinction is applied
    • isDominatedOrEqual

      public boolean isDominatedOrEqual(SMICState state1, SMICState state2)
      Determines whether one state is dominated by or equal to another.

      A state state1 is considered dominated (or equivalent) to state2 if:

      • Both states have the same set of remaining jobs to process;
      • The current time of state2 is less than or equal to that of state1.
      This ensures that the search does not revisit slower or redundant configurations.
      Specified by:
      isDominatedOrEqual in interface Dominance<SMICState>
      Parameters:
      state1 - the state being tested for dominance
      state2 - the state potentially dominating state1
      Returns:
      true if state1 is dominated by or equal to state2, false otherwise