学习了上一期的model对象后,这一期就要尝试使用model去解决一些优化问题了。
1. 线性优化
线性优化问题是优化问题中最简单直观的,如
求最值:
加一些线性约束:
加一些边界限制:
问题描述包括以下元素:
m和n,限制与变量的数量;x,长度为n的矢量变量;c,长度为n的系数向量。
cf, 对象中的确定项。A:m*n的系数矩阵
约束的上下界,
变量的上下界。
线性优化实例1: 边界限制:
实现:
# include "fusion.h"
using namespace mosek::fusion;
using namespace monty;
//model 初始化
Model::t M = new Model("lo1"); auto _M = finally([&]() { M->dispose(); });
M->setLogHandler([ = ](const std::string & msg) { std::cout << msg << std::flush; } );
//输入线性系数
auto A1 = new_array_ptr<double, 1>({ 3.0, 1.0, 2.0, 0.0 });
auto A2 = new_array_ptr<double, 1>({ 2.0, 1.0, 3.0, 1.0 });
auto A3 = new_array_ptr<doubl