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:

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.