# 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