Indexing#
GAMSPy supports Numpy-like indexing including the usage of Slices and Ellipsis. Ellipsis expands to the number of : objects needed for the selection tuple to index all dimensions. There may only be a single ellipsis present.
Usage of Slice#
The equivalent representation of the example above with slices would be:
import gamspy as gp
m = gp.Container()
i = gp.Set(m, name="i")
j = gp.Set(m, name="j")
d = gp.Parameter(m, name="d", domain=[i, j])
c = gp.Parameter(m, name="c", domain=[i, j])
c[:, :] = 90 * d[:, :] / 1000
Each : refers to the domain item in that index for the symbol. In this example, the first : is i and the second : is j. Hence, it is equivalent to:
import gamspy as gp
m = gp.Container()
i = gp.Set(m, name="i")
j = gp.Set(m, name="j")
d = gp.Parameter(m, name="d", domain=[i, j])
c = gp.Parameter(m, name="c", domain=[i, j])
c[i, j] = 90 * d[i, j] / 1000
Usage of Ellipsis#
The equivalent representation of the example above with ellipsis would be:
import gamspy as gp
m = gp.Container()
i = gp.Set(m, name="i")
j = gp.Set(m, name="j")
d = gp.Parameter(m, name="d", domain=[i, j])
c = gp.Parameter(m, name="c", domain=[i, j])
c[...] = 90 * d[...] / 1000
is also equivalent to:
import gamspy as gp
m = gp.Container()
i = gp.Set(m, name="i")
j = gp.Set(m, name="j")
d = gp.Parameter(m, name="d", domain=[i, j])
c = gp.Parameter(m, name="c", domain=[i, j])
c[i, j] = 90 * d[i ,j] / 1000
For scalar symbols (symbols with no domain), slice and ellipsis means the same thing:
import gamspy as gp
m = gp.Container()
c = gp.Parameter(m, name="c")
c[...] = 90
# or
c[:] = 90