1using LotSizingDataModel.Core.DecisionModel.Scheduling;
2using LotSizingDataModel.Instance;
17 "plspSetupTransitionLimit";
20 LotSizingInstance instance,
23 CancellationToken cancellationToken)
25 ProductionSchedulingProfile profile =
26 instance.SupplyChain.WorkCenters
29 workCenter.SchedulingProfile is not
null)
32 MaximumSetupCount limit =
33 profile.MaximumSetupCount ??
34 throw new InvalidOperationException(
35 "Executable PLSP requires MaximumSetupCount.");
39 period <= instance.PlanningHorizon;
42 if (limit.GetCount(period) != 0)
49 in instance.SupplyChain.ProductionRoutings)
53 $
"plspNoSetupTransition_r{routing.Id}_t{period}",
71 "A zero transition limit preserves the incoming PLSP setup state.");
75 return ValueTask.CompletedTask;
78 private static string SetupKey(
Provides a fluent builder for linear expressions.
LinearExpressionBuilder Subtract(MathematicalVariable variable, double coefficient=1.0)
Subtracts a variable term from the expression.
LinearExpression Build(bool clone=true)
Builds and validates the linear expression.
Builds stable business-domain keys for mathematical variables and constraints.
string Build()
Builds the immutable domain-key text.
MathematicalDomainKeyBuilder Add(string name, string value)
Adds a text segment.
Provides the shared state required while constructing a solver-independent mathematical model.
Provides the canonical mathematical domain-key categories used to identify lot-sizing decision famili...
const string Setup
Identifies production setup decision variables.
Provides the canonical mathematical domain-key segment names used by lot-sizing variables and constra...
const string Routing
Routing identifier segment.
const string Period
Period index segment.
MathematicalConstraintSense
Identifies the relational sense of a mathematical constraint.