Quintiq file version 2.0
|
#parent: #root
|
FunctionOverride CalcSeverity
|
{
|
TextBody:
|
[*
|
// mlr7 Oct-10-2020 (created)
|
value := 0.0;
|
if( this.Issue( relsize ) > 0 )
|
{
|
subOpt := this.Suboptimizer();
|
acceptableThreshold := subOpt.AcceptableRollbackThreshold();
|
rollbackPercent := subOpt.RollbackPercent();
|
issueSeverity := average( this, Issue, i, i.Severity() );
|
if( rollbackPercent < acceptableThreshold * 0.5 )
|
{
|
//keep the severity low while below the threshold
|
value := LibOpt_Issue::Severity_2_Low();
|
}
|
else if( rollbackPercent > acceptableThreshold * 1.5 )
|
{
|
//set high severity over 1.5 times the acceptable threshold
|
value := LibOpt_Issue::Severity_4_High();
|
}
|
else
|
{
|
issueSeverity := average( this, Issue, i, i.Severity() );
|
ratio := guard( rollbackPercent / acceptableThreshold, 1.0 );
|
//bound the severity to LB of Low and UB of High so the piecewise function connects
|
value := maxvalue( LibOpt_Issue::Severity_2_Low(), minvalue( LibOpt_Issue::Severity_4_High(), ratio * issueSeverity ) );
|
}
|
}
|
|
this.Severity( value );
|
*]
|
}
|