用动态规划的思想实现动态投资问题实验报告

用动态规划的思想实现动态投资问题实验报告

ID:35416631

大小:34.00 KB

页数:3页

时间:2019-03-24

用动态规划的思想实现动态投资问题实验报告_第1页
用动态规划的思想实现动态投资问题实验报告_第2页
用动态规划的思想实现动态投资问题实验报告_第3页
资源描述:

《用动态规划的思想实现动态投资问题实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、算法实验报告二  动态规划法                        一、实验目的:用动态规划的思想实现动态投资问题。二、实验要求:掌握动态规划算法设计的基本策略。三、实验内容:m元钱,n项投资,fi(x)将x元投入第i项项目的效益, 目标函数max{f1(x1)+f2(x2)+…+ fn(xn)} 约束条件x1+x2+…+xn=m,xi∈N设Fk(x)表示x元钱投给前k个项目的最大效益算法实现:投资第k个项目p元钱的效益可表示为Project[k][p],其中0<=k<=n,0<=p<=m;设投资

2、给前k个项目p元 钱的最终总效益为用Benefit[k][p],其中0<=k<=n,0<=p<=m。设allot[k][p]表示在总投资为p元钱时候,最终分配给第k个项目的钱数解。四、实验心得:在调试过程中出现了好多小问题,一开始结果不对,我通过单步调试一步步的看待填的二维表中的数据。发现大部分V[i][j]对了,但是有极小数的不对。故而我的结果出现了问题。通过本次实验加深了我对动态规划算法的理解。而且对动态规范编写代码解决一个实际问题有了进一步的认识。即当算法考虑的原问题的每一个子问题,算法都需要计算一

3、个最优解。换句话说,所有算法生成的表项表示算法考虑的子问题的最优解。这时候用动态规范把每一个最优解求出来(利用递归公式),就能够保证最后求得的一定是最优解。而且动态规划有个特点,即它是由底向上,它实现起来就是利用循环,有时用到一层循环即可,有时要用到两层for循环即可以求解出问题。五:附录:程序代码及结果#includevoidmain(){voidjie(int,int,intd[][9]);voidInvest(intm,intn,intf[][9],intg[][9],intd[]

4、[9]);intm=8,n=3,f[4][9],d[4][9];intg[4][9]={{0},{0,5,15,40,80,90,95,98,100},{0,5,15,40,60,70,73,74,75},{0,4,26,40,45,50,51,53,53}};Invest(m,n,f,g,d);printf("可获得的最大收益为:%d",f[3][8]);jie(m,n,d);}voidInvest(intm,intn,intf[][9],intg[][9],intd[][9]){inti,j,k,

5、s;for(j=0;j<=m;j++){f[1][j]=g[1][j];d[1][j]=j;}for(i=2;i<=n;i++)for(j=0;j<=m;j++){f[i][j]=0;for(k=0;k<=j;k++){s=f[i-1][j-k]+g[i][k];if(s>f[i][j]){f[i][j]=s;d[i][j]=k;}}}}voidjie(intm,intn,intd[][9]){ints=m;intk[4];inti;k[n]=d[n][m];for(i=n-1;i>0;i--){s=s-

6、k[i+1];k[i]=d[i][s];}for(i=1;i<=3;i++)printf("%5d",k[i]);printf("");}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。