LotSizingDataModel.Core 2.0.1
Core domain model, shared abstractions and XML-serializable entities.
Loading...
Searching...
No Matches
AdditionalCapacityCost.cs
Go to the documentation of this file.
1using System;
2using System.Xml.Serialization;
5
7
8/// <summary>
9/// Represents the unit cost incurred when one unit of additional
10/// capacity is used during a planning period.
11///
12/// Corresponds to the UML class "Cout capacite supplementaire".
13/// Its values correspond to COV[t] in the source model.
14/// </summary>
15[Serializable]
16[XmlType(TypeName = "additionalCapacityCost")]
17public sealed class AdditionalCapacityCost :
19{
20 /// <summary>
21 /// Initializes an empty additional-capacity-cost parameter.
22 ///
23 /// This public parameterless constructor is required
24 /// by <see cref="XmlSerializer"/>.
25 /// </summary>
27 {
28 }
29
30 /// <summary>
31 /// Initializes an additional-capacity-cost parameter for
32 /// the specified planning horizon.
33 ///
34 /// Every planning period is initially assigned a unit cost
35 /// of zero.
36 /// </summary>
37 /// <param name="planningHorizon">
38 /// Number of periods in the planning horizon.
39 /// </param>
40 public AdditionalCapacityCost(int planningHorizon)
41 : base(
42 planningHorizon,
43 defaultValue: 0.0) // Initialize all periods with zero additional capacity unit cost
44 {
45 }
46
47 /// <summary>
48 /// Initializes an additional-capacity-cost parameter and
49 /// assigns the same unit cost to every planning period.
50 /// </summary>
51 /// <param name="planningHorizon">
52 /// Number of periods in the planning horizon.
53 /// </param>
54 /// <param name="defaultUnitCost">
55 /// Additional-capacity unit cost initially assigned
56 /// to every planning period.
57 /// </param>
59 int planningHorizon,
60 double defaultUnitCost)
61 : base(
62 planningHorizon,
63 defaultUnitCost) // Initialize all periods with the specified unit cost
64 {
65 }
66
67 /// <summary>
68 /// Gets the complete additional-capacity unit-cost series.
69 ///
70 /// This property is an alias for <see cref="LotSizingDataModel.Core.DecisionModel.DoubleTimeSeriesParameter.Values"/>
71 /// and is not serialized separately.
72 /// </summary>
73 [XmlIgnore]
75 Values;
76
77 /// <summary>
78 /// Gets the cost of using one unit of additional capacity
79 /// during a planning period.
80 /// </summary>
81 /// <param name="period">
82 /// One-based planning-period number.
83 /// </param>
84 public double GetUnitCost(int period)
85 {
86 return GetValue(period);
87 }
88
89 /// <summary>
90 /// Sets the cost of using one unit of additional capacity
91 /// during a planning period.
92 /// </summary>
93 /// <param name="period">
94 /// One-based planning-period number.
95 /// </param>
96 /// <param name="unitCost">
97 /// Non-negative finite cost per unit of additional capacity.
98 /// </param>
99 public void SetUnitCost(
100 int period,
101 double unitCost)
102 {
103 SetValue(period, unitCost);
104 }
105
106 /// <summary>
107 /// Validates an additional-capacity unit cost.
108 /// </summary>
109 protected override void ValidateValue(
110 double value,
111 string parameterName)
112 {
113 // First validate that the value is finite (base class validation)
114 base.ValidateValue(value, parameterName);
115
116 // Then validate that the additional capacity unit cost is non-negative
117 if (value < 0.0)
118 {
119 throw new ArgumentOutOfRangeException(
120 parameterName,
121 value,
122 "An additional-capacity unit cost cannot be negative.");
123 }
124 }
125}
Represents a sequence of finite double values indexed by planning period.
AdditionalCapacityCost(int planningHorizon, double defaultUnitCost)
Initializes an additional-capacity-cost parameter and assigns the same unit cost to every planning pe...
AdditionalCapacityCost(int planningHorizon)
Initializes an additional-capacity-cost parameter for the specified planning horizon.
AdditionalCapacityCost()
Initializes an empty additional-capacity-cost parameter.
void SetUnitCost(int period, double unitCost)
Sets the cost of using one unit of additional capacity during a planning period.
double GetUnitCost(int period)
Gets the cost of using one unit of additional capacity during a planning period.
DoubleTimeSeries UnitCostByPeriod
Gets the complete additional-capacity unit-cost series.
override void ValidateValue(double value, string parameterName)
Validates an additional-capacity unit cost.
DoubleTimeSeriesParameter()
Initializes an empty period-dependent parameter.
double GetValue(int period)
Gets the parameter value for a planning period.
DoubleTimeSeries Values
Gets or sets the values of the parameter for all planning periods.
void SetValue(int period, double value)
Sets the parameter value for a planning period.