示例#1
0
from qiskit.aqua.algorithms import NumPyMinimumEigensolver
from qiskit.optimization.algorithms import GroverOptimizer, MinimumEigenOptimizer
from qiskit.optimization.problems import QuadraticProgram
from qiskit import BasicAer
from docplex.mp.model import Model

backend = BasicAer.get_backend("statevector_simulator")

model = Model()
x0 = model.binary_var(name="x0")
x1 = model.binary_var(name="x1")
x2 = model.binary_var(name="x2")
model.minimize(-x0 + 2 * x1 - 3 * x2 - 2 * x0 * x2 - 1 * x1 * x2)
qp = QuadraticProgram()
qp.from_docplex(model)
print(qp.export_as_lp_string())

from qiskit.aqua import QuantumInstance

grover_optimizer = GroverOptimizer(6, num_iterations=10, quantum_instance=backend)
results = grover_optimizer.solve(qp)
print("x={}".format(results.x))
print("fval={}".format(results.fval))

exact_solver = MinimumEigenOptimizer(NumPyMinimumEigensolver())
exact_result = exact_solver.solve(qp)
print("x={}".format(exact_result.x))
print("fval={}".format(exact_result.fval))

# Since the `pytket` extension modules provide an interface to the widest variety of devices and simulators out of all major quantum software platforms, the simplest advantage to obtain through `pytket` is to try using some alternative backends.
#
            if (ii != jj):
                quadraticCoeffDict[(z[ii], z[jj])] = penalty
            else:
                quadraticCoeffDict[(z[ii], z[jj])] = quadraticCoeffs[ii][jj]
        else:
            quadraticCoeffDict[(z[ii], z[jj])] = quadraticCoeffs[ii][jj]

#backend = BasicAer.get_backend('statevector_simulator')

qubo = QuadraticProgram()
for ii in range(numOfItems + backPackCap):
    qubo.binary_var(z[ii])

qubo.minimize(linear=linearCoeff, quadratic=quadraticCoeffDict)

print(qubo.export_as_lp_string())
"""qaoa_mes = QAOA(quantum_instance=BasicAer.get_backend('statevector_simulator'));

qaoa = MinimumEigenOptimizer(qaoa_mes)   # using QAOA
qaoa_result = qaoa.solve(qubo)
print(qaoa_result)"""

quantumBackend = QuantumInstance(provider.get_backend('ibmq_qasm_simulator'),
                                 shots=2048,
                                 skip_qobj_validation=False)

qaoa_mes = QAOA(quantum_instance=quantumBackend)
qaoa = MinimumEigenOptimizer(qaoa_mes)
# using QAOA
qaoa_result = qaoa.solve(qubo)
print(qaoa_result)