Releases: jihwan-jeong/xaddpy
Bug fix: sgn_op and core.Equality
Fixing incorrect implementation of sgn_op
. Also, we noticed that SymEngine puts 0 at the LHS for core.Equality
objects, which we now correctly handle in the updated version.
Gurobi made optional.
Perhaps later need to revisit... but Gurobi is optional now.
Textual representation updated; Graph construction uses cache
Fixing the efficiency issue with the prior graph construction code by using a cache to reduce the complexity to linear in size.
Also, __repr__
now only shows the node ID (for terminal nodes) or the decision ID and the IDs of the low / high branches. Prior implementation hinders debugging sessions when working with large XADD nodes.
now using pulp==2.8.0
Minor updates to lp_util to incorporate the update from PuLP (2.7.0 -> 2.8.0).
Adding definite integral operation
Adding the definite integration operation through XADDLeafDefIntegral
class and its leaf operation implementation.
Plus, introduced the get_xadd_bounds
function which is used to symbolically compute the lower and upper bounds over a specific variable induced by a given XADD and the variable's inherent numeric bounds.
Fixinig indentation bug (SymEngine base)
Fixing minor indentation errors from 0.2.2.
SymEngine for faster symbolic operations
This pre-release contains implementations using SymEngine as the symbolic core for XADD operations.
We observe a significant performance increase by using SymEngine as opposed to SymPy.
However, the performance noticeably lags behind the original Java version.
From this version, future versions that build on SymEngine will have 0.2.x or up; xaddpy versions that use SymPy will be versioned 0.1.x, which will eventually be deprecated.
For now, there can be bugs or some unstable/unexpected behavior due to the introduction of SymEngine. If you spot any, please create an issue or a pull request if you have a quick fix.
Leaf node hashing via str(expr)
Leaf node hashing via str(expr).
Note that this is not tested fully... May break some functions, but not likely. The reasoning behind this update is that sometimes additional assumptions are added to a leaf expression, which makes the hashing and equality check broken. This has led to duplicated leaf nodes not removed via standardization. Typically, those added assumptions are just redundant and at best not informative. Hence, for now, we deem it alright to just use str(expr) as a unique identifier of a leaf node and its expression.
Annotation made optional for continuous min/max
See the title.
Minor bug fix to unary_op
'float' unary op fixed.