congress.datalog.arithmetic_solvers.
LpLang
¶Bases: object
Represent (mostly) linear programs generated from Datalog.
LpConversionFailure
(message=None, **kwargs)¶MIN_THRESHOLD
= 1e-05¶arith_to_lt_zero
(expr)¶Returns Arith expression equivalent to expr but of the form A < 0.
Parameters: | expr – is an Expression |
---|---|
Returns: | an expression equivalent to expr but of the form A < 0. |
create_intermediate
(exp)¶Given expression, create var = expr and return (var, var=expr).
flatten
(exp, indicator=True)¶Remove toplevel embedded and/ors by creating new equalities.
Parameters: |
|
---|---|
Returns: | a collection of expressions each of one of the following forms: var1 = var2 * … * varn var1 = var2 + … + varn var1 = arith |
Returns: | (new-expression, supporting-expressions) |
freshVar
(**meta)¶indicator_to_pure_lp
(exp, bounds)¶Translate exp into LP constraints without indicator variable.
Parameters: |
|
---|---|
Returns: | [EXP] if it is of the wrong form. Otherwise, translates into the form y = x < 0, and then returns two constraints where upper(x) is the upper bound of the expression x: -x <= y * upper(x)
x < (1 - y) * upper(x)
|
Taken from section 7.4 of http://www.aimms.com/aimms/download/manuals/ aimms3om_integerprogrammingtricks.pdf
isAnd
(thing)¶isArith
(thing)¶isBoolArith
(thing)¶isConstant
(thing)¶isEqual
(thing)¶isNotEqual
(thing)¶isOr
(thing)¶isVariable
(thing)¶makeAnd
(*args, **meta)¶makeArith
(*args, **meta)¶makeBoolVariable
(*args, **meta)¶makeEqual
(arg1, arg2, **meta)¶makeExpr
(obj)¶makeIntVariable
(*args, **meta)¶makeNotEqual
(arg1, arg2, **meta)¶makeOr
(*args, **meta)¶makeVariable
(*args, **meta)¶operator_to_constructor
(operator)¶Given the operator, return the corresponding constructor.
pure_lp
(exp, bounds)¶Rewrite EXP to a pure LP problem.
Parameters: | exp – is an Expression of the form var = (arith11 ^ … ^ arith1n) | … | (arithk1 ^ … ^ arithkn) where the degenerate cases are permitted as well. |
---|---|
Returns: | a collection of expressions each of the form: a1*x1 + … + an*xn [<=, ==, >=] b. |
pure_lp_term
(exp, bounds)¶Rewrite term exp to a pure LP term.
Parameters: | exp – is an Expression of the form (arith11 ^ … ^ arith1n) | … | (arithk1 ^ … ^ arithkn) where the degenerate cases are permitted as well. |
---|---|
Returns: | (new-exp, support) where new-exp is a term, and support is a expressions of the following form. a1*x1 + … + an*xn [<=, ==, >=] b. |
remove_and_or
(exp)¶Translate and/or operators into times/plus arithmetic.
Parameters: | exp – is an Expression that takes one of the following forms. var [!]= term1 ^ … ^ termn var [!]= term1 | … | termn var [!]= term1 where termi is an indicator variable. |
---|---|
Returns: | an expression equivalent to exp but without any ands/ors. |
remove_and_or_term
(exp)¶upper_bound
(expr, bounds)¶Returns number giving an upper bound on the given expr.
Parameters: |
|
---|
variables
(exp)¶congress.datalog.arithmetic_solvers.
PulpLpLang
¶Bases: congress.datalog.arithmetic_solvers.LpLang
Algorithms for translating LpLang into PuLP library problems.
MIN_THRESHOLD
= 1e-05¶problem
(optimization, constraints, bounds)¶Return PuLP problem for given optimization and constraints.
Param: | optimization is an LpLang.Expression that is either a sum or product to minimize. |
---|---|
Param: | constraints is a collection of LpLang.Expression that each evaluate to true/false (typically equalities) |
Param: | bounds: is a dictionary mapping LpLang.Expression variable tuples to their upper bounds. |
Returns a pulp.LpProblem.
pulpify
(expr, variables, values)¶Return PuLP version of expr.
Param: | expr is an Expression of one of the following forms. arith arith = arith arith <= arith arith >= arith |
---|---|
Param: | vars is a dictionary from Expression variables to PuLP variables |
Returns a PuLP representation of expr.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.