2using System.Collections.Generic;
4using System.Xml.Serialization;
13[XmlType(TypeName =
"productionSchedulingProfile")]
23 private int _initialSetupItemId;
25 [XmlAttribute(
"bucketMode")]
29 set => SetProperty(ref _bucketMode, value);
32 [XmlAttribute(
"smallBucketProductionMode")]
35 get => _smallBucketProductionMode;
37 ref _smallBucketProductionMode,
41 [XmlAttribute(
"microPeriodLengthMode")]
44 get => _microPeriodLengthMode;
45 set => SetProperty(ref _microPeriodLengthMode, value);
48 [XmlAttribute(
"microPeriodAssignmentMode")]
51 get => _microPeriodAssignmentMode;
52 set => SetProperty(ref _microPeriodAssignmentMode, value);
55 [XmlAttribute(
"setupCarryOverPolicy")]
58 get => _setupCarryOverPolicy;
59 set => SetProperty(ref _setupCarryOverPolicy, value);
66 [XmlAttribute(
"initialSetupItemId")]
69 get => _initialSetupItemId;
74 throw new ArgumentOutOfRangeException(
77 "The initial setup item identifier cannot be negative.");
80 SetProperty(ref _initialSetupItemId, value);
84 [XmlElement(
"microPeriodCount")]
91 [XmlElement(
"maximumSetupCount")]
98 [XmlElement(
"maximumProducedItemCount")]
105 [XmlArray(
"changeovers")]
106 [XmlArrayItem(
"changeover")]
125 changeover.ChangeoverTime is not
null);
131 changeover.ChangeoverCost is not
null);
155 parameter => parameter.GetCount);
213 changeover.PlanningHorizon > 0);
225 EnumeratePlanningHorizons()
226 .Where(value => value > 0)
231 horizons.Length <= 1 &&
234 changeover.HasConsistentPlanningHorizon);
242 throw new ArgumentOutOfRangeException(
245 "The planning horizon cannot be negative.");
263 public IEnumerable<ProductionMicroPeriodReference>
271 for (
int macroPeriod = 1;
278 for (
int microPeriodIndex = 1;
279 microPeriodIndex <= count;
290 private static int GetMaximumValue<T>(
292 Func<T, Func<int, int>> accessorFactory)
297 parameter.PlanningHorizon <= 0)
302 Func<int, int> accessor =
303 accessorFactory(parameter);
308 parameter.PlanningHorizon)
312 private IEnumerable<int> EnumeratePlanningHorizons()
330 ProductionChangeover changeover
333 if (changeover.PlanningHorizon > 0)
335 yield
return changeover.PlanningHorizon;
Base class for model objects that notify listeners when one of their properties changes.
virtual void OnPropertyChanged([CallerMemberName] string? propertyName=null)
Raises the PropertyChanged event.
int PlanningHorizon
Gets the number of planning periods represented by this parameter.
One ordered setup-state transition on a work center.
int PlanningHorizon
Gets the number of planning periods currently represented by the object's time-dependent data.
void ResizeTimeSeries(int periodCount)
Resizes every time-dependent series contained in the object.
Scheduling semantics attached to one production work center.
MicroPeriodCount? MicroPeriodCount
bool HasInitialSetupState
SmallBucketProductionMode SmallBucketProductionMode
MaximumProducedItemCount? MaximumProducedItemCount
bool HasExplicitMicroPeriodGrid
int InitialSetupItemId
Item whose setup state is present before the first modeled bucket. Zero means that no initial setup s...
SchedulingBucketMode BucketMode
bool HasConsistentPlanningHorizon
int TotalMicroPeriodCount
int PlanningHorizon
Gets the number of planning periods currently represented by the object's time-dependent data.
MicroPeriodLengthMode MicroPeriodLengthMode
IEnumerable< ProductionMicroPeriodReference > EnumerateMicroPeriods()
bool HasSequenceDependentChangeoverTimes
int MaximumMicroPeriodCountPerMacroPeriod
bool HasMaximumProducedItemCountConstraint
bool HasSingleItemPerMicroPeriod
int MaximumProducedItemCountPerBucket
MaximumSetupCount? MaximumSetupCount
void ResizeTimeSeries(int periodCount)
Resizes every time-dependent series contained in the object.
MicroPeriodAssignmentMode MicroPeriodAssignmentMode
bool HasVariableLengthMicroPeriods
bool HasSequenceDependentChangeoverCosts
bool HasVariableMicroPeriodCount
SetupCarryOverPolicy SetupCarryOverPolicy
int MaximumSetupTransitionsPerBucket
List< ProductionChangeover > Changeovers
Defines a model object containing data indexed by planning period.
int PlanningHorizon
Gets the number of planning periods currently represented by the object's time-dependent data.
SchedulingBucketMode
Time-bucket structure used by an integrated lot-sizing and scheduling description.
@ MacroMicro
Each planning macro-period is subdivided into explicit micro-periods, as in GLSP-style time structure...