4using System.Threading.Tasks;
5using LotSizingDataModel.Core.PhysicalModel;
6using LotSizingDataModel.Core.Relationships;
7using LotSizingDataModel.Instance;
31 LotSizingInstance instance,
34 ArgumentNullException.ThrowIfNull(instance);
35 ArgumentNullException.ThrowIfNull(options);
38 options.IncludeTransport &&
39 options.IncludeAdditionalCapacity &&
40 instance.SupplyChain.TransportCharacteristics.Any(
42 characteristic.AdditionalCapacity is not
null);
49 LotSizingInstance instance,
52 CancellationToken cancellationToken)
55 instance.PlanningHorizon;
58 TransportCharacteristic characteristic
59 in instance.SupplyChain.TransportCharacteristics)
61 if (characteristic.AdditionalCapacity is
null)
66 TransportResource resource =
67 instance.SupplyChain.TransportResources
71 characteristic.TransportResourceId)
72 ??
throw new InvalidOperationException(
73 $
"Transport resource " +
74 $
"{characteristic.TransportResourceId} " +
78 AssignedTransportLane lane
79 in instance.SupplyChain.GetTransportLanes(resource.Id))
83 period <= planningHorizon;
86 cancellationToken.ThrowIfCancellationRequested();
89 characteristic.AdditionalCapacity[period];
101 .TransportAdditionalCapacity,
102 characteristic.ItemId,
112 $
"OT_i{characteristic.ItemId}_r{resource.Id}" +
113 $
"_l{lane.Id}_t{period}",
116 $
"Additional transport capacity for item " +
117 $
"{characteristic.ItemId}, resource " +
118 $
"{resource.Id}, period {period}.");
123 return ValueTask.CompletedTask;
130 TransportResource resource,
131 AssignedTransportLane lane)
Builds stable business-domain keys for mathematical variables and constraints.
MathematicalDomainKeyBuilder Add(string name, string value)
Adds a text segment.
Provides the shared state required while constructing a solver-independent mathematical model.
Creates canonical domain-key fragments shared by standard formulation builders and provides warehouse...
static MathematicalDomainKeyBuilder AddDestinationWarehouse(MathematicalDomainKeyBuilder builder, WarehouseReference warehouse)
Adds a destination warehouse reference.
static MathematicalDomainKeyBuilder AddOriginWarehouse(MathematicalDomainKeyBuilder builder, WarehouseReference warehouse)
Adds an origin warehouse reference.
Provides the canonical mathematical domain-key categories used to identify lot-sizing decision famili...
const string TransportAdditionalCapacity
Identifies item-specific additional transport-capacity decision variables.
Provides the canonical mathematical domain-key segment names used by lot-sizing variables and constra...
const string TransportResource
Transport-resource identifier segment.
const string Item
Item or product identifier segment.
const string Period
Period index segment.