Release Notes


Bug Fixes

  • Allow Qiskit’s Optimizer classes as input for the optimizer in the VQEProgram and QAOAProgram instead of only dictionaries.


New Features

  • Adds the support of indicator constraints (e.g. x=1 -> y+z=1) in from_docplex_mp() using the big-M formulation.

  • Introduced a new converter class qiskit_optimization.converters.LinearInequalityToPenalty. It converts the following inequality constraints to penalty terms where x, y, \(x_i\) are binary variables and P is a penalty factor.

    \[\begin{split}\begin{array}{} \text { Inequality constraint } & & \text { Penalty term } \\ x \leq y & \rightarrow & P(x-x y) \\ x \geq y & \rightarrow & P(y-x y) \\ \sum_{i=1}^n x_i \leq 1, n \geq 2 & \rightarrow & P \sum_{i, j : i < j} x_i x_j\\ \sum_{i=1}^n x_i \geq n-1, n \geq 2 & \rightarrow & P \sum_{i, j : i < j} (1 - x_i) (1 - x_j) \end{array}\end{split}\]
  • Allow leveraging Qiskit Runtime to execute VQE and QAOA in the cloud using the VQEProgram and QAOAProgram.

Upgrade Notes

  • QuadraticProgram.pprint_as_string and QuadraticProgram.prettyprint have been removed, which were deprecated in Qiskit Aqua 0.8.0 release (October 2020).

  • Changes qiskit_optimization.algorithms.MinimumEigenOptimizer.solve() to return the best solution in terms of the original problem, i.e., MinimumEigenOptimizationResult.samples[0], as qiskit_optimization.algorithms.MinimumEigenOptimizationResult.x(). It used to be the best solution in terms of the converted QUBO problem, i.e., MinimumEigenOptimizationResult.raw_samples[0].

Deprecation Notes

Bug Fixes

  • Sorts the order of result.get_counts(qc) by bitstring in qiskit_optimization.algorithms.GroverOptimizer when qasm_simulator is used so that the algorithm behaves deterministically. The previous version sorts the counts by probabilities, but some bitstrings may have the same probability and the algorithm could behave probabilistically.