Releases: bqth29/simulated-bifurcation-algorithm
Releases · bqth29/simulated-bifurcation-algorithm
1.2.1
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.
1.2.0
simulated-bifurcation
version 1.2.0 Release Notes
What's New
- Optimization Enhancement: Experience a 2x speed boost in the optimizer.
- Algorithm Invocation Improvement: Enjoy a more user-friendly interaction with the Simulated Bifurcation algorithm through the new
minimize
andmaximize
static functions. - General Polynomial API: Introducing a versatile polynomial API designed to construct and solve second-order multivariate polynomial problems using SB. This accommodates various variable types, including spin, binary, integer variables, and user-defined variable types.
- Implementation of several usual NP-hard optimization problems: the
models
module brings together interfaces for several NP-hard optimization problems (e.g., QUBO, Ising, number partitioning). - Constants from physical theories have been transformed into optimization environment variables.
- Code Standardization: The codebase has undergone standardization using Black and isort code formatters, enhancing code consistency and readability.