matlab小课堂03—线性规划应用问题(投资收益与风险)

基本假设:

  • 设M=1便于计算
  • 总体风险用投资项目Si中最大的一个风险来度量

符号

  • Si——第i种投资项目
  • ri,pi,qi——分别为Si的平均收益率,风险损失率,交易费率
  • Xi投资Si的金额

目标函数

  • MAX sumXi(ri-pi)
  • MIN (max(qixi))

约束条件

  • sumXi(1+pi)=M
  • Xi>=0

思路:
双目标函数求解,只能将其中一个设为目标函数,另一个约束在给定的范围内作为约束条件

以下程序以MAX sum(Xi(ri-pi))作为目标函数
1.确定目标函数:MAX sum(Xi(ri-pi))
2.确定约束条件:(X=[x0;x1;x2;x3;x4])
(1)等式条件:x0(银行存款不用交交易费)+1.01x1+1.02x2+1.045x3+1.065x4=1
(2)不等式条件:0.025x1<=a;0.015x2<=a;0.055x3<=a;0.026x4<=a
(3)自变量取值条件:Xi>=0
 

//线性规划实现代码示例
a=0;  //将风险控制在a以下
while (a<0.1)
c=[-0.05 -0.27 -0.19 -0.185 -0.185];  // 求MAX值,故需转换符号,求MIN -z
// 不等式约束,最大风险小于a转换为每个风险均小于a
A=[0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026];
b=[a;a;a;a];
// 等式约束条件
Aeq=[1 1.01 1.02 1.045 1.065];
beq=[1];
// 自变量取值约束条件
vlb=[0;0;0;0;0];
vub=[];
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub);
Q=-fval;  // 收益率转回正值
plot(a,Q,'.');hold on //每次只画一个点,不关
a=a+0.001;
end
xlabel('a');ylabel('Q');
 

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性规划是一种优化问题,用于最大化或最小化一个线性函数,同时满足一组线性约束条件。它在许多实际问题中都有广泛的应用,例如生产规划、资源分配、物流管理等。 下面以一个简单的生产规划问题为例,介绍线性规划应用和如何用MATLAB和Lingo实现。 假设一家公司有两个工厂,分别生产产品A和B。每个工厂有不同的生产能力和成本。产品A的售价为100元,产品B的售价为150元。公司希望确定每个工厂的生产量,以最大化利润。此外,公司需要满足以下约束条件: 1. 工厂1和工厂2的生产量之和不超过2000个单位。 2. 工厂1的生产量不超过1000个单位。 3. 工厂2的生产量不超过1500个单位。 该问题可以用以下线性规划模型表示: 目标函数:maximize 100x1 + 150x2 约束条件: x1 + x2 <= 2000 x1 <= 1000 x2 <= 1500 其中,x1和x2分别表示工厂1和工厂2的生产量。 用MATLAB实现: MATLAB中可以使用linprog函数求解线性规划问题。以下是求解上述问题MATLAB代码: ```matlab f = [-100, -150]; A = [1, 1; 1, 0; 0, 1]; b = [2000; 1000; 1500]; lb = [0; 0]; ub = []; [x, fval] = linprog(f, A, b, [], [], lb, ub); disp(x); disp(fval); ``` 输出结果为: ``` x = 1000.0000 500.0000 fval = -125000.0000 ``` 其中,x表示每个工厂的生产量,fval表示最大利润。 用Lingo实现: Lingo是一款商业线性规划软件,可以快速求解复杂的线性规划问题。以下是求解上述问题的Lingo代码: ``` max = 100*x1 + 150*x2; con1: x1 + x2 <= 2000; con2: x1 <= 1000; con3: x2 <= 1500; @GIN(x1, x2); ``` 输出结果为: ``` Optimal Solution found at step 2 Objective value: -125000 Variable Value x1 1000 x2 500 ``` 其中,x1和x2表示每个工厂的生产量,Objective value表示最大利润。 总结: 线性规划是一种强大的优化工具,可以应用于许多实际问题中。MATLAB和Lingo都提供了求解线性规划问题的工具,可以根据具体需求选择使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值