导航菜单
首页 >  543 C++的SDP建模与优化  > 5.1.3. C++ 的LP建模和优化

5.1.3. C++ 的LP建模和优化

5.1.3. C++ 的LP建模和优化¶

在本节中,我们将使用 MindOpt C++ API,以按行输入的形式来建模以及求解 线性规划问题示例 中的问题。

首先,引入头文件:

24#include "MindoptCpp.h"

并创建优化模型:

33MDOEnv env = MDOEnv();34MDOModel model = MDOModel(env);

接下来,我们通过 MDOModel::set() 将目标函数设置为 最小化,并调用 MDOModel::addVar() 来添加四个优化变量(有关 MDOModel::set() 和 MDOModel::addVar() 的详细使用方式,请参考 C++ API):

41/* Change to minimization problem. */42model.set(MDO_IntAttr_ModelSense, MDO_MINIMIZE);4344/* Add variables. */45std::vector x;46x.push_back(model.addVar(0.0, 10.0, 1.0, MDO_CONTINUOUS, "x0"));47x.push_back(model.addVar(0.0, MDO_INFINITY, 2.0, MDO_CONTINUOUS, "x1"));48x.push_back(model.addVar(0.0, MDO_INFINITY, 1.0, MDO_CONTINUOUS, "x2"));49x.push_back(model.addVar(0.0, MDO_INFINITY, 1.0, MDO_CONTINUOUS, "x3"));

接着,我们开始添加线性约束:

51/* Add constraints. */52model.addConstr(1.0 * x[0] + 1.0 * x[1] + 2.0 * x[2] + 3.0 * x[3] >= 1.0, "c0");53model.addConstr(1.0 * x[0] - 1.0 * x[2] + 6.0 * x[3] == 1.0, "c1");

问题输入完成后,再调用 MDOModel::optimize() 求解优化问题:

58model.optimize();

求解完成后,可以通过获取属性值的方式来获取对应解的优化目标值和变量的取值:

59if (model.get(MDO_IntAttr_Status) == MDO_OPTIMAL)60{61cout

相关推荐: