Extract¶
extract_variables(expression) ¶
Extract variables.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
expression | Expression | target expression | required |
Returns:
| Type | Description |
|---|---|
tp.List[_variable.Variable] | List[Variable]: A list of variables included in the expression. |
Examples:
import jijmodeling as jm
from jijmodeling.expression.extract import extract_variables
a = jm.Placeholder("d", dim=2)
n = a.shape[0]
x = jm.Binary("x", shape=(n, ))
i, j = jm.Element("i", n), jm.Element("j", n)
term = jm.Sum([i, j], x[i] - s[i, j])
extract_variables(term)
# >>> [j, i, s, x, a, a_shape_0]
extract_expressions(expression, pattern) ¶
Extract expressions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
expression | Expression | target expression | required |
pattern | Callable[Expression, bool] | pattern to extract | required |
Returns:
| Type | Description |
|---|---|
tp.List[_expression.Expression] | List[Expression]: A list of expressions included in the expression. |
Examples:
import jijmodeling as jm
from jijmodeling.expression.extract import extract_expressions
a = jm.Placeholder("d", dim=2)
n = a.shape[0]
x = jm.Binary("x", shape=(n, ))
i, j = jm.Element("i", n), jm.Element("j", n)
s = jm.Binary("s", shape=(n, n))
term = jm.Sum([i, j], x[i] - s[i, j])
extract_expressions(term, lambda x: isinstance(x, jm.Element))
# >>> [i, j]
extract_expressions(term, lambda x: isinstance(x, jm.Binary))
# >>> [x, s]
extract_expressions(term, lambda x: isinstance(x, jm.Subscripts) and x.variable.label == "s")
# >>> [s[i, j]]
check_unique_variable_label(expression) ¶
Check unique variable label.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
expression | Expression | target expression | required |
Returns:
| Name | Type | Description |
|---|---|---|
None | If the every variable label is unique. |
Raises:
| Type | Description |
|---|---|
ModelingError | If label is not unique. |
Last update: 2023年7月5日