Changelog¶
v1.7.1 (Sep. 10, 2026)¶
New features and support¶
Add
where()function.Add
set_printoptions()to set the number of terms and significant digits shown.Add the
alphaparameter toQAOAandRQAOA, which makes the cost the Conditional Value-at-Risk (CVaR) of the measured energies.Add
objective_formattoFixstarsClient,AmplifyAEClient, andToshibaSQBM2Client. The defaultAutosends whichever of a dense matrix and a list of terms is smaller. GiveDenseto keep the earlier behavior.Add
__repr__and__str__toAcceptableDegrees,VariableGenerator,split, and the key, value, and item views ofValuesand of the intermediate mapping. Each of them showed only its address before.Support OQTOPUS Cloud with
OqtopusClient.Support Pyodide with a WebAssembly wheel that
micropipinstalls and a browser runs. Only the formulation API andAmplifyAEClientwork there, and each wheel fits one version of Pyodide.Support the dense coupling mode of Amplify AE for a dense quadratic
Poly, which needed aMatrixbefore.Support file output for a model whose objective function is a
Matrix.
Changes of behavior¶
Change
objectiveto always return aPoly. A model now copies theMatrixthat you give it, and it accepts the addition or the subtraction of aPoly.Change a model to drop the variables that a
Matrixonly declares.variableslists fewer variables, and the problem that the client sends becomes smaller.Change
input_matrixandlogical_matrixto raise aNotImplementedError. Useinput_polyandlogical_model_polyinstead.Change
AmplifyAEClientto warn when you give a weight to a constraint and solve with the defaultConstraintsolver. Amplify AE sets the weight itself, so the tutorials and the examples no longer give one.Change a bound that narrows a Binary or an Ising variable to raise a
ValueError. Amplify dropped such a bound before, so it solved another model than the one you described. Useequal_to()to fix a variable to one value.Change a lower bound of positive infinity, or an upper bound of negative infinity, to raise a
ValueError, because such a bound leaves no value. Amplify read it as “no bound” before, which widened the variable.Change
load_lp()andload_qplib()to give a constraint for a bound that narrows a Binary variable, such asx <= 0. Amplify dropped such a bound in silence before. Give the constraint enough weight, because a solver turns it into a penalty.Change
load_qplib()to read an integer variable whose bounds are 0 and 1 as aBinaryvariable, because QPLIB writes a binary variable in that form. Such a model held integer variables and no binary variable before.Change
save_qplib()to warn when a variable bound or a constraint bound reaches an absolute value of 1e+20. QPLIB reads that value as infinity, so loading the file back drops the bound, or fails when the sign of the bound leaves nothing that satisfies it.Change
save_lp()andsave_qplib()to raise aValueErrorfor a coefficient or a constraint bound that is NaN or infinity. Amplify wrotenanorinfinto the file before, and neither format gives those a spelling.Change
load_lp()andload_qplib()to raise aRuntimeErrorfor a value that is not a number, such asnan.load_qplib()read such a value as zero in silence before, andload_lp()gave a model that no solver accepts.Change an integer parameter to raise a
TypeErrorfor a value that loses precision, such asnumpy.float64(3.0). It truncated such a value in silence before, and a NumPy integer, such asnumpy.int64(3), still works.Change
set_num_threads()to limit the logical cores that Amplify uses, the parallel formulation included. Amplify caps a value that is larger than the number of the cores of the hardware.Change
set_num_threads()andset_seed()to take a named argument,num_threadsandseed. A positional call still works.Change
amplify.Dim0throughamplify.Dim4from classes to aliases oftuple, and addNfor one axis.PolyArray[Dim2]still works, and onlyisinstancewith one of these names stops.Change the type stub to give the dimension of the result of an index, of a matrix product, and of an elementwise operation. A
PolyArraythat you build from a NumPy array or a list takesPolyArray[Dim], which noPolyArray[Dim2]accepts.Change the D-Wave solver names to agree with the D-Wave API. A solver name no longer holds the system revision, so Advantage_system4.1 is now Advantage_system4.
Remove
amplify.NECVA2Clientandamplify.client.NECClient. NEC Vector Annealing (VA) Service 2.0 ended on April 1, 2025, so the client reaches no machine.Raise a
ValueErrorwhen you solve a model whose objective function holds no variable.
Performance¶
Improve performance of model formulation, including
einsum(),one_hot(), andto_unconstrained_poly(). The TSP formulation is now up to 30 times faster than v1.0. See Formulation Benchmarks.Improve memory usage of model formulation. The TSP formulation now needs approximately one-fourth to one-fifth of the memory of v1.0 for a problem with more than 10,000 variables.
Improve performance of
to_intermediate_model()for a model with many integer or real variables, or with many higher-order terms.Improve performance of
load_qplib(). A QPLIB file of 230 thousand terms now loads about 1.2 times faster.Update
save_lp()andsave_qplib()to raise aRuntimeErrorfor invalid variable names or constraint labels, and emit warnings for ignored constraint weights or duplicate variable names.
Platform and dependencies¶
Update the D-Wave solver graphs for Advantage_system4, Advantage_system6, and Advantage2_system1.
Change supported macOS to Sonoma or later.
Update the required version of
typing_extensionsto>= 4.16.0, and ofamplify-quantumto>= 1.3.0.
Documentation¶
Publish the documentation in Markdown for AI agents. Every page has a Markdown copy next to it, and each language also carries
llms.txtandllms-full.txt.Add an English version of Introduction to the latest version, which introduces the latest Amplify AE.
Add a description of every operator of
Poly,PolyArray, andConstraintListto the API reference and tohelp(), and remove the signatures of aPolyArrayoperation that no call could reach.Add a description of the settings that every client carries, such as
url,token, andparameters, and of each member ofPenaltyFormulation.
Fixes¶
Fix:
variablesandget_variables()now list every variable of aMatrixobjective whose first variable index is not zero.Fix:
load_lp()andsave_lp()now support non-ASCII characters, such as Japanese, and a variable name of up to 255 characters, the indices included.Fix:
load_lp()now reads a file that has no objective section, and gives a model whose objective is 0. It raised an error before.Fix:
load_lp()now takes the type of a variable from the last variable type section that names it, as the LP format defines. A variable in bothBinaryandGeneralsbecame Binary before.Fix:
load_lp()now reads a variable name that starts with the spelling of a number, such asinfoornano. Such a file failed to load before.Fix:
load_lp()now reads a bound that fixes a variable to one value, such asx = 3. Such a file failed to load before.Fix:
load_lp()now reads a file that has noEndline, which the LP format allows. Such a file failed to load before.Fix:
save_lp()now raises aRuntimeErrorfor a variable namedinf,infinity, ornan. It wrote a file that no reader can load before.Fix:
save_lp()now keeps the exact value of every coefficient and bound. It wrote 10 significant digits before, so0.1234567890123456came back as0.123456789.Fix:
save_lp()now writes-inffor a variable that has no lower bound. The LP default of a lower bound is 0, sox <= 3alone gave the file another variable than the one you saved.Fix:
save_lp()now writes the bound of a Binary variable as0 <= q <= 1. It wroteq freebefore, so the file gave a variable with no bound instead of a Binary one.Fix:
save_lp()now writes a constraint that holds a constant with the right sign.x + 5 <= 10becamex <= 15in the file, which is another constraint than the one you gave.Fix:
save_lp()now writes every line within the 999 characters that the LP format allows, and it never breaks a bound over two lines. A file that held a long name failed to load.Fix:
load_qplib()now drops a constraint bound that reaches the infinity value of the file, as the QPLIB format defines. Such a bound became a real constraint before. A bound whose sign leaves nothing that satisfies the constraint now raises.Fix:
save_qplib()now keeps the exact value of every coefficient and bound. It wrote 6 significant digits before, so0.1234567890123456came back as0.123457.Fix:
save_qplib()now writes a two-sided constraint that holds a constant with the right value on each side.1 <= x + 5 <= 10became1 <= x <= 5in the file, which is another constraint than the one you gave.Fix:
save_qplib()now writes the two indices of a quadratic term in the lower triangle, as the QPLIB format defines. Another reader could not load the file before.Fix:
save_qplib()now accepts a name that holds!,%, or#after its first character. It raised aRuntimeErrorfor every such name before.Fix: A model with an integer variable whose range exceeds 2147483647 now converts to the correct binary encoding. The solution of such a model did not solve the model that you gave before. A range that no encoding can build now raises an
OverflowError.Fix:
to_intermediate_model()now gives a solution that is optimal for the input model when the quadratization method isIshikawaKZFDand the objective function holds Ising variables of degree three or higher.Fix:
to_intermediate_model()now raises aValueErrorwhen the objective function and the constraints need different variable types. It returned a model of the forbidden variable type before.Fix: An inequality constraint now gives a penalty function when Amplify cannot estimate the range of its left side, such as a left side that holds an unbounded variable. The penalty held NaN coefficients before, or it was 0, which removed the constraint from the model.
Fix: A constraint whose left side holds a squared term, such as
a * a <= 3withain[-5, 5], now stays in the model. Amplify squared the two ends of the range only, so the constraint looked infeasible and its penalty became 0, or negative for an equality.Fix:
&=,|=, and^=now update aPolyArrayin place. The name becameNonebefore when the right side was aPolyArray, and it took a copy otherwise.Fix:
roll()now returns a copy of an array that holds no element. It ended the process before.Fix: The display of a
PolyArrayno longer puts a space at the end of a wrapped line.Fix:
amplifyno longer gives the names that its own implementation imports, such asamplify.sysandamplify.Never.from amplify import *gave them away, and none of them was ever documented.Fix: The type stub of
sum()andsum()now acceptsaxisfor a zero-dimensionalPolyArray. The call always worked, and only the stub rejected it.Fix: The type stub of
clamp()now names the second parameterboundswhen you giveaxisfor aPolyArray. A call with that keyword failed the type check although it always worked.Fix: The type stub of the
typeparameter ofHitachiClientno longer acceptsNone. The parameter never tookNone, and such an assignment raised aTypeError.Fix:
repr()of aResultthat holds no solution now names the class, as it does for a result that holds one. It gave a text that began with{and ended with an unmatched)before.
v1.6.0 (May. 21, 2026)¶
Support quantum computers via the Amplify Quantum extension.
Support Ubuntu 26.04.
Support D-Wave Advantage2_system1.
Fix: Correct response data not being written to file with
write_response_dataenabled in specific cases.
v1.6.1 (Jun. 09, 2026)
Add
dwave,quantum, andfullinstallation options, replacing theextraoption withfull.Fix:
embed()now works without raising aValueErrorin all environments.
v1.6.2 (Jul. 10, 2026)
Deprecate
amplify.NECVA2Client. NEC Vector Annealing (VA) Service 2.0 ended on April 1, 2025, so the client reaches no machine.Improve performance of
to_unconstrained_poly().Fix: Work around a potential dependency resolution error when installing Amplify Quantum.
Fix:
parallel_solve()now works correctly with multiple client arguments.Fix:
__getitem__()now works correctly when a slice results in zero length.
v1.6.3 (Aug. 20, 2026)
Support Amplify Quantum v1.3.
Improve performance of
get_variables().General security hardening and robustness improvements.
Fix:
to_unconstrained_poly()now works correctly with inequality constraints.
v1.5.0 (Apr. 05, 2026)¶
Overhaul the docstrings.
Support
dense_objectiveendpoint of Amplify AE v1.1.Support Gurobi Optimizer 12.0.3 on
GurobiClient.Change default degree reduction algorithm to
SubstitutefromIshikawaKZFD.
v1.4.0 (Sep. 19, 2025)¶
Support Amplify Annealing Engine v1.0 on
AmplifyAEClient.Support D-Wave Advantage2_system1.6.
Deprecate D-Wave Advantage2_prototype2.6.
Rename
AmplifyClienttoBaseClient.Support D-Wave solver identification updates and update the dependent dwave-system package to v1.33.0.
Fix: Substitute method for high-order polynomials now correctly reduces the degree to 2.
Fix:
einsum()now correctly handles integer NumPy arrays.Fix:
FujitsuDA4Clientnow correctly handles inequality constraints without constants.
v1.4.1 (Oct 16, 2025)
v1.4.2 (Feb. 14, 2026)
Support Gurobi Optimizer 12.0.3 on
GurobiClient.Support D-Wave Advantage2_system1.11.
Fix: Update type hints for
sum().
v1.3.0 (Nov. 01, 2024)¶
Improve support for type annotations.
Improve accuracy of upper and lower bounds estimates in constraint construction.
Change advanced parameters of
solve(),parallel_solve(),equal_to(),less_equal(),greater_equal()andclamp()functions to keyword-only arguments for usability.Support Hitachi CMOS annealing on
HitachiClient.Support D-Wave Advantage2_prototype2.5.
Support input/output of models with LP and QPLIB format files.
Variablecan be used as a mapping key forsubstitute(),substitute()andis_satisfied().Support conversion from real variables to binary variables.
Add
compress_qpu_problem_dataattribute toDWaveSamplerClient,LeapHybridSamplerClientandLeapHybridCQMSamplerClient.Add support for Python 3.13, and Python 3.8 is no longer supported.
v1.3.1 (Nov. 18, 2024)
Fix: Prevent segmentation fault when accessing variables through
get_variables()orvariablesproperty on empty models.Fix: Correct
total_elapsed_timeinSolverTimingto reference the proper timing value.Fix: Update type hints for
domain_wall()andarray.
v1.2.0 (July 23, 2024)¶
Support TOSHIBA SQBM+ v2.0.3 on
ToshibaSQBM2Client.
v1.2.1 (Aug. 06, 2024)
Change supported macOS to Monterey or later.
v1.1.0 (May 13, 2024)¶
Support NEC Vector Annealing Service 2.0 on
amplify.NECVA2Client.Improve the efficiency of the
Substitutequadratization method and significantly reduce the number of auxiliary variables.Add support for Linux ARM64.
v1.1.1 (May 28, 2024)
Fix type hints for
Resultclass.
v1.0.0 (Jan. 27, 2024)¶
Release version 1.0.
v1.0.2 (Feb. 20, 2024)
Add documents in English.
Fix redundant deprecation warnings.
Add
client.oceannamespace for legacy compatibility.
v1.0.3 (Mar. 01, 2024)
Support D-Wave Advantage_system6.4.
Support D-Wave Advantage2_prototype2.2.
v1.0.4 (Mar. 15, 2024)
Fix a problem where SQBM request data is not sent correctly on Windows.
v1.0.5 (Mar. 19, 2024)
Support D-Wave Advantage2_prototype2.3.