Gurobi建模求解非线性规划

gurobi可以求解多种类型的优化问题,如线性规划、二次规划、二阶锥规划及非线性规划问题等。

当目标函数为非线性时,默认要求函数为凸函数,即矩阵Q为半正定矩阵(PSD),否则会报错,显示目标 Objective Q not PSD ,问题无法求解;

同理,当约束条件非线性时,约束函数可能也是非凸的,会出现如下报错:

gurobipy.GurobiError: Constraint Q not PSD (diagonal adjustment of 2.9e+01 would be required). Set NonConvex parameter to 2 to solve model.

 此时,需要设置NonConvex参数为2 ,即

model.Params.NonConvex = 2

 模型将按照求解MIP的逻辑来求解此类非凸问题。

Continuous model is non-convex -- solving as a MIP

设置目标函数:model.setObjective(obj, GRB.MINIMIZE) # 添加目标函数

设置是否输出迭代过程及运算法则等内容(1是0否):model.setParam('OutputFlag', 1)

执行模型model优化:model.optimize()

输出决策变量名称及最优解数值、输出最优解的前20个决策变量的数值:

variable = []
for v in model.getVars():
    print(v.varName, v.x)
    variable.append(v.x)
for i in range(0, m):
    print(variable[i])

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值