Uncertain Parameters and Uncertainty Constraints
Uncertain parameters
Uncertain parameters are modeled in AIMMS as numeric Parameters for
which the Uncertain property has been set (see also
Parameter Declaration and Attributes). When a parameter has been declared Uncertain
AIMMS will create two new attributes Region and Uncertainty.
The Region attribute
The Region attribute of an uncertain parameter offers an easy way to
define the uncertainty set without the need to introduce additional
uncertain parameters. AIMMS supports a number of predefined regions
which you can enter here:
\({\texttt{Box}}(l,u)\),
\({\texttt{Ellipsoid}}(c,r)\), and
\({\texttt{ConvexHull}}(s, v(s))\).
Box example
If we want to specify that parameter A is uncertain and constrained
as follows:
then it suffices to specify the uncertainty set of A using its
Region attribute as follows
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
Region : Box( l(i,j), u(i,j) );
}
where l(i,j) and u(i,j) are ordinary parameters in your model.
Ellipsoid example
It is also possible to specify the region using an Ellipsoid region
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
Region : Ellipsoid( A.level(i,j), r(i,j) );
}
which leads to an uncertainty set for A defined as an ellipsoid
around the nominal value of A as follows:
ConvexHull example
The region can also be defined as a ConvexHull region
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
Region : ConvexHull( s, A_s(s,i,j) );
}
which says that the uncertain parameter A belongs to an uncertainty
set that is described by the convex hull of the values of a collection
of values A_s for a given set of scenarios, i.e.,
Dependencies
If there are two parameters A and B that both depend on
scenario-dependent data, then those scenarios can either be dependent or
independent. To differentiate between these two possibilities, AIMMS
uses the name of the binding index used in the ConvexHull operator.
If the names of the binding indices are identical, then AIMMS assumes
that the scenarios are dependent. If the index names are different,
even if they refer to the same scenario set, AIMMS assumes the
scenarios to be independent.
Dependent scenarios example
Consider the following two declarations of uncertain parameters
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
Region : ConvexHull( s, A_s(s,i,j) );
}
Parameter B {
IndexDomain : (i,j);
Property : Uncertain;
Region : ConvexHull( s, B_s(s,i,j) );
}
Based on these declarations AIMMS will generate a single convex hull as follows
If A and B consist of a single value each, and there are two
scenarios for s, then the combined convex hull for A and B
is depicted in Fig. 7.
Fig. 7 Combined convex hull for dependent scenarios
Independent scenarios example
If, on the other hand, both declarations are given as
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
Region : ConvexHull( s, A_s(s,i,j) );
}
Parameter B {
IndexDomain : (i,j);
Property : Uncertain;
Region : ConvexHull( t, B_t(t,i,j) );
}
then AIMMS will generate two separate convex hulls as follows
If A and B consist of a single value each, and there are two
scenarios for s and t each, then the combined convex hull for
A and B is depicted in Fig. 8.
Fig. 8 Combined convex hull for independent scenarios
ConvexHullEx
The ConvexHull operator AIMMS can be used to express that an
uncertain parameter is defined as the convex combination of a certain
parameter on some set of scenarios. The ConvexHullEx operator is an
extension for which the user explicitly has to define the “lambda”
parameter as an uncertain parameter. For example:
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
Region : ConvexHullEx( s, A_s(s,i,j), L(s,i) );
}
which says that the uncertain parameter A belongs to an uncertainty
set that is described by the convex hull of the values of a collection
of values A_s for a given set of scenarios using the uncertain
parameter L, i.e.,
More flexibility
The ConvexHullEx operator offers more flexibility as demonstrated by
the above example in which the lambda parameter L depends on the
indices s and i while the implicitly generated lambda
parameter in case of the ConvexHull operator only depends on the
index s. Moreover, the lambda parameter can be used in the
Dependency attribute of an adjustable variable (see
Adjustable Variables). The same lambda parameter can be used
in ConvexHullEx in regions of different uncertain parameters to
define a dependency between the uncertain parameters. As the lambda
parameter is not an ordinary uncertainty parameter, it cannot be used in
uncertainty constraints.
The Uncertainty attribute
Through the Uncertainty attribute of an uncertain parameter you can
define a relation in term of other ordinary and uncertain parameters in
your model which must hold for the uncertain value of that parameter.
Example
Consider the following declaration
Parameter Demand {
IndexDomain : (c,t);
Property : Uncertain;
Uncertainty : Demand.level(c,t) + Sum[k, D(c,t,k) * xi(k)];
}
where D(c,t,k) is an ordinary parameter and xi an uncertain
parameter. The reference to Demand.level in the Uncertainty
attribute refers to the deterministic (or nominal) value of Demand.
The uncertain value of Demand is defined as its nominal value plus a
linear combination of some other uncertain parameter xi(k).
Non-exclusive attributes
Note that the Region and Uncertainty attributes are
non-exclusive, i.e., you can use them in conjuction to each other. In
such a case, AIMMS will make sure that the solution is robust with
respect to both relations.
Uncertainty constraints
The Region and the Uncertainty attribute of a uncertain
parameter can be used to specify possible realizations of the uncertain
parameters. In some cases, however, more flexibility is needed in
specifying special relations for one or more uncertain parameters. For
this purpose AIMMS allows you to specify UncertaintyConstraints. An
UncertaintyConstraint is a constraint that specifies the relation
between uncertain parameters. It is similar to an ordinary constraint in
which the uncertain parameters play the role for variables; the
definition of an UncertaintyConstraint may only refer to normal and
uncertain parameters, and not to variables.
Example
The following example specifies a condition on an uncertain parameter
that cannot be expressed through its Region or Uncertainty
attributes.
Parameter A {
IndexDomain : (i,j);
Property : Uncertain;
}
UncertaintyConstraint ConditionOnA {
IndexDomain : i;
Definition : Sum( j, A(i,j) ) <= 1;
}
The Constraints attribute
Through the Constraint attribute of an UncertaintyConstraint you
can specify to which (normal) constraints the UncertaintyConstraint
should apply. In this way it is possible to use different uncertainty
sets for different constraints. If the Constraints attribute is
empty then the UncertaintyConstraint will be active for all
constraints.
Example
Consider the following declarations
UncertaintyConstraint ConditionOnA {
IndexDomain : i;
Constraints : CapacityRestriction(j) : UncertaintyDependency(i,j);
Definition : Sum( j, A(i,j) ) <= 1;
}
Constraint CapacityRestriction {
IndexDomain : j;
Definition : Sum( i, A(i,j) * Transport(i,j) ) <= Capacity(j);
}
Parameter UncertaintyDependency {
IndexDomain : (i,j);
Definition : 1 $ (i = j);
}
These declarations yield that the uncertainty constraint
ConditionOnA(i) is only active for constraint
CapacityRestriction(j) for all elements j equal to i.
Generalized ellipsoid
Besides linear uncertainty constraints, AIMMS also allows you to
formulate the following uncertainty set for a uncertain parameter
\(\xi\), that generalizes the ellipsoidal uncertainty sets that can
be defined by using the Ellipsoid region:
where \(Q_0\) and \(Q_m\) should be positive semidefinite matrices. If your model contains an ellipsoidal uncertainty constraint then the robust counterpart will become a second-order cone program, except if the ellipsoidal uncertainty constraints are of the form
in which case the robust counterpart will be a linear program.