LotSizingDataModel.Solver 2.0.1
Solver-independent modeling, execution, monitoring and adapter infrastructure.
Loading...
Searching...
No Matches
InitialInventoryCostObjectiveTermBuilder.cs
Go to the documentation of this file.
1using LotSizingDataModel.Core.Relationships;
2using LotSizingDataModel.Instance;
4
6
7/// <summary>
8/// Adds the period-zero unit cost of variable initial inventory.
9/// </summary>
12{
13 public override string TermFamilyId =>
14 "initialInventoryDecisionCost";
15
16 public override bool IsEnabled(
17 LotSizingInstance instance,
19 {
20 ArgumentNullException.ThrowIfNull(instance);
21 ArgumentNullException.ThrowIfNull(options);
22
23 return instance.SupplyChain.Inventories.Any(
24 inventory =>
25 inventory.InitialInventoryDecisionMode ==
26 InitialInventoryDecisionMode.VariableDecision &&
27 inventory.InitialInventoryDecisionUnitCost > 0.0);
28 }
29
30 protected override ValueTask BuildTermsAsync(
31 LotSizingInstance instance,
33 LinearExpressionBuilder expressionBuilder,
35 CancellationToken cancellationToken)
36 {
37 foreach (Inventory inventory in instance.SupplyChain.Inventories)
38 {
39 cancellationToken.ThrowIfCancellationRequested();
40
41 if (inventory.InitialInventoryDecisionMode !=
42 InitialInventoryDecisionMode.VariableDecision ||
43 inventory.InitialInventoryDecisionUnitCost == 0.0)
44 {
45 continue;
46 }
47
49 context,
50 expressionBuilder,
52 inventory.InitialInventoryDecisionUnitCost);
53 }
54
55 return ValueTask.CompletedTask;
56 }
57}
Provides a fluent builder for linear expressions.
Provides the shared state required while constructing a solver-independent mathematical model.
override string TermFamilyId
Gets the unique identifier of the objective-term family.
override ValueTask BuildTermsAsync(LotSizingInstance instance, MathematicalModelBuildContext context, LinearExpressionBuilder expressionBuilder, StandardLotSizingFormulationOptions options, CancellationToken cancellationToken)
override bool IsEnabled(LotSizingInstance instance, StandardLotSizingFormulationOptions options)
Determines whether this objective-term family is enabled.
Configures the standard solver-independent mixed-integer lot-sizing formulation.
Provides common validation and helper methods for one objective-term family of the standard lot-sizin...
static void AddCostTerm(MathematicalModelBuildContext context, LinearExpressionBuilder expressionBuilder, string domainKey, double coefficient)
Adds one variable cost term to the shared objective.