44 double lower()
const {
return lower_; }
45 void setLower(
double lower) { lower_ = lower; }
47 double upper()
const {
return upper_; }
48 void setUpper(
double upper) { upper_ = upper; }
50 int steps()
const {
return steps_; }
51 void setSteps(
int steps) { steps_ = steps; }
53 Expr* expr()
const {
return expr_.get(); }
54 void setExpr(
Expr* expr) { expr_ = expr; }
57 void generateValueList();
59 const std::vector<double>& values()
const {
return values_; }
60 std::vector<double>& values() {
return values_; }
62 errc_t getValue(
double& value)
const;
63 errc_t setValue(
double value);
70 std::vector<double> values_{};
85 bool useLower()
const {
return useLower_; }
86 void setUseLower(
bool useLower) { useLower_ = useLower; }
88 bool useUpper()
const {
return useUpper_; }
89 void setUseUpper(
bool useUpper) { useUpper_ = useUpper; }
91 bool exclude()
const {
return exclude_; }
92 void setExclude(
bool exclude) { exclude_ = exclude; }
94 double lower()
const {
return lower_; }
95 void setLower(
double lower) { lower_ = lower; }
97 double upper()
const {
return upper_; }
98 void setUpper(
double upper) { upper_ = upper; }
100 Expr* expr()
const {
return expr_.get(); }
101 void setExpr(
Expr* expr) { expr_ = expr; }
103 errc_t getValue(
double& value)
const;
122 using VariableList = std::vector<SharedPtr<VariableType>>;
123 using ConstraintList = std::vector<SharedPtr<ConstraintType>>;
128 errc_t execute()
override;
130 VariableList& variables() {
return variables_; }
131 const VariableList& variables()
const {
return variables_; }
133 ConstraintList& constraints() {
return constraints_; }
134 const ConstraintList& constraints()
const {
return constraints_; }
143 void addVariable(VariableType* variable);
146 void removeVariable(VariableType* variable);
149 void addConstraint(ConstraintType* constraint);
152 void removeConstraint(ConstraintType* constraint);
155 int totalRuns()
const;
158 void stepIndexToVarIndices(
int stepIndex, std::vector<int>& indices)
const;
161 errc_t executeStep(
int stepIndex,
bool& isFeasible);
165 ConstraintList constraints_{};
166 mutable WeakPtr<Command> relatedCommand_{};