Python 模型约束和目标函数参数的动态更新

Python 模型约束和目标函数参数的动态更新,python,python-2.7,gurobi,Python,Python 2.7,Gurobi,我正在寻找一些帮助来优化我的代码执行 我建立了一个模型预测控制,并使用Gurobi QP解算器在线解决QP问题 对于每个示例时间,代码都会创建一个新的模型、变量和约束。问题的结构在单个模拟过程中不会发生变化,而是会改变约束系数和目标函数的值 我想找到一种方法来更新这些系数,以减少求解器的执行时间 现在,每次都有60%以上的执行时间通过构建新约束 在代码示例中,QP问题是: 目标函数:x^t H x+F^t x | | | | | |约束:A x我想知道如果你发布一些代码是否会更容易帮助矩阵A|c

我正在寻找一些帮助来优化我的代码执行

我建立了一个模型预测控制,并使用Gurobi QP解算器在线解决QP问题

对于每个示例时间,代码都会创建一个新的模型、变量和约束。问题的结构在单个模拟过程中不会发生变化,而是会改变约束系数和目标函数的值

我想找到一种方法来更新这些系数,以减少求解器的执行时间

现在,每次都有60%以上的执行时间通过构建新约束

在代码示例中,QP问题是:


目标函数:x^t H x+F^t x | | | | | |约束:A x我想知道如果你发布一些代码是否会更容易帮助矩阵A|cons和H稀疏?矩阵A|cons稀疏,但矩阵H已满。
%Code Example

import numpy as N
import gurobipy as gpy
m=gpy.Model()
H=mpcSim.H
A_cons=N.asarray(mpcSim.A_cons)
b=N.asarray(mpcSim.b)
F=mpcSim.F

n_cons,n_stato=A_cons.shape

x={}
for ii in range(n_stato):
    x[ii]=m.addVar(lb=-1e20,ub=1e20,name='x{}'.format(ii))

m.update()    

for ii in range(n_cons):
    m.addConstr(gpy.quicksum(A_cons[ii,jj]*x[jj] for jj in range(n_stato)), gpy.GRB.LESS_EQUAL, b[ii,0],name='Const{}'.format(ii))
m.update()

obj1=gpy.quicksum(gpy.quicksum(H[ii,jj]*x[ii] for ii in range(n_stato))*x[jj] for jj in range(n_stato))
obj2=gpy.quicksum(F[ii,0]*x[ii] for ii in range(n_stato))


m.setObjective(obj1+obj2)

m.optimize()