当前位置:   article > 正文

Gurobi建模求解非线性规划_gurobi求解非线性规划

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个决策变量的数值:

  1. variable = []
  2. for v in model.getVars():
  3. print(v.varName, v.x)
  4. variable.append(v.x)
  5. for i in range(0, m):
  6. print(variable[i])

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/612128
推荐阅读
相关标签
  

闽ICP备14008679号