import numpy as np import pandas as pd from qiskit_optimization.algorithms.admm_optimizer import ADMMParameters, ADMMOptimizer from qiskit_optimization.algorithms import MinimumEigenOptimizer from qiskit.algorithms import VQE from qiskit import Aer # Import Aer for a simulator backend from qiskit.circuit.library import TwoLocal from qiskit.algorithms import VQE from qiskit.algorithms import QAOA from qiskit.algorithms.minimum_eigensolvers.qaoa import QAOA #from qiskit.algorithms.minimum_eigensolvers import VQE, SamplingVQE, QAOA, NumPyMinimumEigensolver from qiskit.primitives import Sampler from qiskit_optimization.algorithms import CobylaOptimizer, MinimumEigenOptimizer ,CplexOptimizer from qiskit_optimization.algorithms import MinimumEigenOptimizer from qiskit.algorithms.optimizers import SLSQP from qiskit.algorithms.optimizers import COBYLA # You can choose a different optimizer if needed from qiskit.algorithms.optimizers import SPSA import matplotlib.pyplot as plt from qiskit import * #from qiskit import QuantumCircuit, Aer, transpile #from qiskit.visualization import circuit_drawer from qiskit_optimization.converters import QuadraticProgramToQubo from qiskit_optimization.converters import QuadraticProgramConverter import numpy as np from qiskit.circuit.library import NLocal, CCXGate, CRZGate, RXGate from qiskit.circuit.library import * from qiskit.circuit import Parameter from qiskit.algorithms.optimizers import ADAM import time
ts = 5 # simulation time deltat = 1 Rgh = 5 Cgh = 6 uj = 3
Pre_m = 2*np.array([8.50, 10.49, 11.32, 8.18, 8.58, 9.45, 9.69, 4.91, 8.76, 7.57, 8.01, 10.51, 9.82, 11.02, 10.06, 9.25, 10.68, 10.83, 6.82, 6.27, 4.13, 6.42, 5.89, 6.70, 5.76, 2.35, 3.85, 3.88, 6.38, 8.14, 6.25, 7.88, 5.60, 6.35, 8.86, 7.30, 7.95, 7.65, 7.53, 8.67, 9.22, 8.86, 6.05, 8.36, 8.44, 5.97, 9.19, 6.76, 9.72, 8.37, 8.83, 9.33, 12.31, 10.12, 9.87, 11.30, 8.91, 12.47, 10.64, 11.21, 8.94, 12.02, 9.68, 11.01, 9.25, 7.07, 6.41, 6.08, 6.02, 5.74, 5.17, 4.88, 5.75, 6.56, 10.41, 6.78, 5.32, 6.09, 8.05, 6.50, 7.09, 8.94, 8.93, 9.05, 8.18, 8.67, 8.02, 6.43, 7.15, 8.72, 9.90, 11.04, 10.78, 12.00, 9.51, 9.86]) Tou_h = np.array([38.82112207, 38.2808183, 37.76491734, 40.21288666, 37.09664488, 36.77871271, 38.08088267, 36.59613746, 36.32740985, 38.05341586, 37.58868324, 36.18691894, 37.27378128, 35.07493817, 37.332913, 36.16528062, 37.25247236, 35.22935084, 35.74602155, 35.37976084, 35.48390953, 34.62145745, 37.922516, 37.50878244, 38.81967434, 37.01628543, 35.78390157, 38.75321128, 40.60881501, 40.66334705, 41.79105363, 40.87280339, 43.33874567, 41.06449637, 43.55174199, 43.0861209, 41.62832754, 44.5581135, 45.23333016, 43.68208703, 46.11713574, 45.78148783, 47.72371012, 46.7572511, 45.66096755, 45.94097134, 49.25862704, 47.70763932, 47.47491125, 46.76006776, 48.17807142, 45.84065171, 46.02762646, 48.36254951, 46.20057279, 46.3095513, 48.25154574, 47.40221291, 45.43822117, 44.13594743, 44.93033435, 43.50772539, 43.29369532, 44.26928879, 43.16851044, 43.75821898, 41.07450316, 42.04795551, 42.03537262, 40.45984955, 41.14728012, 39.38063595, 38.89883983, 38.93609557, 38.6806342, 41.12550332, 36.47518702, 41.28278867, 40.46446296, 39.60547336, 37.52022612, 37.59897493, 37.37047214, 35.27023714, 36.14302038, 36.33933003, 36.19468124, 34.22577591, 35.38898793, 35.35273403, 37.73981324, 37.1695905, 37.13203231, 38.52910166, 36.85552447, 38.16954023]) Tin_ref = np.array([26]*20 + [24]*76) Sgh = 80 * 100 e = 25 # Glazing material thickness K = 0.19 # Glazing material conductivity Rgh = 5 Cgh = 6 # capacity thermique of HVCA # Create a Docplex model mdl = Model(name='temperature_minimization') Tin_h = {t: mdl.continuous_var(name=f'Tin_h_{t}', lb=0, ub=max(Tou_h)) for t in range(ts)} Uh_gh = {t: mdl.continuous_var(name=f'Uh_gh_{t}', lb=-15.6, ub=15.6) for t in range(ts)} # Temperature model constraints for t in range(ts - 1): mdl.add_constraint(Tin_h[t + 1] == Tin_h[t] - (deltat / (Rgh * Cgh)) * (Tin_h[t] - Tou_h[t]) - uj * Rgh * Uh_gh[t]) # Define objective function obj_function = mdl.sum((Tin_h[t] - Tin_ref[t]) ** 2 for t in range(ts)) mdl.minimize(obj_function) # Convert Docplex model to Qiskit QuadraticProgram mod = from_docplex_mp(mdl) qp2qubo = QuadraticProgramToQubo() qubo = qp2qubo.convert(mod) theta=np.pi/6 theta1=np.pi/4 num_qubits = mod.get_num_vars() qr = QuantumRegister(num_qubits) cr = ClassicalRegister(num_qubits) circuit = QuantumCircuit(qr, cr) initial_vector = [0.+0.j, 1.+0.j] #Example initialization of specific qubits circuit.initialize(initial_vector, qr[0]) circuit.initialize(initial_vector, qr[1]) circuit.h(qr[i] for i in range(num_qubits)) #Apply Hadamard gate to the first qubit (or any other operations you need) ansatz = NLocal( #Define the ansatz without initial state (we'll combine them later) num_qubits=num_qubits, rotation_blocks=[RXGate(theta), CRZGate(theta), RZGate(theta1), CRYGate(theta1),RYGate(theta)], #entanglement='full', entanglement_blocks=CCXGate(), entanglement=[[0, 3, 2], [0, 1, 3], [4, 2, 1], [3, 2, 0]], reps=1, insert_barriers=True ) print(ansatz) optimizer = COBYLA(maxiter=100) vqe = VQE(ansatz, optimizer, quantum_instance=Aer.get_backend('qasm_simulator')) vqe_optimizer = MinimumEigenOptimizer(vqe) result = vqe_optimizer.solve(qubo)
he gives me this errror : qiskit_optimization.exceptions.QiskitOptimizationError: 'Incompatible problem: Continuous variables are not supported! Can not convert inequality constraints to equality constraint because float coefficients are in constraints. '