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.
1
using
LotSizingDataModel.Core.Relationships;
2
using
LotSizingDataModel.Instance;
3
using
LotSizingDataModel.Solver.Building
;
4
5
namespace
LotSizingDataModel.Solver.Formulation
;
6
7
/// <summary>
8
/// Adds the period-zero unit cost of variable initial inventory.
9
/// </summary>
10
public
sealed
class
InitialInventoryCostObjectiveTermBuilder
:
11
StandardLotSizingObjectiveTermBuilderBase
12
{
13
public
override
string
TermFamilyId
=>
14
"initialInventoryDecisionCost"
;
15
16
public
override
bool
IsEnabled
(
17
LotSizingInstance instance,
18
StandardLotSizingFormulationOptions
options)
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,
32
MathematicalModelBuildContext
context,
33
LinearExpressionBuilder
expressionBuilder,
34
StandardLotSizingFormulationOptions
options,
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
48
AddCostTerm
(
49
context,
50
expressionBuilder,
51
InitialInventoryDecisionDomainKeyFactory
.
Create
(inventory),
52
inventory.InitialInventoryDecisionUnitCost);
53
}
54
55
return
ValueTask.CompletedTask;
56
}
57
}
LotSizingDataModel.Solver.Building.LinearExpressionBuilder
Provides a fluent builder for linear expressions.
Definition
LinearExpressionBuilder.cs:10
LotSizingDataModel.Solver.Building.MathematicalModelBuildContext
Provides the shared state required while constructing a solver-independent mathematical model.
Definition
MathematicalModelBuildContext.cs:18
LotSizingDataModel.Solver.Formulation.InitialInventoryCostObjectiveTermBuilder
Adds the period-zero unit cost of variable initial inventory.
Definition
InitialInventoryCostObjectiveTermBuilder.cs:12
LotSizingDataModel.Solver.Formulation.InitialInventoryCostObjectiveTermBuilder.TermFamilyId
override string TermFamilyId
Gets the unique identifier of the objective-term family.
Definition
InitialInventoryCostObjectiveTermBuilder.cs:13
LotSizingDataModel.Solver.Formulation.InitialInventoryCostObjectiveTermBuilder.BuildTermsAsync
override ValueTask BuildTermsAsync(LotSizingInstance instance, MathematicalModelBuildContext context, LinearExpressionBuilder expressionBuilder, StandardLotSizingFormulationOptions options, CancellationToken cancellationToken)
Definition
InitialInventoryCostObjectiveTermBuilder.cs:30
LotSizingDataModel.Solver.Formulation.InitialInventoryCostObjectiveTermBuilder.IsEnabled
override bool IsEnabled(LotSizingInstance instance, StandardLotSizingFormulationOptions options)
Determines whether this objective-term family is enabled.
Definition
InitialInventoryCostObjectiveTermBuilder.cs:16
LotSizingDataModel.Solver.Formulation.InitialInventoryDecisionDomainKeyFactory
Definition
InitialInventoryDecisionDomainKeyFactory.cs:8
LotSizingDataModel.Solver.Formulation.InitialInventoryDecisionDomainKeyFactory.Create
static string Create(Inventory inventory)
Definition
InitialInventoryDecisionDomainKeyFactory.cs:9
LotSizingDataModel.Solver.Formulation.StandardLotSizingFormulationOptions
Configures the standard solver-independent mixed-integer lot-sizing formulation.
Definition
StandardLotSizingFormulationOptions.cs:10
LotSizingDataModel.Solver.Formulation.StandardLotSizingObjectiveTermBuilderBase
Provides common validation and helper methods for one objective-term family of the standard lot-sizin...
Definition
StandardLotSizingObjectiveTermBuilderBase.cs:17
LotSizingDataModel.Solver.Formulation.StandardLotSizingObjectiveTermBuilderBase.AddCostTerm
static void AddCostTerm(MathematicalModelBuildContext context, LinearExpressionBuilder expressionBuilder, string domainKey, double coefficient)
Adds one variable cost term to the shared objective.
Definition
StandardLotSizingObjectiveTermBuilderBase.cs:155
LotSizingDataModel.Solver.Building
Definition
InventoryBalanceConstraintBuilder.cs:5
LotSizingDataModel.Solver.Formulation
Definition
BacklogCostObjectiveTermBuilder.cs:9
LotSizingDataModel.Solver
Formulation
InitialInventoryCostObjectiveTermBuilder.cs
Generated by
1.17.0