LotSizingDataModel.Solver 2.0.1
Solver-independent modeling, execution, monitoring and adapter infrastructure.
Loading...
Searching...
No Matches
GlspMicroProductionVariableFamilyBuilder.cs
Go to the documentation of this file.
1using LotSizingDataModel.Core.Relationships;
2using LotSizingDataModel.Instance;
4
6
9{
10 public override string FamilyId => "glspMicroProduction";
11
12 protected override ValueTask BuildFamilyAsync(
13 LotSizingInstance instance,
16 CancellationToken cancellationToken)
17 {
18 (int plantId, var workCenter, var profile) =
20 IReadOnlyList<ProductionRouting> routings =
21 GlspSchedulingData.GetRoutings(instance, plantId, workCenter.Id);
22
23 foreach (var microPeriod in profile.EnumerateMicroPeriods())
24 {
25 foreach (ProductionRouting routing in routings)
26 {
27 cancellationToken.ThrowIfCancellationRequested();
29 context,
30 $"glspX_r{routing.Id}_t{microPeriod.MacroPeriod}_s{microPeriod.MicroPeriodIndex}",
32 plantId, workCenter.Id, routing.Id, routing.ItemId, microPeriod),
33 double.PositiveInfinity,
34 "GLSP production quantity in one micro-period.");
35 }
36 }
37
38 return ValueTask.CompletedTask;
39 }
40}
Provides the shared state required while constructing a solver-independent mathematical model.
static string CreateMicroProductionKey(int plantId, int workCenterId, int routingId, int itemId, ProductionMicroPeriodReference microPeriod)
override ValueTask BuildFamilyAsync(LotSizingInstance instance, MathematicalModelBuildContext context, StandardLotSizingFormulationOptions options, CancellationToken cancellationToken)
static int WorkCenter ProductionSchedulingProfile Profile GetSchedulingWorkCenter(LotSizingInstance instance)
static IReadOnlyList< ProductionRouting > GetRoutings(LotSizingInstance instance, int plantId, int workCenterId)
Configures the standard solver-independent mixed-integer lot-sizing formulation.
Provides common validation and variable-registration helpers for one variable family of the standard ...
static MathematicalVariable AddNonNegativeContinuousVariable(MathematicalModelBuildContext context, string name, string domainKey, double upperBound=double.PositiveInfinity, string description="")
Creates and registers one continuous non-negative variable.