Set#
- class Set#
The Set object stores the information regarding a set in the algebraic model.
It can be indexed or simple. In case of simple sets, its members are accessible from this object, through methods like
Set.getValues
or asSet
.
If it is indexed, the single sets, represented as SetInstance
are accessible through the function Set.get
.
Data can be assigned to the set via Set.setValues
and SetInstance.setValues
get#
- classmethod Set.get()#
Syntax#
v = get()
v = get(key)
Description#
v = get()
returns the SetInstance (only for not indexed sets)
v = get(key)
returns the SetInstance corresponding to the specified key
Note that the same effect can be achieved using MATLAB’s indexing operator (round brackets).
Input Arguments#
key
The key of the set instance to look up.
Output Arguments#
v
The specified set instance (
SetInstance
)
Example#
Create an indexed set and get an instance
ampl.eval('set A{1..2}; let A[1] := {''a'', ''b''};');
A = ampl.getSet('A');
setinstance = A.get(1);
cell(setinstance.asStrings())
gives:
ans =
'a'
'b'
getValues#
- classmethod Set.getValues()#
Syntax#
df = v.getValues()
Description#
v.getValues()
This functions return a dataframe with all the values of
the set, decoupled from the underlying AMPL.
To gain access to the data, see DataFrame
.
Output Arguments#
df
A dataframe containing all the values in the set
Example#
Create an AMPL set and get its values in a dataframe
ampl.eval('set A{1..2}; let A[1] := {''a'', ''b''}; let A[2] := {''c'', ''d''};');
A = ampl.getSet('A');
df = A.getValues();
df
gives:
df =
1 .. 2 | A
1.0 | [a, b]
2.0 | [c, d]
asSet()#
- classmethod Set.asSet()#
Syntax#
v = set.asSet()
Description#
v = set.asSet()
Get a copy of the elements in this set as a java Set of Objects (Strings and double numbers). Valid only for not indexed sets.
Output Arguments#
v
Get a copy of the elements in this set as a java Set of Objects (Strings and double numbers).
Example#
Create a set in AMPL and get it as a Java Set.
ampl.eval('set A := 2000..2020 by 5;');
A = ampl.getSet('A');
A = s.asSet()
gives:
set =
[2000.0, 2005.0, 2010.0, 2015.0, 2020.0]
setValues()#
- classmethod Set.setValues()#
Syntax#
set.setValues(members)
Description#
v = set.setValues(members)
Assign data to this set instance.
Input Arguments#
members
List of strings and numbers which represent the members of this set.
For multidimensional sets, each item of the
members
list must be either a cell array or a Tuple representing each item.
Example#
Create a set in AMPL and assign some data to it from MATLAB
ampl.eval('set A;');
s = ampl.getSet('A').get();
s.setValues({4.2, '4.2', 'a', 'b'});
s.asSet
gives:
ans =
[4.2, 4.2, a, b]
Example: multidimensional sets#
Create a multidimensional set in AMPL and assign some data to it from MATLAB, using Tuples and using cell arrays.
ampl.eval('set A dimen 2;');
A = ampl.getSet('A').get();
A.setValues( {1, 'a'}, {2, 'b'});
A
% Alternative way, with tuples
ampl.eval('set B dimen 2;');
B = ampl.getSet('B').get();
t1 = Tuple(1, 'a');
t2 = Tuple(2, 'b');
B.setValues(t1, t2);
B
gives:
A =
set A = {(1.0,'a'), (2.0,'b')};
B =
set B = {(1.0,'a'), (2.0,'b')};
contains()#
- classmethod Set.contains()#
Syntax#
b = set.contains(member)
b = set.containsAll(members)
Description#
b = set.contains(member)
Checks whether the set contains the specified member. Valid only for not indexed sets.
b = set.containsAll(members)
Checks whether the set contains all the specified members. Valid only for not indexed sets.
Input Arguments#
member
The element (string or number) to be found in the set
members
A cell arrray of strings and numbers which represent the members to be found
Example#
Create a set in AMPL and checks for its members
ampl.eval('set A := {''a'', ''b'', 4};');
A = ampl.getSet('A');
A.contains('a')
A.contains(4)
A.containsAll({'a', 'b', 4})
A.containsAll({'a', 'b', 5})
gives:
ans =
0
ans =
1
ans =
1
ans =
0
size()#
- classmethod Set.size()#
Syntax#
b = set.size(member)
Description#
b = set.size(member)
For not indexed sets, get the cardinality of the set. For indexed sets, get the number of set instances into this
set.
Output Arguments#
b
The cardinality (number of elements) of this set or the number of set instances.
Example#
Create a set in AMPL and look at its size
ampl.eval('set A := {''a'', ''b'', 4};');
A = ampl.getSet('A');
A.size()
gives:
ans =
3
arity()#
- classmethod Set.arity()#
Syntax#
b = Set.arity()
Description#
b = Set.arity()
Returns the dimension of the items in this set.
set.
Output Arguments#
b
The arity (number of elements) of the members of this set.
Example#
Create a set in AMPL as a set product and look at its arity
ampl.eval('set A; set B;');
ampl.eval('set C := A cross B;');
C = ampl.getSet('C');
C.arity()
gives:
ans =
2