Local Binding vs. Default Binding
In this article we will compare two ways of defining index binding: local binding and default binding.
Assume there are two sets:
1Set s_RootSet {
2 Index: i_rs;
3}
and
1Set s_SubSet {
2 Index: i_ss;
3}
Let’s compare the expressions ( i in MySubSet )
and ( i \| i in MySubSet )
.
When you use (i in MySubSet)
, AIMMS will handle i
as an index in s_Subset
. We say i
is used as local binding in this case.
When you write (i \| i in MySubSet)
, AIMMS will still consider i
as an index of its original set s_RootSet
. We say i
is used as default binding in this case.
In general, using local binding and default binding doesn’t make a difference, but when element ordering is used, such as, ord(i)
, i+1
and i–1
, it will have an impact. For instance, the following statement:
Parameter1(i in MySubSet) := ord(i);
is the same as
Parameter1(i | i in MySubSet) := ord(i,MySubSet );
while
Parameter1(i | i in MySubSet) := ord(i);
is the same as
Parameter1(i | i in MySubSet) := ord(i,RootSet );
So there is a difference between the two only if you use certain functions that are relative to the set. A complete explanation can be found in the section “Index Binding” of AIMMS Language Reference.