# SetInstance¶

class SetInstance

A SetInstance object stores the information regarding an instance of a set (which is the whole set, in case of non-indexed sets). The instances can be accessed through the function Set.get of the parent entity. It stores all the members of the set as string or double numbers. Data can be accessed as a set (SetInstance.asSet). Data can be assigned using Set.assignData or or using AMPL.setData and a DataFrame object.

## asSet()¶

classmethod SetInstance.asSet()

### Syntax¶

v = setInstance.asSet()

### Description¶

v = setInstance.asSet() Get a copy of the elements in this set as a java Set of Objects (Strings and double numbers).

### 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;');
s = ampl.getSet('A').get();
v = s.asSet()


gives:

set =
[2000.0, 2005.0, 2010.0, 2015.0, 2020.0]


## setValues()¶

classmethod SetInstance.setValues()

### Syntax¶

setInstance.setValues(members)

### Description¶

v = setInstance.setValues(members) Assign data to this set instance.

### Input Arguments¶

members

A cell arrray of strings and numbers which represent the members of this set.

For multidimensional sets, each item of the members array must be either a cell array or a Tuple representing each item.

An alternative representation allows to specify the members as a flattened array, in which each group of Set.arity items are grouped to form each member of the set.

### 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')};


### Example: multidimensional sets, flat assignment¶

Create a multidimensional set in AMPL and assign some data to it from MATLAB, using a cell array of which each Set.arity elements are considered a Tuple.

ampl.eval('set A dimen 3;');
A = ampl.getSet('A').get();
A.setValues({1, 'a', '1a', 2, 'b', '2b'});
A


gives:

set A = {(1.0,'a'), (2.0,'b')};


## contains()¶

classmethod SetInstance.contains()

### Syntax¶

b =  setInstance.contains(member) b = setInstance.containsAll(members)

### Description¶

b =  setInstance.contains(member) Checks whether the set contains the specified member. b =  setInstance.containsAll(members) Checks whether the set contains all the specified members.

### 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};');
s = ampl.getSet('A').get();
s.contains('a')
s.contains(4)
s.containsAll({'a', 'b', 4})
s.containsAll({'a', 'b', 5})


gives:

ans =
0

ans =
1

ans =
1

ans =
0


## size()¶

classmethod SetInstance.size()

### Syntax¶

b =  setInstance.size(member)

### Description¶

b =  setInstance.size(member) Get the cardinality of the set

### Output Arguments¶

b
The cardinality (number of elements) of this set

### Example¶

Create a set in AMPL and look at its size

ampl.eval('set A := {''a'', ''b'', 4};');
s = ampl.getSet('A').get();
s.size()


gives:

ans =
3