BusyBeaver-42
released this
23 Nov 18:02
·
125 commits
to main
since this release
simulated-bifurcation
version 1.2.1 Release Notes
🚀 What's New
- New Stop Criterion: Control SB's runtime with the optimizer's new timeout feature. Specify the optimization
timeout in seconds usingtimeout
parameter in the optimization functions (optimize
,maximize
, andminimize
). - Optimization Models Pool Extension: The Integer Weights Knapsack problem and the Optimal Trading Trajectory
Problem (sequential Markowitz model) have joined the catalog of available models. - Model Device and Dtype Flexibility: Move your models to another dtype or device without having to individually
modify each tensor that makes it up, using the polynomial'sto
method.
🐞 Bug fixes
- The optimizer's stop window now works energy-wise instead of spin-wise to speed up convergence if the states are degenerate.
- Fixed the selection of the best agent when the optimization direction is maximization to select an agent with a
maximal energy (previously an agent with minimal energy was returned). - Typing error in Python 3.8: The occurrences of the typing annotation
list
have been replaced bytyping.List
for
Python 3.8 compatibility purposes.
🔔 Deprecation warnings
- The parameter
input_type
has been deprecated inoptimize
,maximize
, andminimize
; it will be removed in
version 1.3.0. It is replaced by thedomain
parameter. - The classes
SpinQuadraticPolynomial
,BinaryQuadraticPolynomial
andIntegerQuadraticPolynomial
have been
deprecated. From version 1.3.0 onwards, polynomials will no longer have a definition domain. The domain only needs to
be specified when creating an Ising model, and conversely when converting spins back into the original domain.
➡️ Looking forward to version 1.3.0
- Mathematical Definition of Polynomials: Discover a more natural way of defining polynomial instances using the
polynomial'sfrom_expression
method. This method generates native SB polynomials (tensors of coefficients) from
Sympy
expressions, making them easier to read and understand, especially for small dimensions.
🚧 Known issues
- A
MemoryError
is raised when creating an integer polynomial if the number of bits is large (~30 bits).
Unfortunately, there are no good fixes on the user side for this at the moment. The issue will be addressed in version 1.3.0.
The cause of this bug is the creation of a tensor containing all allowed values (2^n where n is the number of bits).
See this issue.