Skip to content

Commit

Permalink
More fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Pedro Ripper committed May 28, 2024
1 parent 3b24acd commit c6d4010
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
10 changes: 6 additions & 4 deletions src/QiskitOpt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,13 @@ function quadratic_program(sampler::QUBODrivers.AbstractSampler{T}) where {T}
linear = PythonCall.pydict()
quadratic = PythonCall.pydict()

sense = MOI.get(sampler, MOI.ObjectiveSense())

for i in 1:n
linear[string(i)] = L[i]
linear[string(i)] = L[i] * (sense == MOI.MIN_SENSE ? 1 : -1)
end
for i in 1:n, j in 1:n
quadratic[string(i), string(j)] = Q[i,j]
quadratic[string(i), string(j)] = Q[i,j] * (sense == MOI.MIN_SENSE ? 1 : -1)
end

qp = qiskit_optimization.QuadraticProgram()
Expand All @@ -54,8 +56,8 @@ function quadratic_program(sampler::QUBODrivers.AbstractSampler{T}) where {T}
end

qp.minimize(linear = linear, quadratic = quadratic)

return return qp.to_ising()[0]
return qp.to_ising()
end

export VQE, QAOA
Expand Down
10 changes: 6 additions & 4 deletions src/VQE.jl
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ function QUBODrivers.sample(sampler::Optimizer{T}) where {T}
"evals" => Vector{Float64}(),
)

retrieve(sampler) do result, sample_results
retrieve(sampler) do result, sample_results, qp_offset

for key in sample_results.keys()
state = reverse(parse.(Int,split(pyconvert.(String, key),"")))
sample = QUBOTools.Sample{T,Int}(
# state:
state,
# energy:
α * (state'* (Q+Diagonal(L)) * state + β),
QUBOTools.value(state, L, Q, α, β),
# reads:
pyconvert(Int, sample_results[key])
)
Expand Down Expand Up @@ -111,7 +111,9 @@ function retrieve(
_backend
end

ising_hamiltonian = quadratic_program(sampler)
ising_qp = quadratic_program(sampler)
ising_hamiltonian = ising_qp[0]
qp_offset = ising_qp[1]
ansatz = ansatz_instance(num_qubits = num_qubits)

# pass manager for the quantum circuit (optimize the circuit for the target device)
Expand Down Expand Up @@ -160,7 +162,7 @@ function retrieve(
sampling_result = qiskit_sampler.run(pylist([optimized_qc])).result()[0]
samples = sampling_result.data.meas.get_counts()

callback(result, samples)
callback(result, samples, qp_offset)

return nothing
end
Expand Down

0 comments on commit c6d4010

Please sign in to comment.