qiskit的QAOA / VQE对某些海森堡哈密顿主义者给出了奇怪的结果

问题描述

  • Qiskit Aqua版本:0.7.3
  • Python版本:3.8
  • 操作系统:Windows 10

我想使用QAOA算法找到不同海森堡哈密顿量的基态能量。但是对于某些哈密顿算子,我总是得到绝对错误的解,而对于其他哈密顿算子,或多或少的类似哈密顿算子却有效。

在python中,我使用定义了哈密顿量

def heisenberg(nqubits,nlist,b = 1):

spin_spin = 0
for item in nlist:
    n = item[0]
    k = item[1]
    
    x_gate = (I^ n) ^ X ^ (I^(k - n - 1)) ^ X ^ (I ^ nqubits - 1 -k)
    y_gate = (I^ n) ^ Y ^ (I^(k - n - 1)) ^ Y ^ (I ^ nqubits - 1 -k)
    z_gate = (I^ n) ^ Z ^ (I^(k - n - 1)) ^ Z ^ (I ^ nqubits - 1 -k)
    spin_spin += (SummedOp([x_gate,y_gate,z_gate],b))
    #spin_spin += (SummedOp([x_gate],b))
    
magnetic = 0
for n in range(nqubits):
    magnetic += (I ^ n) ^ Z ^ (I ^ (nqubits - n - 1))

heisenberg = magnetic.add(spin_spin)   
return heisenberg,

nlist仅是最近的邻居列表。 现在,我为QAOA算法给出nqubit = 4且nlist = [[0,1],[0,3],[1,2],[2,3]]的哈密顿量(在翻译之前 一个WeightedPauliOperator ..),然后在statevector / qasm模拟器上运行它。现在我得到的不是E = -8的地面能量,而是E = 4。

另一方面,更改哈密顿量,使其仅对spin_spin循环中的x_gates求和,QAOA将为我提供正确的结果或合理的结果。

鉴于QAOA算法只是构造了一个电路,然后将其传递给VQE算法,可能是在此引起问题。而且我认为这与VQE如何评估“成本函数”有关。

不幸的是,我找不到确切的原因,希望这里有人可以帮忙。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)