LotSizingDataModel.Solver 2.0.1
Solver-independent modeling, execution, monitoring and adapter infrastructure.
Loading...
Searching...
No Matches
GlspSingleSetupStateConstraintFamilyBuilder.cs
Go to the documentation of this file.
1using LotSizingDataModel.Core.Relationships;
2using LotSizingDataModel.Instance;
5
7
10{
11 public override string ConstraintFamilyId => "glspSingleSetupState";
12
13 protected override ValueTask BuildConstraintsAsync(
14 LotSizingInstance instance,
17 CancellationToken cancellationToken)
18 {
19 (int plantId, var workCenter, var profile) =
21 IReadOnlyList<ProductionRouting> routings =
22 GlspSchedulingData.GetRoutings(instance, plantId, workCenter.Id);
23
24 foreach (var microPeriod in profile.EnumerateMicroPeriods())
25 {
26 var expression = new LinearExpressionBuilder();
27 foreach (ProductionRouting routing in routings)
28 {
29 expression.Add(GetVariable(context,
31 plantId, workCenter.Id, routing.Id, routing.ItemId, microPeriod)));
32 }
33
35 context,
36 $"glspSingleSetup_t{microPeriod.MacroPeriod}_s{microPeriod.MicroPeriodIndex}",
37 expression.Build(),
39 1.0,
40 description: "Exactly one setup state is active in every GLSP micro-period.");
41 }
42
43 return ValueTask.CompletedTask;
44 }
45}
Provides a fluent builder for linear expressions.
Provides the shared state required while constructing a solver-independent mathematical model.
static string CreateMicroSetupStateKey(int plantId, int workCenterId, int routingId, int itemId, ProductionMicroPeriodReference microPeriod)
static int WorkCenter ProductionSchedulingProfile Profile GetSchedulingWorkCenter(LotSizingInstance instance)
static IReadOnlyList< ProductionRouting > GetRoutings(LotSizingInstance instance, int plantId, int workCenterId)
override ValueTask BuildConstraintsAsync(LotSizingInstance instance, MathematicalModelBuildContext context, StandardLotSizingFormulationOptions options, CancellationToken cancellationToken)
Provides common validation and helper methods for one constraint family of the standard lot-sizing fo...
static MathematicalVariable GetVariable(MathematicalModelBuildContext context, string domainKey)
Resolves a required variable from its canonical domain key.
static void AddConstraint(MathematicalModelBuildContext context, string name, LinearExpression expression, MathematicalConstraintSense sense, double rightHandSide, string domainKey="", string description="")
Adds one linear constraint to the mathematical model.
Configures the standard solver-independent mixed-integer lot-sizing formulation.
MathematicalConstraintSense
Identifies the relational sense of a mathematical constraint.