24 PenaltyArrayType::iterator penaltyPos = result.begin();
43 return m_MaxConstraintPenalty;
51 params.push_back(parameterID);
65 params.push_back(parameterID);
106 "Error. Cannot get constraint. Invalid constraint index passed.Parameter Invalid index:" 119 "Error. Cannot get constraint. Invalid constraint index passed.Parameter Invalid index:" 146 double constrainedValue = 0;
148 for (ParameterIndexVectorType::const_iterator pos = constraint.
parameters.begin();
151 if (*pos >= parameters.size())
154 "Error. Parameter specified by constraint is no part of the passed parameter values. Invalid parameter ID:" 158 constrainedValue += parameters[*pos];
165 double transformedTermValue = constraint.
barrier - constrainedValue;
170 transformedTermValue *= -1;
173 double barrierSize = std::abs(static_cast<double>(constraint.
width));
176 if (transformedTermValue <= 0)
178 result = this->m_MaxConstraintPenalty;
180 else if (transformedTermValue > barrierSize)
192 double barrierValue = -1 * log(transformedTermValue / barrierSize);
194 result =
std::min(barrierValue, this->m_MaxConstraintPenalty);
unsigned int GetNumberOfConstraints() const override
ParametersType::SizeValueType ParameterIndexType
void SetUpperBarrier(ParameterIndexType parameterID, BarrierValueType barrier, BarrierWidthType width=0.0)
Superclass::PenaltyValueType PenaltyValueType
PenaltyValueType CalcPenalty(const ParametersType ¶meters, const Constraint &constraint) const
std::vector< ParameterIndexType > ParameterIndexVectorType
Superclass::PenaltyArrayType PenaltyArrayType
void SetLowerSumBarrier(const ParameterIndexVectorType ¶meterIDs, BarrierValueType barrier, BarrierWidthType width=0.0)
void SetLowerBarrier(ParameterIndexType parameterID, BarrierValueType barrier, BarrierWidthType width=0.0)
Superclass::PenaltyArrayType PenaltyArrayType
void DeleteConstraint(unsigned int index)
PenaltyArrayType GetPenalties(const ParametersType ¶meters) const override
PenaltyValueType GetFailedConstraintValue() const override
ConstraintVectorType m_Constraints
void SetUpperSumBarrier(const ParameterIndexVectorType ¶meterIDs, BarrierValueType barrier, BarrierWidthType width=0.0)
Superclass::ParametersType ParametersType
Constraint & GetConstraint(unsigned int index)
Superclass::PenaltyValueType PenaltyValueType
ParameterIndexVectorType parameters