一.单目标线性规划:
单目标规划就是只有一个目标函数。转化成线性规划问题,就是按照下面这种形式,找到其目标函数和约束条件。
变量定义:
c是目标函数中决策变量前的系数组成的列向量。
A是所有“小于等于不等式”变量前的系数构成的矩阵,不同不等式用分号隔开代表换行。
b是所有“小于等于不等式”右边的值,同样用分号隔开。
Aeq是等式约束条件中变量前的系数组成的矩阵。
beq是等式约束条件中等式右侧的数值。
lb,ub表示变量范围。
注意事项:
①matlab指令只能求最小值。(若是求最大值就加符号)
②约束条件一定是小于等于。(若是大于就加符号)
③若范围是跟0比较的,如大于0或者小于0,可用函数zeros(m,n)构造m行n列的矩阵。
④linprog函数返回变量的最优值和目标函数的最小值。(最后一行是把y取反赋值,x保持不变)
⑤决策变量个数要求 ≥2。
例题:
根据要求⑤的例题:
上面这个例题就是转化为线性规划,构造两个决策变量,以满足线性规划的条件。
二.多目标规划:
例题:
因为目标函数有两个,所以是多目标规划问题,我们要转化为线性规划去解决。
因此需要去掉一个目标函数放在约束条件里,有两种解决方案:
①限制最小损失,优化收益。
②限制最大收益,降低损失。