网站大量收购独家精品文档,联系QQ:2885784924

机工社数学建模:算法与编程实现教学课件第06讲_投资优化策略.pptx

机工社数学建模:算法与编程实现教学课件第06讲_投资优化策略.pptx

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;; 本章继续讨论规划模型:二次规划,多目标规划,并结合投资优化策略案例来展开。 投资的基本目的:获得投资收益,实现财富的保值、增值。 投资的选择有:实物(房地产、艺术品、黄金等),非实物(金融:银行储蓄、股票、基金、债券等)。 那么该如何选择投资呢?无风险资产(储蓄、国债等),收益率确定,当然选最高的就好;有风险资产(房地产、股票等),收益与风险并存,如何选择? 投资要解决的矛盾:收益最大,风险最小,即需要平衡投资的收益与风险。 ; 马可维茨建议,风险可以用收益的方差(或标准差)来衡量,表示成目标函数是二次函数,就是二次规划问题;收益是一个目标,风险是一个目标,投资金额是有限的,用数学模型表示就是两目标优化问题。 本章用到的编程技术是,用 MATLAB 求解二次规划,与多目标规划。;一. 二次规划 若某非线性规划的目标函数为决策变量的二次函数,约束条件又全是线性的,则称为二次规划。 二次规划用 Lingo 求解同样很简单,但本章的投资优化策略案例涉及较多操作数据、计算数据,这在 Lingo 中不太方便,故选用 MATLAB 来实现。 MATLAB 中 二次规划的数学模型的标准形式为: ;?;例 6.1 用 MATLAB 求解如下二次规划: 这里的关键是将规划模型用矩阵语言表示为标准形式。; 目标函数中的二次项: 故 目标函数中的一次项: 故 ;?;MATLAB 代码: H=[4, -4; -4, 8]; f=[-6; -3]; a=[1, 1; 4, 1]; b=[3; 9]; lb = zeros(2,1); x0 = rand(2,1); [x, val, flag] = quadprog(H, f, a, b, [], [], lb, [], x0) ;?;若用 Lingo 求解前面的二次规划示例更简单,代码如下: min = 2 * x1^2 - 4 * x1 * x2 + 4 * x2^2 - 6 * x1 - 3 * x2; x1 + x2 3; 4 * x1 +? x2 9; 运行结果:? ? ? ? ? ? ? ?? Global optimal solution found. ? ?Objective value:? ? ? -11.02500? ? ?Variable? ? ? ? ?Value? ? ? ? Reduced Cost ? ?X1? ? ? ? 1.950039? ? ? ? ? -0.7454422E-08 ? X2? ? ? ? 1.049961? ? ? ? ? -0.1034892E-07;二. 多目标规划 很多实际问题,都需要在一定约束条件下考虑实现多个目标,这些目标往往是相互??争的关系,这样的规划模型称为多目标规划。 多个目标函数,表示为向量目标函数: ;?;求解多目标规划的方法,通常有: 化多目标为单目标:将多个目标按其重要程度加权合成为单个目标函数,或者采用理想点法,即先求出每个单目标最优函数值,再将目标函数表示为到这些单目标最优值的欧氏距离,从而转化为单目标; 分层序列法(序贯法):目标按其重要性给出一个序列,每次都在前一目标最优解集内求下一个目标最优解,直到求出共同的最优解; 帕累托寻优:即找到帕累托解集,帕累托解均满足:一个目标的改进,是以另一个目标的变坏为代价的。 ;例 6.2(多目标规划算例)用 MATLAB 求解如下多目标线性规划: ;1. 多目标加权合成单目标;?;?;Matlab 代码: function [c,ceq] = nonlincons(x) c(1) = (x(1)^2)/9 + (x(2)^2)/4 - 1; c(2) = x(1)^2 - x(2) - 1; ceq = x(1) * x(2) - 2; 回到例6.2的求解: A = [-1 -1 0 0 0 0 -1 -1 3 0 2 0 0 3 0 2]; b = [-30 -30 120 48]; c1 = [-100 -90 -80 -70]; c2 = [0 3 0 2]; ;% 求第一个目标函数值 [x1, g1] = linprog(c1,A,b,[],[],zeros(4,1)); % 求第二个目标函数值 [x2, g2] = linprog(c2,A,b,[],[],zeros(

文档评论(0)

allen734901 + 关注
实名认证
内容提供者

副教授持证人

知识共享

领域认证该用户于2024年11月14日上传了副教授

1亿VIP精品文档

相关文档