2using System.Collections.Generic;
4using System.Xml.Serialization;
14[XmlType(TypeName =
"optimizationObjectivePolicy")]
21 [XmlAttribute(
"aggregationMode")]
24 get => _aggregationMode;
30 [XmlArray(
"criteria")]
31 [XmlArrayItem(
"criterion")]
32 public List<OptimizationObjectiveCriterion>
Criteria
41 criterion is not
null &&
57 candidate is not
null &&
67 return criterion?.
Kind ??
78 criterion is not
null &&
82 if (enabled.Length == 0)
84 throw new InvalidOperationException(
85 "An objective policy must contain at least one enabled " +
95 throw new InvalidOperationException(
96 "Enabled objective criteria require a known criterion kind.");
108 throw new InvalidOperationException(
109 "Enabled objective criterion kinds must be unique.");
117 throw new InvalidOperationException(
118 "Single objective aggregation requires exactly one enabled " +
126 enabled.Length < 2 ||
129 criterion.Weight == 0.0)
132 throw new InvalidOperationException(
133 "Weighted-sum aggregation requires at least two enabled " +
134 "criteria and at least one positive weight.");
141 enabled.Length < 2 ||
151 throw new InvalidOperationException(
152 "Lexicographic aggregation requires at least two enabled " +
153 "criteria with distinct priorities.");
Base class for model objects that notify listeners when one of their properties changes.
Declares one business optimization criterion in an objective policy.
OptimizationObjectiveKind Kind
Declares the business objective policy independently from any particular mathematical scalarization i...
List< OptimizationObjectiveCriterion > Criteria
OptimizationObjectiveKind PrimaryObjectiveKind
bool HasMultipleEnabledCriteria
ObjectiveAggregationMode AggregationMode
int EnabledCriterionCount
OptimizationObjectiveKind
Business-level optimization criterion family.
ObjectiveAggregationMode
Policy used to combine several enabled optimization criteria.