




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4名商人带4名随从安全过河一问题提出:4名商人带4名随从乘一条小船过河,小船每次自能承载至多两人。随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货.乘船渡河的方案由商人决定,商人们如何才能安全渡河呢?二模型假设:商人和随从都会划船。三问题分析:商随过河问题可以视为一个多步决策过程,通过多次优化,最后获取一个全局最优的决策方案。对于每一步,即船由此岸驶向此岸或由此岸驶向此岸,都要对船上的人员作出决策,在保证两岸的商人数不少于随从数的前提下,在有限步内使全部人员过河。用状态变量表示某一岸的人员状况,决策变量表示船上的人员状况,可以找出状态随决策变化的规律,问题转化为在状态的允许变
2、化范围内(即安全渡河条件),确定每一步的决策,到达安全渡河的目标。四模型构成:xk第k次渡河前此岸的商人数,yk第k次渡河前此岸的随从数xk, yk=0,1,2,3,4; k=1,2, Sk=(xk, yk)过程的状态,S允许状态集合,S=(x,y)| x=0, y=0,1,2,3,4; x=4 ,y=0,1,2,3,4; x=y=1,2,3 uk第k次渡船上的商人数vk第k次渡船上的随从数dk=(uk, vk)决策,D=(u , v)| 1=<u+v=<2,uk, vk=0,1,2 允许决策集合 k=1,2, 因为k为奇数时船从此岸驶向此岸,k为偶数时船从此岸驶向此岸,所以状态S
3、k随决策dk的变化规律是Sk+1=Sk+(-1)kdk状态转移律求dkD(k=1,2, n), 使SkS, 并按转移律由S1=(4,4)到达状态Sn+1=(0,0)。五模型求解:1.图解法:对于人数不多的情况,可以利用图解法来求解。在xoy平面坐标系上画出如下图的方格,方格点表示状态s=(x,y),允许状态集合S是圆点标出的13个格子点,允许决策dk是沿方格线移动1格或2格,k为奇数时向左、下方移动,k为偶数时向右、上方移动。要确定一系列的dk使由S1=(4,4)经过那些圆点最终移动到原点(0,0)。由初始状态(4,4)到原点(0,0),无论怎样走,都要经过(2,2),但是无论怎样变化人数,也
4、只能到达此点后不能继续走下去,只能循环走(由d7状态无法不重复循环地走下去),达不到最终的目标(0,0),因此该问题无解。2.穷举法:根据分析可以通过编程上机求解,所用的c程序如下所示:#include <stdio.h>#define N 30int xN,yN,u6,v6,k;/* x,y:状态值,分别表示此岸商人、随从数*/*u,v:决策值,分别表示船上商人、随从数*/* k:决策步数;k的奇偶性标志着船在河的此岸或此岸 */next(int k,int i)/*计算下一状态*/if(k%2) /* k+1 为偶数,船从此岸到此岸 */xk+1=xk-ui;yk+1=yk-v
5、i;else /* k+1 为奇数,船从此岸到此岸 */xk+1=xk+ui;yk+1=yk+vi;return;allow(int p,int q)/* 判定状态是否允许,是否重复 */int ok,j; /* ok:标记状态是否允许,是否重复;j:循环变量 */if(p<0|p>x1|p!=0&&q>p|(x1-p)!=0&&(y1-q)>(x1-p)|q<0|q>y1) ok=0; /* 此时状态不属于允许集 */elsefor(j=k-1;j>0;j-=2) /* 是否重复与船在河的哪一岸有关 */if(p=xj
6、 && q=yj )ok=0; /* 此时状态出现重复 */break;if(j<=0)ok=1; /* 此时状态属于允许集,且不重复 */return ok;void main()int i,j,mN,flag=1;/* m:采用的决策序号,flag:回溯标记 */u1=2; v1=0; /* 给决策编号并赋值 */u2=0; v2=2;u3=1; v3=0;u4=0; v4=1;u5=1; v5=1;k=1; /* 从初始状态出发 */printf("请输入商人和随从的初始状态:n商人数=");scanf("%d",&x
7、k);printf("随从数=");scanf("%d",&yk);while(flag)for(i=1;i<6;i+) /* 遍历各种决策 */next(k,i); /* 计算下一状态 */if(allow(xk+1,yk+1) /* 假设新状态允许且不重复 */ mk=i; /* 记录采用的决策序号 */if(xk+1=0 && yk+1=0) /* 假设到达目标状态,输出结果 */ printf("初始值:商人%d随从%dn",x1,y1);for(j=1;j<=k;j+)printf(" 第 %2d 次 %d %dn",j,xj+1,yj+1); flag=0;break;else /* 假设未到达目标状态 */k+; /* 生成下一步的步数值 */break; /* 遍历终止,进入下一步 */else /* 假设新状态不允许或重复 */while(i=5) /* 本步决策已经遍历时 */if(k=1)printf("此题无解!n");flag=0;break;else /* 未到达初始状态 */k-; /* 回溯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆意向订购合同范本
- 整栋民房转租合同范本
- 公园绿化苗木订购合同书范文
- 海边土地出租合同范本
- 货物托管协议合同范本
- 出租露营用具合同范本
- 房屋债务转让合同范本
- 摄影布景知识培训课件
- 农作物补偿范例合同范例
- 卤肉供货合同范例
- Android Studio开发实战(从零基础到App上线)
- 电路 (第四版) 全套教学课件
- 波形护栏加高施工
- 反面典型案例剖析材料范文(通用6篇)
- 智能行李箱方案开发-PPT
- 第一讲设计伦理
- 函授本科《小学教育》毕业论文范文
- 陕西国际商贸学院
- 《导游讲解》课程标准
- 冀东海德堡(泾阳)水泥有限公司水泥窑协同处置污泥改(扩)建项目环评报告
- 发展汉语(第2版)高级听力Ⅰ第4课课件
评论
0/150
提交评论