我试图通过定义一个NxN对称矩阵和一个N维随机偏差向量,用Gekko和qobj
解决一个二次二元优化问题。然而,我观察到计算时间低得令人怀疑:用N=20求解2e-2s,用0.05s求解200维问题。此外,我从未得到超过3-4次迭代。我是不是遗漏了什么
import numpy as np
N = 20
#create square symmetric matrix for the quadratic term
b = np.random.normal(0,1,(N,N))
Q = (b + b.T)/2
#bias vector for linear term
c=np.random.normal(0,1,N)
from gekko import GEKKO
m = GEKKO(remote=False)
z = m.Array(m.Var,N,integer=True,lb=0,ub=1,value=1)
m.qobj(c,A=Q,x=z,otype='min')
m.solve(disp=True)
任何建议都将不胜感激
切换到APOPT解算器以获得混合整数解
这是完整的脚本。MIQP问题通常非常快。如果问题是非线性(NLP)和混合整数元素(MINLP),则速度会显著减慢
相关问题 更多 >
编程相关推荐