DecisionVariable

DecisionVariable#

class DecisionVariable#

Decision variable in an optimization problem.

This class represents a variable that will be optimized in a mathematical programming problem. It supports various types (binary, integer, continuous, semi-integer, semi-continuous) and can be used in arithmetic expressions to build objective functions and constraints. Construction raises ValueError when the kind discriminator is unknown or the requested bound cannot be normalized for the selected variable kind.

Note that this object overloads == for creating a constraint, not for equality comparison.

Examples#

>>> x = DecisionVariable.integer(1)
>>> x == 1  # Returns Constraint, not bool
Constraint(...)

For object equality comparison, use the equals_to() method or compare IDs:

>>> y = DecisionVariable.integer(2)
>>> x.id == y.id
False
__add__(rhs: ScalarLike | LinearLike | Parameter) Linear#
__add__(rhs: Quadratic) Quadratic
__add__(rhs: Polynomial) Polynomial
__add__(rhs: Function) Function
__copy__() DecisionVariable#
__deepcopy__(_memo: Any) DecisionVariable#
__eq__(other: ToFunction) Constraint#

Create an equality constraint: self == other → Constraint with EqualToZero

__ge__(other: ToFunction) Constraint#

Create a greater-than-or-equal constraint: self >= other → Constraint

__le__(other: ToFunction) Constraint#

Create a less-than-or-equal constraint: self <= other → Constraint

__mul__(rhs: ScalarLike) Linear#
__mul__(rhs: LinearLike | Parameter) Quadratic
__mul__(rhs: Quadratic | Polynomial) Polynomial
__mul__(rhs: Function) Function
__neg__() Linear#

Negation operator: -x → Linear(-1 * x)

__new__(id: int, kind: int, bound: Bound, name: Optional[str] = None, subscripts: Sequence[int] = [], parameters: Mapping[str, str] = {}, description: Optional[str] = None) DecisionVariable#
__radd__(lhs: ScalarLike | LinearLike | Parameter) Linear#
__radd__(lhs: Quadratic) Quadratic
__radd__(lhs: Polynomial) Polynomial
__radd__(lhs: Function) Function
__repr__() str#
__rmul__(lhs: ScalarLike) Linear#
__rmul__(lhs: LinearLike | Parameter) Quadratic
__rmul__(lhs: Quadratic | Polynomial) Polynomial
__rmul__(lhs: Function) Function
__rsub__(lhs: ScalarLike | LinearLike | Parameter) Linear#
__rsub__(lhs: Quadratic) Quadratic
__rsub__(lhs: Polynomial) Polynomial
__rsub__(lhs: Function) Function
__sub__(rhs: ScalarLike | LinearLike | Parameter) Linear#
__sub__(rhs: Quadratic) Quadratic
__sub__(rhs: Polynomial) Polynomial
__sub__(rhs: Function) Function
binary(id: int, name: Optional[str] = None, subscripts: Sequence[int] = [], parameters: Mapping[str, str] = {}, description: Optional[str] = None) DecisionVariable#
continuous(id: int, lower: float = float('-inf'), upper: float = float('inf'), name: Optional[str] = None, subscripts: Sequence[int] = [], parameters: Mapping[str, str] = {}, description: Optional[str] = None) DecisionVariable#
equals_to(other: DecisionVariable) bool#

Compare two DecisionVariable objects for equality.

This is different from __eq__ which creates a Constraint. Use this method when you want to check if two variables represent the same variable.

integer(id: int, lower: float = float('-inf'), upper: float = float('inf'), name: Optional[str] = None, subscripts: Sequence[int] = [], parameters: Mapping[str, str] = {}, description: Optional[str] = None) DecisionVariable#
semi_continuous(id: int, lower: float = float('-inf'), upper: float = float('inf'), name: Optional[str] = None, subscripts: Sequence[int] = [], parameters: Mapping[str, str] = {}, description: Optional[str] = None) DecisionVariable#
semi_integer(id: int, lower: float = float('-inf'), upper: float = float('inf'), name: Optional[str] = None, subscripts: Sequence[int] = [], parameters: Mapping[str, str] = {}, description: Optional[str] = None) DecisionVariable#
BINARY: int#
CONTINUOUS: int#
INTEGER: int#
SEMI_CONTINUOUS: int#
SEMI_INTEGER: int#
property bound: Bound#

Read-only property.

property description: str#

Read-only property.

property id: int#

Read-only property.

property kind: int#

Read-only property.

property name: str#

Read-only property.

property parameters: dict[str, str]#

Read-only property.

property subscripts: list[int]#

Read-only property.