LotSizingDataModel.Solver 2.0.1
Solver-independent modeling, execution, monitoring and adapter infrastructure.
Loading...
Searching...
No Matches
StandardFormulationVariableKeyFactory.cs
Go to the documentation of this file.
1using System;
2using LotSizingDataModel.Core.PhysicalModel;
5
7
8/// <summary>
9/// Creates canonical variable domain keys used by the standard
10/// formulation constraint builders.
11/// </summary>
13{
14 /// <summary>
15 /// Creates an inventory-like key for an item, warehouse,
16 /// period, and decision category.
17 /// </summary>
18 public static string CreateInventoryKey(
19 string category,
20 int itemId,
21 WarehouseReference warehouse,
22 int period)
23 {
24 ArgumentException.ThrowIfNullOrWhiteSpace(category);
25 ArgumentNullException.ThrowIfNull(warehouse);
26
27 var builder =
29 .Add(
31 itemId);
32
34 builder,
35 warehouse);
36
37 return builder
38 .Add(
40 period)
41 .Build();
42 }
43
44 /// <summary>
45 /// Creates a distribution decision key.
46 /// </summary>
47 public static string CreateDistributionKey(
48 string category,
49 int distributionCenterId,
50 int itemId,
51 WarehouseReference warehouse,
52 int period)
53 {
54 ArgumentException.ThrowIfNullOrWhiteSpace(category);
55 ArgumentNullException.ThrowIfNull(warehouse);
56
57 var builder =
59 .Add(
61 distributionCenterId)
62 .Add(
64 itemId);
65
67 builder,
68 warehouse);
69
70 return builder
71 .Add(
73 period)
74 .Build();
75 }
76
77 /// <summary>
78 /// Creates a production decision key.
79 /// </summary>
80 public static string CreateProductionKey(
81 int routingId,
82 int period)
83 {
86 .Add(
88 routingId)
89 .Add(
91 period)
92 .Build();
93 }
94
95 /// <summary>
96 /// Creates a procurement decision key.
97 /// </summary>
98 public static string CreateProcurementKey(
99 int supplierId,
100 int itemId,
101 WarehouseReference destination,
102 int period)
103 {
104 ArgumentNullException.ThrowIfNull(destination);
105
106 var builder =
109 .Add(
111 supplierId)
112 .Add(
114 itemId);
115
117 builder,
118 destination);
119
120 return builder
121 .Add(
123 period)
124 .Build();
125 }
126
127 /// <summary>
128 /// Creates a transport quantity decision key.
129 /// </summary>
130 public static string CreateTransportKey(
131 int itemId,
132 int transportResourceId,
133 WarehouseReference origin,
134 WarehouseReference destination,
135 int period)
136 {
137 ArgumentNullException.ThrowIfNull(origin);
138 ArgumentNullException.ThrowIfNull(destination);
139
140 var builder =
143 .Add(
145 itemId)
146 .Add(
148 transportResourceId);
149
151 builder,
152 origin);
153
155 builder,
156 destination);
157
158 return builder
159 .Add(
161 period)
162 .Build();
163 }
164}
Builds stable business-domain keys for mathematical variables and constraints.
MathematicalDomainKeyBuilder Add(string name, string value)
Adds a text segment.
Creates canonical domain-key fragments shared by standard formulation builders and provides warehouse...
static MathematicalDomainKeyBuilder AddWarehouse(MathematicalDomainKeyBuilder builder, WarehouseReference warehouse)
Adds a warehouse reference using the generic warehouse or plant segment.
static MathematicalDomainKeyBuilder AddDestinationWarehouse(MathematicalDomainKeyBuilder builder, WarehouseReference warehouse)
Adds a destination warehouse reference.
static MathematicalDomainKeyBuilder AddOriginWarehouse(MathematicalDomainKeyBuilder builder, WarehouseReference warehouse)
Adds an origin warehouse reference.
Creates canonical variable domain keys used by the standard formulation constraint builders.
static string CreateProductionKey(int routingId, int period)
Creates a production decision key.
static string CreateTransportKey(int itemId, int transportResourceId, WarehouseReference origin, WarehouseReference destination, int period)
Creates a transport quantity decision key.
static string CreateProcurementKey(int supplierId, int itemId, WarehouseReference destination, int period)
Creates a procurement decision key.
static string CreateInventoryKey(string category, int itemId, WarehouseReference warehouse, int period)
Creates an inventory-like key for an item, warehouse, period, and decision category.
static string CreateDistributionKey(string category, int distributionCenterId, int itemId, WarehouseReference warehouse, int period)
Creates a distribution decision key.
Provides the canonical mathematical domain-key categories used to identify lot-sizing decision famili...
const string Production
Identifies production-quantity decision variables.
const string Transport
Identifies transported-quantity decision variables.
const string Procurement
Identifies supplier-procurement decision variables.
Provides the canonical mathematical domain-key segment names used by lot-sizing variables and constra...
const string DistributionCenter
Distribution-center identifier segment.
const string TransportResource
Transport-resource identifier segment.