动态规划求解资源分配实验报告.docx

上传人:b****5 文档编号:4757402 上传时间:2022-12-08 格式:DOCX 页数:7 大小:398.25KB
下载 相关 举报
动态规划求解资源分配实验报告.docx_第1页
第1页 / 共7页
动态规划求解资源分配实验报告.docx_第2页
第2页 / 共7页
动态规划求解资源分配实验报告.docx_第3页
第3页 / 共7页
动态规划求解资源分配实验报告.docx_第4页
第4页 / 共7页
动态规划求解资源分配实验报告.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

动态规划求解资源分配实验报告.docx

《动态规划求解资源分配实验报告.docx》由会员分享,可在线阅读,更多相关《动态规划求解资源分配实验报告.docx(7页珍藏版)》请在冰豆网上搜索。

动态规划求解资源分配实验报告.docx

动态规划求解资源分配实验报告

动态规划求解资源分配

实验目标:

(1)掌握用动态规划方法求解实际问题的基本思路。

(2)进一步理解动态规划方法的实质,巩固设计动态规划算法的基本步骤。

实验任务:

(1)设计动态规划算法求解资源分配问题,给出算法的非形式描述。

(2)在Windows环境下用C语言实现该算法。

计算10个实例,每个实例中n=30,m=10,Cij为随机产生于范围(0,103)内的整数。

记录各实例的数据及执行结果(即最优分配方案、最优分配方案的值)、运行时间。

(3)从理论上分析算法的时间和空间复杂度,并由此解释相应的实验结果。

实验设备及环境:

PC;C/C++等编程语言。

实验主要步骤:

(1)认真阅读实验目的与实验任务,明确本次实验的内容;

(2)分析实验中要求求解的问题,根据动态规划的思想,得出优化方程;

(3)从问题出发,设计出相应的动态规划算法,并根据设计编写程序实现算法;

(4)设计实验数据并运行程序、记录运行的结果;

(5)分析算法的时间和空间复杂度,并由此解释释相应的实验结果;

问题描述:

资源分配问题

某厂根据计划安排,拟将n台相同的设备分配给m个车间,各车间获得这种设备后,可以为国家提供盈利Cij(i台设备提供给j号车间将得到的利润,1≤i≤n,1≤j≤m)。

问如何分配,才使国家得到最大的盈利?

1.问题分析:

本问题是一简单资源分配问题,由于具有明显的最优子结构,故可以使用动态规划求解,用状态量f[i][j]表示用i台设备分配给前j个车间的最大获利,那么显然有f[i][j]=max{f[k][j–1]+c[i-k][j]},0<=k<=i。

再用p[i][j]表示获得最优解时第j号车间使用的设备数为i-p[i][j],于是从结果倒推往回求即可得到分配方案。

程序实现时使用顺推,先枚举车间数,再枚举设备数,再枚举状态转移时用到的设备数,简单3重for循环语句即可完成。

时间复杂度为O(n^2*m),空间复杂度为O(n*m),倘若此题只需求最大获利而不必求方案,则状态量可以减少一维,空间复杂度优化为O(n)。

程序代码:

#include

#include

#include

#include

#include

#defineN31

#defineM11

intc[N][M],f[N][M],p[N][M];

intmain(){

inti,j,n,m,k;

srand(time(NULL));

n=30;m=10;

for(intcas=1;cas<=5;++cas){

cout<<"第"<

"<

memset(c,0,sizeof(c));

for(i=1;i<=n;++i)

for(j=1;j<=m;++j)

c[i][j]=rand()%1000;

cout<<"利润表:

"<

cout<<"";

for(j=1;j<=m;++j)

cout<

cout<

for(i=1;i<=n;++i){

cout<

for(j=1;j<=m;++j)

cout<

cout<

}

memset(f,0,sizeof(f));

memset(p,-1,sizeof(p));

for(j=1;j<=m;++j)

for(i=1;i<=n;++i)

for(k=0;k<=i;++k)

if(f[i][j]

f[i][j]=f[k][j-1]+c[i-k][j];

p[i][j]=k;

}

cout<<"最大获利:

"<

cout<<"资源分配匹配方案:

"<

k=n;

for(j=m;j>=1;--j){

cout<<"第"<

"<

k=p[k][j];

}

cout<

}

return0;

}

实验小结:

本次是实验是一次动态规划的实验,而本次实验的主要内容就是把动态规划的过程弄清楚,这也是本次实验的难点。

动态规划可得到一系列的解,求动态规划的基本步骤等都要有所理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1