Alias#
- class gamspy.Alias(container: Container, name: str | None = None, alias_with: Set | Alias | None = None)[source]#
Bases:
Alias,Operable,Symbol,SetMixinRepresents an Alias symbol in GAMS. https://www.gams.com/latest/docs/UG_SetDefinition.html#UG_SetDefinition_TheAliasStatementMultipleNamesForASet
- Parameters:
- containerContainer
Container of the alias.
- namestr, optional
Name of the alias.
- alias_withSet
Alias set object.
- Attributes:
alias_withReturns the aliased object
containerContainer of the symbol
descriptionReturns description of symbol
dimensionReturns the dimension of symbol
domainReturns list of domains given either as string (* for universe set) or as reference to the Set/Alias object
domain_labelsReturns the column headings for the records DataFrame
domain_namesReturns the string version of domain names
domain_typeReturns the state of domain links
firstReturns 1 for the first set element, otherwise 0.
is_singletonif symbol is a singleton set
lastReturns 1 for the last set element, otherwise 0.
lenLength of the set element name (a count of the number of characters).
modifiedFlag that identifies if the symbol has been modified
nameName of symbol
number_recordsReturns the number of symbol records
offElement position in the current set minus 1.
ordSame as .pos but for ordered sets only.
posElement position in the current set, starting with 1.
recordsReturns the main symbol records
revReverse element position in the current set, so the value for the last element is 0, the value for the penultimate is 1, etc.
summaryReturns a dict of only the metadata
tlenLength of the set element text (a count of the number of characters).
tvalIf a set element text is a number, this attribute gives the value of the number.
uelElement position in the unique element list.
valIf a set element is a number, this attribute gives the value of the number.
Methods
equals(other[, check_uels, ...])Used to compare the symbol to another symbol.
gamsRepr()Representation of this Alias in GAMS language.
Declaration of the Alias in GAMS
Gets the sparsity of the symbol w.r.t the cardinality
isValid([verbose, force])Checks if the symbol is in a valid format
lag(n[, type])Lag operation shifts the values of a Set or Alias by one to the left
lead(n[, type])Lead shifts the values of a Set or Alias by one to the right
pivot([index, columns, fill_value])Convenience function to pivot records into a new shape (only symbols with > 1D can be pivoted).
sameAs(other)Evaluates to true if this set is identical to the given set or alias, false otherwise.
setRecords(records[, uels_on_axes])main convenience method to set standard pandas.DataFrame formatted records.
toList([include_element_text])Convenience method to return symbol records as a python list
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, "i") >>> j = gp.Alias(m, "j", i)
- property modified#
Flag that identifies if the symbol has been modified
- gamsRepr() str[source]#
Representation of this Alias in GAMS language.
- Returns:
- str
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, "i", domain=["*"], records=['i1','i2']) >>> j = gp.Alias(m, "j", i) >>> j.gamsRepr() 'j'
- property container#
Container of the symbol
- property description: str#
Returns description of symbol
- Returns:
- str
Description of symbol
- property dimension: int#
Returns the dimension of symbol
- Returns:
- int
Dimension of symbol
- property domain: List[Set | str]#
Returns list of domains given either as string (* for universe set) or as reference to the Set/Alias object
- Returns:
- List[Set | str]
A list of domains given either as string (* for universe set) or as reference to the Set/Alias object
- property domain_labels: List[str] | None#
Returns the column headings for the records DataFrame
- Returns:
- Union[List[str], None]
Column headings for the records DataFrame
- property domain_names: List[str]#
Returns the string version of domain names
- Returns:
- List[str]
A list of string version of domain names
- property domain_type: str | None#
Returns the state of domain links
- Returns:
- str
none, relaxed or regular
- equals(other: Set | Alias, check_uels: bool = True, check_element_text: bool = True, check_meta_data: bool = True, verbose: bool = False) bool[source]#
Used to compare the symbol to another symbol.
- Parameters:
- otherSet or Alias
The other symbol (Set or Alias) to compare with the current alias.
- check_uelsbool, optional
If True, check both used and unused UELs and confirm same order, otherwise only check used UELs in data and do not check UEL order.
- check_element_textbool, optional
If True, check that all set elements have the same descriptive element text, otherwise skip.
- check_meta_databool, optional
If True, check that symbol name and description are the same, otherwise skip.
- verbosebool, optional
If True, return an exception from the asserter describing the nature of the difference.
- Returns:
- bool
True if the two symbols are equal in the specified aspects; False if they are not equal and verbose is False.
Examples
>>> m = gt.Container() >>> i = gt.Set(m, "i") >>> j = gt.Alias(m, "j", i) >>> print(i.equals(j)) # Compare the Set 'i' with the Alias 'j' True
- property first#
Returns 1 for the first set element, otherwise 0.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"]) >>> attr[i,"is_first"] = i.first >>> attr.records.values.tolist() [['seattle', 'is_first', 1.0]]
- getDeclaration()[source]#
Declaration of the Alias in GAMS
- Returns:
- str
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, "i", records=['i1','i2']) >>> j = gp.Alias(m, "j", i) >>> j.getDeclaration() 'Alias(i,j);'
- getSparsity() float | None[source]#
Gets the sparsity of the symbol w.r.t the cardinality
- Returns:
- float | None
Sparsity of an alias
- isValid(verbose: bool = False, force: bool = False) bool#
Checks if the symbol is in a valid format
- Parameters:
- verbosebool, optional
Throw exceptions if verbose=True, by default False
- forcebool, optional
Recheck a symbol if force=True, by default False
- Returns:
- bool
True if a symbol is in valid format, False otherwise (throws exceptions if verbose=True)
- property is_singleton: bool#
if symbol is a singleton set
- Returns:
- bool
True if the alias is singleton; False otherwise
- lag(n: int | Symbol | Expression, type: Literal['linear', 'circular'] = 'linear') ImplicitSet#
Lag operation shifts the values of a Set or Alias by one to the left
- Parameters:
- nint | Symbol | Expression
- type‘linear’ or ‘circular’, optional
- Returns:
- ImplicitSet
- Raises:
- ValueError
When type is not circular or linear
Examples
>>> import gamspy as gp >>> >>> m = gp.Container() >>> t = gp.Set(m, name="t", description="time sequence", records=[f"y-{x}" for x in range(1987, 1992)]) >>> a = gp.Parameter(m, name="a", domain=[t]) >>> b = gp.Parameter(m, name="b", domain=[t]) >>> c = gp.Parameter(m, name="c", domain=[t]) >>> a[t] = 1986 + gp.Ord(t) >>> b[t] = -1 >>> b[t] = a[t.lag(1, "linear")] >>> b.records.values.tolist() [['y-1988', 1987.0], ['y-1989', 1988.0], ['y-1990', 1989.0], ['y-1991', 1990.0]] >>> c[t] = a[t.lag(1, "circular")] >>> c.records.values.tolist() [['y-1987', 1991.0], ['y-1988', 1987.0], ['y-1989', 1988.0], ['y-1990', 1989.0], ['y-1991', 1990.0]]
- property last#
Returns 1 for the last set element, otherwise 0.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"]) >>> attr[i,"is_last"] = i.last >>> attr.records.values.tolist() [['new-york', 'is_last', 1.0]]
- lead(n: int | Symbol | Expression, type: Literal['linear', 'circular'] = 'linear') ImplicitSet#
Lead shifts the values of a Set or Alias by one to the right
- Parameters:
- nint | Symbol | Expression
- type‘linear’ or ‘circular’, optional
- Returns:
- ImplicitSet
- Raises:
- ValueError
When type is not circular or linear
Examples
>>> import gamspy as gp >>> >>> m = gp.Container() >>> t = gp.Set(m, name="t", description="time sequence", records=[f"y-{x}" for x in range(1987, 1992)]) >>> a = gp.Parameter(m, name="a", domain=[t]) >>> c = gp.Parameter(m, name="c", domain=[t]) >>> d = gp.Parameter(m, name="d", domain=[t]) >>> a[t] = 1986 + gp.Ord(t) >>> c[t] = -1 >>> c[t.lead(2, "linear")] = a[t] >>> c.records.values.tolist() [['y-1987', -1.0], ['y-1988', -1.0], ['y-1989', 1987.0], ['y-1990', 1988.0], ['y-1991', 1989.0]] >>> d[t.lead(2, "circular")] = a[t] >>> d.records.values.tolist() [['y-1987', 1990.0], ['y-1988', 1991.0], ['y-1989', 1987.0], ['y-1990', 1988.0], ['y-1991', 1989.0]]
- property len#
Length of the set element name (a count of the number of characters).
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set length values") >>> attr[i,"length"] = i.len >>> attr.records.values.tolist() [['seattle', 'length', 7.0], ['san-diego', 'length', 9.0], ['new-york', 'length', 8.0]]
- property name#
Name of symbol
- property number_records: int#
Returns the number of symbol records
- Returns:
- int
Number of symbol records
- property off#
Element position in the current set minus 1. So .off = .pos - 1
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set off values") >>> attr[i,"off"] = i.off >>> attr.records.values.tolist() [['san-diego', 'off', 1.0], ['new-york', 'off', 2.0]]
- property ord#
Same as .pos but for ordered sets only.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set order values") >>> attr[i,"order"] = i.ord >>> attr.records.values.tolist() [['seattle', 'order', 1.0], ['san-diego', 'order', 2.0], ['new-york', 'order', 3.0]]
- pivot(index: str | List[str] | None = None, columns: str | List[str] | None = None, fill_value: int | float | None = None) DataFrame[source]#
Convenience function to pivot records into a new shape (only symbols with > 1D can be pivoted).
- Parameters:
- indexList[str] | str, optional
If index is None then it is set to dimensions [0..dimension-1]
- columnsList[str] | str, optional
If columns is None then it is set to the last dimension.
- fill_valueint | float, optional
Missing values in the pivot will take the value provided by fill_value
- Returns:
- DataFrame
A new DataFrame containing the pivoted data.
Examples
>>> m = gt.Container() >>> i = gt.Set(m, "i", records=["seattle", "san-diego"]) >>> j = gt.Set(m, "j", records=["new-york", "chicago", "topeka"]) >>> ij = gt.Set(m, "ij", [i,j], records=[("seattle", "chicago"), ("seattle", "topeka"), ("san-diego", "new-york")]) >>> routes = gt.Alias(m, name="routes", alias_with=ij) >>> print(routes.pivot(fill_value="")) chicago topeka new-york seattle True True san-diego True
- property pos#
Element position in the current set, starting with 1.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set position values") >>> attr[i,"position"] = i.pos >>> attr.records.values.tolist() [['seattle', 'position', 1.0], ['san-diego', 'position', 2.0], ['new-york', 'position', 3.0]]
- property records: DataFrame | None#
Returns the main symbol records
- Returns:
- DataFrame | None
The main symbol records, None if no records were set
- property rev#
Reverse element position in the current set, so the value for the last element is 0, the value for the penultimate is 1, etc.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set reverse values") >>> attr[i,"reverse"] = i.rev >>> attr.records.values.tolist() [['seattle', 'reverse', 2.0], ['san-diego', 'reverse', 1.0]]
- sameAs(other: Set | Alias | str) Expression#
Evaluates to true if this set is identical to the given set or alias, false otherwise.
- Parameters:
- otherSet | Alias
- Returns:
- Expression
Examples
>>> import gamspy as gp
>>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego"]) >>> j = gp.Set(m, name="j", records=["new-york", "seattle"]) >>> attr = gp.Parameter(m, "attr", domain = [i, j]) >>> attr[i,j] = i.sameAs(j) >>> attr.records.values.tolist() [['seattle', 'seattle', 1.0]]
- setRecords(records: Any, uels_on_axes: bool = False) None[source]#
main convenience method to set standard pandas.DataFrame formatted records. If uels_on_axes=True setRecords will assume that all domain information is contained in the axes of the pandas object – data will be flattened (if necessary).
- Parameters:
- recordsAny
- uels_on_axesbool, optional
- property summary: dict#
Returns a dict of only the metadata
- Returns:
- dict
Outputs a dict of only the metadata
- property tlen#
Length of the set element text (a count of the number of characters).
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=[("seattle", "Wisconsin"), ("san-diego", ""), ("new-york", " ")], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set element text length values") >>> attr[i,"text_length"] = i.tlen >>> attr.records.values.tolist() [['seattle', 'text_length', 9.0], ['new-york', 'text_length', 1.0]]
- toList(include_element_text: bool = False) list[source]#
Convenience method to return symbol records as a python list
- Parameters:
- include_element_textbool, optional
If True, include the element text as tuples (record, element text). If False, return a list of records only.
- Returns:
- list
A list containing the records of the symbol.
Examples
>>> m = gt.Container() >>> i = gt.Set(m, "i", records=["new-york", "chicago", "topeka"]) >>> j = gt.Alias(m, "j", i) >>> print(j.toList()) ['new-york', 'chicago', 'topeka']
- property tval#
If a set element text is a number, this attribute gives the value of the number. For extended range arithmetic symbols, the symbols are reproduced. If a set element text is a string that is not a number, then this attribute is not defined and trying to use it results in an error.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=[("seattle", "12"), ("san-diego", ""), ("new-york", "-13.4")], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set text values") >>> attr[i,"text_value"] = i.tval >>> attr.records.values.tolist() [['seattle', 'text_value', 12.0], ['new-york', 'text_value', -13.4]]
- property uel#
Element position in the unique element list.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["seattle", "san-diego", "new-york"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set uel_pos values") >>> attr[i,"uel_position"] = i.uel >>> attr.records.values.tolist() [['seattle', 'uel_position', 1.0], ['san-diego', 'uel_position', 2.0], ['new-york', 'uel_position', 3.0]]
- property val#
If a set element is a number, this attribute gives the value of the number. For extended range arithmetic symbols, the symbols are reproduced. If a set element is a string that is not a number, then this attribute is not defined and trying to use it results in an error.
- Returns:
- ImplicitSet
Examples
>>> import gamspy as gp >>> m = gp.Container() >>> i = gp.Set(m, name="i", records=["12", "20", "-13.4"], description="canning plants") >>> attr = gp.Parameter(m, "attr", domain = [i, "*"], description = "Set val values") >>> attr[i,"value"] = i.val >>> attr.records.values.tolist() [['12', 'value', 12.0], ['20', 'value', 20.0], ['-13.4', 'value', -13.4]]