Gurobi优化器使用(一)搭建并求解一个优化模型的过程【C++环境】
日期:2024-09-09 13:00:02 / 人气:
Gurobi优化器使用(一)搭建并求解一个优化模型的过程 【C++环境】
当系数已存入到外部的模型文件中需要读取时可以采用该方法建模,否则不推荐这种方式.
待解决的问题如下:
-
构建Gurobi环境
-
建立模型的实例
-
添加优化变量
注意: 传入的是指针
-
添加约束
① GRBLinExpr是线性表示类,源代码通过运算符重载,使它可以表示为GRBVar* vars的线性组合.
② sense是char类型,指约束的不等关系,‘>’
③ rhs是不等式右边的项
④ 一次只能添加一个约束,可以放到循环里面 -
设置目标函数
目标函数是二次型,与GRBLinExpr一样的方式,不过obj可以表示为二次。
-
添加目标函数,并进行优化
-
保存优化好的模型
-
打印优化结果
打印最优目标值和最优解
-
释放空间
一般定义了指针的话需要手动释放变量和环境
这种建模方式直接了当.
两种方法求解结果是一样的
以.lp模型为例。
大部分内容跟上面是类似的,只不过在model构造函数的时候,从filename中读取模型。然后再获得变量值,进行模型优化。值得注意的是,lp文件指保留了模型的信息,并没有保存上一次优化后的结果。因此需要重新优化一下方可显示结果。