LotSizingDataModel.Solution
2.0.1
Solution objects for production, setup, inventory and related decisions.
Loading...
Searching...
No Matches
ClosedLoopDecision.cs
Go to the documentation of this file.
1
using
System;
2
using
System.Linq;
3
using
System.Xml.Serialization;
4
using
LotSizingDataModel.Core.Common;
5
6
namespace
LotSizingDataModel.Solution.Decisions
;
7
8
[Serializable]
9
[XmlType(TypeName =
"closedLoopDecision"
)]
10
public
sealed
class
ClosedLoopDecision
:
11
ModelObject,
12
IPlanningHorizonAware
13
{
14
private
int
_returnStreamId;
15
private
DoubleTimeSeries _recoveryInputs =
new
();
16
private
DoubleTimeSeries _disposalQuantities =
new
();
17
private
DoubleTimeSeries _recoveredOutputs =
new
();
18
19
public
ClosedLoopDecision
()
20
{
21
}
22
23
public
ClosedLoopDecision
(
24
int
returnStreamId,
25
int
planningHorizon)
26
{
27
if
(returnStreamId <= 0)
28
{
29
throw
new
ArgumentOutOfRangeException(
30
nameof(returnStreamId));
31
}
32
33
ReturnStreamId
= returnStreamId;
34
ResizeTimeSeries
(planningHorizon);
35
}
36
37
[XmlAttribute(
"returnStreamId"
)]
38
public
int
ReturnStreamId
39
{
40
get
=> _returnStreamId;
41
set
42
{
43
if
(value < 0)
44
{
45
throw
new
ArgumentOutOfRangeException(
46
nameof(value));
47
}
48
49
SetProperty(
50
ref _returnStreamId,
51
value);
52
}
53
}
54
55
[XmlElement(
"recoveryInputs"
)]
56
public
DoubleTimeSeries
RecoveryInputs
57
{
58
get
=> _recoveryInputs;
59
set
=> _recoveryInputs =
60
value ??
61
new
DoubleTimeSeries();
62
}
63
64
[XmlElement(
"disposalQuantities"
)]
65
public
DoubleTimeSeries
DisposalQuantities
66
{
67
get
=> _disposalQuantities;
68
set
=> _disposalQuantities =
69
value ??
70
new
DoubleTimeSeries();
71
}
72
73
[XmlElement(
"recoveredOutputs"
)]
74
public
DoubleTimeSeries
RecoveredOutputs
75
{
76
get
=> _recoveredOutputs;
77
set
=> _recoveredOutputs =
78
value ??
79
new
DoubleTimeSeries();
80
}
81
82
[XmlIgnore]
83
public
int
PlanningHorizon
=>
84
RecoveryInputs
.PeriodCount;
85
86
[XmlIgnore]
87
public
bool
HasConsistentPlanningHorizon
=>
88
DisposalQuantities.PeriodCount ==
PlanningHorizon
&&
89
RecoveredOutputs.PeriodCount ==
PlanningHorizon
;
90
91
[XmlIgnore]
92
public
bool
IsInternallyValid
=>
93
ReturnStreamId
> 0 &&
94
PlanningHorizon
> 0 &&
95
HasConsistentPlanningHorizon
&&
96
RecoveryInputs
.All(
97
value =>
98
double
.IsFinite(value) &&
99
value >= 0.0) &&
100
DisposalQuantities
.All(
101
value =>
102
double
.IsFinite(value) &&
103
value >= 0.0) &&
104
RecoveredOutputs
.All(
105
value =>
106
double
.IsFinite(value) &&
107
value >= 0.0);
108
109
public
void
ResizeTimeSeries
(
110
int
periodCount)
111
{
112
if
(periodCount < 0)
113
{
114
throw
new
ArgumentOutOfRangeException(
115
nameof(periodCount));
116
}
117
118
RecoveryInputs
.Resize(
119
periodCount,
120
0.0);
121
122
DisposalQuantities
.Resize(
123
periodCount,
124
0.0);
125
126
RecoveredOutputs
.Resize(
127
periodCount,
128
0.0);
129
}
130
}
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.ReturnStreamId
int ReturnStreamId
Definition
ClosedLoopDecision.cs:39
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.ClosedLoopDecision
ClosedLoopDecision(int returnStreamId, int planningHorizon)
Definition
ClosedLoopDecision.cs:23
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.HasConsistentPlanningHorizon
bool HasConsistentPlanningHorizon
Definition
ClosedLoopDecision.cs:87
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.RecoveryInputs
DoubleTimeSeries RecoveryInputs
Definition
ClosedLoopDecision.cs:57
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.PlanningHorizon
int PlanningHorizon
Definition
ClosedLoopDecision.cs:83
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.ResizeTimeSeries
void ResizeTimeSeries(int periodCount)
Definition
ClosedLoopDecision.cs:109
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.IsInternallyValid
bool IsInternallyValid
Definition
ClosedLoopDecision.cs:92
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.RecoveredOutputs
DoubleTimeSeries RecoveredOutputs
Definition
ClosedLoopDecision.cs:75
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.ClosedLoopDecision
ClosedLoopDecision()
Definition
ClosedLoopDecision.cs:19
LotSizingDataModel.Solution.Decisions.ClosedLoopDecision.DisposalQuantities
DoubleTimeSeries DisposalQuantities
Definition
ClosedLoopDecision.cs:66
LotSizingDataModel.Solution.Decisions
Definition
ClosedLoopDecision.cs:6
LotSizingDataModel.Solution
Decisions
ClosedLoopDecision.cs
Generated by
1.17.0