4.1.11.1. hyperflow/LinExp¶
This part describes variable specifiers, linear expressions, and linear constraints. See Variable Specifiers, Linear Expressions, and Constraints for a higher-level description of these entities.
Linear expressions (hyperflow.LinExp) and constraints (hyperflow.LinConstraint)
can be implicitly created from variable specifiers and operators, meaning one rarely
need to instantiate them explicitly.
However creating the zero-expression might sometimes be useful (e.g., in a sum expression)
and can be done simply with the expression hyperflow.LinExp().
A variable specifier is a representation of either a single variable or a sum of variables. The addition, multiplication and division operators are overloaded for variable specifiers and linear expressions such that expressions can be written in the natural manner.
The operators <=, == and >= are overloaded on linear expressions to make the creation of
linear constraints easier. However, one argument to the operator must be a linear expression while
the other argument must be a number.
All variable specifiers are defined in module scope. See Hyperflow Model for an overview of the specifiers.
- class hyperflow.VarSumVertex¶
Represents the sum of all variables indicated by the given
id. Can be indexed to retrieve a specifier for a single variable in the set.- __init__(id)¶
Construct a variable specifier for a sum of variables associated with vertices in the underlying derivation graph.
- Parameters:
id (str) – The ID for the variable set to represent.
- __getitem__(x)¶
Select the variable associated with the derivation graph vertex which represents the given object. When the resulting specifier is given to a flow model, if the given object is a vertex, then it must belong to the same derivation graph as the one underlying the model. If the given object is a graph, a vertex in the underlying derivation graph must exist which has the graph associated.
- class hyperflow.VarVertex¶
Represents a variable associated with a single vertex in a derivation graph.
- __init__(id, v)¶
- class hyperflow.VarVertexGraph¶
Represents a variable associated with a single vertex in a derivation graph. This is done implicitly by a graph, and when this specifier is later given to a flow model a vertex with the graph associated must exist in the underlying derivation graph.
- __init__(id, g)¶
- class hyperflow.VarSumEdge¶
Represents the sum of all variables indicated by the given
id. Can be indexed to retrieve a specifier for a single variable in the set.- __init__(id)¶
Construct a variable specifier for a sum of variables associated with edges in the underlying derivation graph.
- Parameters:
id (str) – The ID for the variable set to represent.
- __getitem__(e)¶
Select the variable associated with the derivation graph edge which represents the given object. When the resulting specifier is given to a flow model, the given edge must be long to the same derivation graph as the one underlying the model.
- Parameters:
e (DG.HyperEdge) – an edge used to select a variable.
- Returns:
a variable specifier for a single variable in the set represented by this object.
- Return type:
- class hyperflow.VarEdge¶
Represents a variable associated with an edge in a derivation graph.
- __init__(id, e)¶
- Parameters:
id (str) – The ID for the variable set to select variables from.
e (DG.HyperEdge) – The edge used to select a variable from the variable set.
- edge¶
The edge used to index into the variable set.
- Type:
- class hyperflow.VarSumCustom¶
Represents the sum of all variables indicated by the given
id. Can be indexed to retrieve a specifier for a single variable in the set.- __init__(id)¶
Construct a variable specifier for a sum of custom variables.
- Parameters:
id (str) – The ID for the variable set to represent.
- __getitem__(id)¶
Select the variable associated with the given name. When the resulting specifier is given to a flow model that variable must have been created in the specification in some way.
- class hyperflow.Var¶
Represents any variable specifier. They are all implicitly convertible to this type.
- class hyperflow.LinExp¶
Represents a linear expression over variable specifiers.
The usual arithmetic operators are overloaded on variable specifiers and this class to automatically create expressions.
- class hyperflow.LinConstraint¶
Represents a linear constraint with a
hyperflow.LinExpon one side, and a constant on the other side. The operators<=,==, and>=are overloaded on linear expressions to automatically create constraints.
4.1.11.1.1. Pre-defined Variable Specifiers¶
Each of the variable specifiers are defined in the submodule hyperflow.vars,
and then import in the root module, so they are directly accessible.