- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二投资策略.doc
二、投资策略
基本思路
该问题是简单的优化问题,目的是找到最佳的投资策略。建立有向带权图的模型表示策略,利用最短路径算法求解。
模型建立
Ⅰ.根据题目中对问题的描述,将投资策略的最优化问题转化为图的模型。建立一个带权有向图,,其中表示第年买入,第年卖出的净成本(单位:千元),为投资的总年数。根据题意有。
Ⅱ.为了处理方便,我们用邻接矩阵来表示一个带权有向图。根据题目所给的条件,得到邻接矩阵如下:
Ⅲ.根据得到的邻接矩阵,建立带权有向图如下,有向图中边的权值对应。该问题是寻找投资的最便宜策略,对应建立的图的模型,即是求从顶点1到顶点6的对端路径。
Ⅳ.由以上建立的模型,利用带权有向图的最短路径算法,求解最优策略
模型求解
求解带权有向图的最短路径的问题,可以使用采用Dijkstra算法、Floyd算法、动态规划法等。这里我们使用最常用的Dijkstra算法求解。采用MATLAB仿真,源程序见附录。仿真得到的结果:
最低成本(最短距离)为
即五年投资的最低成本为19千元。
最优策略(最短路径)为
即最便宜的投资策略为第1年买进,第3年卖出;第3年买进,第6年卖出。
附录
Dijkstra算法MATLAB源代码
clc; clear;
[G, n] = Init_Gragh();%利用数据构建带权有向图G
[Min, Path] = Dijkstra(G, n);%Dijkstra求解
function [G, n] = Init_Gragh()
n = 6;%顶点个数
G = [
0 4 6 9 12 20
0 0 5 7 11 16
0 0 0 6 8 13
0 0 0 0 8 11
0 0 0 0 0 10
0 0 0 0 0 0
];%邻接矩阵
end
function [Min, Path] = Dijkstra(G, n)
priors = ones(1, n);%记录从源点到各顶点最短路径上的前趋
solved = zeros(1, n);%最短路径已经求出的顶点
distance = zeros(1, n);%存放各顶点的距离值
for i = 1 : n
G(i, i) = Inf;%Dijkstra算法要求顶点到自身不可达
distance(i) = G(1, i);%初始到各顶点距离
end
solved(1) = 1;%起点进入解集
distance(1) = 0;%起点到自身距离为0
for i = 1 : n%扩充红点集
k = 0;
Min = Inf;
for j = 1 : n%找当前距离起点最小的顶点
if solved(j) == 0 distance(j) Min
Min = distance(j);
k = j;
end
end
if Min == Inf%说明没有可扩展顶点
break;
end
solved(k) = 1;%将距离最短的顶点加入解集
for j = 1 : n%调整当前到其余点最短距离
if solved(j) == 0 distance(j) distance(k) + G(k, j)
distance(j) = distance(k) + G(k, j);
priors(j) = k;%k是j的前趋
end
end
end
Min = distance(1, n);%得到最短距离
prior = n;%从终点开始向前找前趋
i = 1;
while prior ~= 1%只到前趋遍历到起点
Path(i) = prior;
i = i + 1;
prior = priors(prior);
end
Path(i) = prior;
Path = fliplr(Path);
end
您可能关注的文档
最近下载
- 【深信服】安全PT1-atrust认证备考题库(含答案).docx VIP
- 招标代理服务服务方案.doc VIP
- 表面清洁器具 第4部分:家用和类似用途无线干式真空吸尘器 性能测试方法.pdf VIP
- GB50500-2013建设工程工程量清单计价规范.doc VIP
- innov-x delta中文操作手册2014.pdf VIP
- 15J401 钢梯国家标准图集.pdf VIP
- 《纤维混凝土应用技术规程》JGJ@T221-2010(高清-有效).pdf VIP
- 财务报表-应收账款分析表-自动计算.xlsx VIP
- 阿特拉斯ZR系列 使用说明书.分析.pdf VIP
- 实用手册 发展党员工作手册完整版.doc VIP
文档评论(0)