Source code for gamspy._algebra.number
from __future__ import annotations
import gamspy._algebra.condition as condition
import gamspy._algebra.operable as operable
from gamspy._algebra import expression
[docs]
class Number(operable.Operable):
"""
Needed for conditions on numbers.
Parameters
----------
value : int | float
Examples
--------
>>> import gamspy as gp
>>> m = gp.Container()
>>> k = gp.Set(m, "k", records=["1964-i","1964-ii","1964-iii","1964-iv"])
>>> ki = gp.Set(m, name="ki", domain=[k], description="initial period")
>>> ki[k] = gp.Number(1).where[gp.Ord(k) == 1]
"""
def __init__(self, value: int | float):
if not isinstance(value, (int, float)):
raise TypeError(
f"Number should be of type int or float but given value has type `{type(value)}`"
)
self._value = value
self.where = condition.Condition(self)
self.domain: list = []
def __eq__(self, other):
return expression.Expression(self, "=e=", other)
def __ne__(self, other):
return expression.Expression(self, "ne", other)
def __repr__(self) -> str:
return f"Number(value={self._value})"
[docs]
def gamsRepr(self) -> str:
"""
Representation of this Number in GAMS language.
Returns
-------
str
Examples
--------
>>> import gamspy as gp
>>> gp.Number(2.0).gamsRepr()
'2.0'
"""
return f"{self._value}"
[docs]
def latexRepr(self) -> str:
"""
Representation of this Number in Latex.
Returns
-------
str
"""
return f"{self._value}"