Class MachineReassignmentConstraintProvider
- java.lang.Object
-
- ai.timefold.solver.examples.machinereassignment.score.MachineReassignmentConstraintProvider
-
- All Implemented Interfaces:
ai.timefold.solver.core.api.score.stream.ConstraintProvider
public class MachineReassignmentConstraintProvider extends Object implements ai.timefold.solver.core.api.score.stream.ConstraintProvider
-
-
Constructor Summary
Constructors Constructor Description MachineReassignmentConstraintProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ai.timefold.solver.core.api.score.stream.ConstraintbalanceCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)availability(r) = capacity(m, r) - usage(m, r) balanceCost = sum(max(0, multiplier * availability(m, r1) - availability(m, r2)))ai.timefold.solver.core.api.score.stream.Constraint[]defineConstraints(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)protected ai.timefold.solver.core.api.score.stream.ConstraintloadCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Load: The safety capacity for each resource for each machine should not be exceeded.protected ai.timefold.solver.core.api.score.stream.ConstraintmachineMoveCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Machine move cost: Moving a process from machine A to machine B has another A-B specific move cost.protected ai.timefold.solver.core.api.score.stream.ConstraintmaximumCapacity(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Maximum capacity: The maximum capacity for each resource for each machine must not be exceeded.protected ai.timefold.solver.core.api.score.stream.ConstraintprocessMoveCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Process move cost: A process has a move cost.protected ai.timefold.solver.core.api.score.stream.ConstraintserviceConflict(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)protected ai.timefold.solver.core.api.score.stream.ConstraintserviceDependency(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Dependency: The processes of a service depending on another service must run in the neighborhood of a process of the other service.protected ai.timefold.solver.core.api.score.stream.ConstraintserviceLocationSpread(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Spread: Processes of the same service must be serviceLocationSpread out across locations.protected ai.timefold.solver.core.api.score.stream.ConstraintserviceMoveCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Service move cost: A service has a move cost.protected ai.timefold.solver.core.api.score.stream.ConstrainttransientUsage(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)Transient usage: Some resources are transient and count towards the maximum capacity of both the original machine as the newly assigned machine.
-
-
-
Method Detail
-
defineConstraints
public ai.timefold.solver.core.api.score.stream.Constraint[] defineConstraints(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
- Specified by:
defineConstraintsin interfaceai.timefold.solver.core.api.score.stream.ConstraintProvider
-
maximumCapacity
protected ai.timefold.solver.core.api.score.stream.Constraint maximumCapacity(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Maximum capacity: The maximum capacity for each resource for each machine must not be exceeded.
-
serviceConflict
protected ai.timefold.solver.core.api.score.stream.Constraint serviceConflict(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
-
serviceLocationSpread
protected ai.timefold.solver.core.api.score.stream.Constraint serviceLocationSpread(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Spread: Processes of the same service must be serviceLocationSpread out across locations.
-
serviceDependency
protected ai.timefold.solver.core.api.score.stream.Constraint serviceDependency(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Dependency: The processes of a service depending on another service must run in the neighborhood of a process of the other service.
-
transientUsage
protected ai.timefold.solver.core.api.score.stream.Constraint transientUsage(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Transient usage: Some resources are transient and count towards the maximum capacity of both the original machine as the newly assigned machine.
-
loadCost
protected ai.timefold.solver.core.api.score.stream.Constraint loadCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Load: The safety capacity for each resource for each machine should not be exceeded.
-
balanceCost
protected ai.timefold.solver.core.api.score.stream.Constraint balanceCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
availability(r) = capacity(m, r) - usage(m, r) balanceCost = sum(max(0, multiplier * availability(m, r1) - availability(m, r2)))
-
processMoveCost
protected ai.timefold.solver.core.api.score.stream.Constraint processMoveCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Process move cost: A process has a move cost.
-
serviceMoveCost
protected ai.timefold.solver.core.api.score.stream.Constraint serviceMoveCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Service move cost: A service has a move cost.
-
machineMoveCost
protected ai.timefold.solver.core.api.score.stream.Constraint machineMoveCost(ai.timefold.solver.core.api.score.stream.ConstraintFactory factory)
Machine move cost: Moving a process from machine A to machine B has another A-B specific move cost.
-
-