Overview: Deprecation of Compound Sets
Overview
In May 2018 AIMMS announced a plan to deprecate compound sets in stages. Support for compound sets is fully deprecated since January 1, 2020.
To find out how to identify and remove compound sets from your model without losing functionality, read Prepare for the Deprecation of Compound Sets.
This article provides the following background information:
Definition of Compound Sets in AIMMS
As you may know, a relation \(R\) is a subset of a Cartesian product: \(S_1 \times S_2 \times ... \times S_n\) with \(n \geq 2\), and \(S_1, S_2, ..., S_n\) being one-dimensional sets.
In AIMMS, a compound set, \(C\), is a relation, \(R\), whose attribute form contains the declaration of an index, \(c\) or an element parameter, \(e\). Thus a compound set is a one-dimensional set, and can be ordered.
A compound set allows the use of tags to select components in tuples. Let’s assume \(C\) is declared with the tags \((T_1, T_2, ..., T_n)\). Then you may select component \(i\) of tuple \(c\) using the notation \(c.T_i\).
Reason to Deprecate Compound Sets
There are several technical reasons to deprecate compound sets.
AIMMS created compound sets for root sets with an index or parameter in the set declaration. This causes unexpected behavior in some cases:
When the root sets of two conceptually different compound sets collide, then numbering and ordering of elements is different than expected.
When an index or element parameter is added to the declaration of a relation, the application’s performance may degrade.
Compound sets are implemented differently than other sets and indexing mechanisms. This makes it expensive to support compound sets, especially for components such as:
Database tables and procedures exchanging data with relational databases
You can replace the compound sets with a set mapping, which is a one-dimensional root set and a relation.
This conversion procedure is designed to make minimal changes to your application while:
Maintaining original functionality
Improving efficiency
Producing more predictable behavior
Timeline to Adapt your Model
The deprecation of compound sets was scheduled for January 1, 2020. The deprecation follows a staged timeline:
Release after |
Version |
Description of phase/stage |
---|---|---|
July 1, 2018 |
AIMMS 4.56 |
Attributes ‘index’ or ‘parameter’ not available for relations. (This prevents creating new compound sets.) |
January 1, 2019 |
… |
Error message warns against existing compound sets. |
July 1, 2019 |
… |
Non-critical error message in developer mode for compound sets created. (AIMMS can still present data and execute procedures.) |
January 1, 2020 |
… |
Application will not work when compound sets are present. |