一、线性规划问题与模型
二、线性规划定义
目标函数和约束条件必须是线性函数。
三、MATLAB中求解线性规划的基本描述式
MATLAB中求的是最小值,如果要求最大值只需要在目标函数前面加一个负号就可以。
在MATLAB中求线性有标准库,需要有基本的规范
规范如下:
例题:
f:
标准形式min C^T*x,现在要求最大值,所以给他加负号就行
f=[-2;-3;-5];
a、b:
然后看标准式子里的Ax <=b
在这道题中
因为标准式里都是小于所以给第一个式子加负号
a=[-2,5,-1;1,3,1];
b=[-10;12];
Aeq、Beq:
看标准式里的Aeq * x=Beq
在这道题中
所以Aeq=[1,1,1];
Beq=7;
现在已经转换为MATLAB标准形式,可以用MATLAB来求最优解
[x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
zeros(3,1)是生成一个三行一列的全是零的数据
x,y=-y:
此时求出的是最小值,现在再加一个负号就是最大值了
代码演示:
>> f=[-2;-3;5];
>> a=[-2,5,1;1,3,1];
>> b=[-10;12];
>> aeq=[1,1,1];
>> beq=7;
>>> [x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
>> x,y=-y
x =
6.4286
0.5714
0
y =
14.5714
四、总结
线性规划问题先把数学的式子转换为MATLAB的标准,然后再用linprog求最优解。
但是很多问题根本就不是线性,这时候我们需要将其转换为线性
五、例题
解题过程:
如果没有a没法求解,要考虑老板能接受的投资风险,
可以给老板列出每次增长0.001风险度的情况
代码如下:
代码运行结果如图:
可以看出收益率随着风险的上升逐渐上升,但是增长趋势逐渐平缓
建议选择风险度在0.025以下的产品
第二种模型,只需要我的收益不小于K就行
第三种模型,投资总风险减去投资总收益最小即可,或者总收益减去总风险最大