- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE1 / NUMPAGES1
数学建模实验一报告
实验题目:
研究商人过河问题
一、实验目的:
编写一个程序(可以是C,C++或Mathlab)实现商人安全过河问题。
二、实验环境:
Turbo c 2.
0、Microsoft Visual C++ 6.
0、Matlab 6.0以上
三、实验要求:
要求该程序不仅能找出一组安全过河的可行方案,还可以得到所有的安全过河可行方案。并且该程序具有一定的可扩展性,即不仅可以实现3个商人,3个随从的过河问题。还应能实现
n个商人,n个随从的过河问题以及n个不同对象且每个对象有m个元素问题(说明:
对于3个商人,3个随从问题分别对应于n=2,m=3)的过河问题。从而给出课后习题5(n=4,m=1)的全部安全过河方案。
四、实验步骤:
第一步:
问题分析。这是一个多步决策过程,涉及到每一次船上的人员以及要考虑此岸和彼岸上剩余的商人数和随从数,在安全的条件下(两岸的随从数不比商人多),经有限步使全体人员过河。
第二步:
分析模型的构成。记第k次渡河前此岸的商人数为x
k,随从数为y
k,k?1,2?,x
k,y
k?1,2?n,(具有可扩展性),将定义为状态,状态集合(x
k,y
k)
(x,y)|x?0,y?0,1,2,3;x?3,y?0,1,2,3;x?y?1,2}成为允许状态集合(S)。S={
记第k次渡船的商人数为u
k,随从数为v
k,决策为(u
k,v
k),安全渡河条件下,决策的集合为允许决策集合。允许决策集合记作D,所以(u,v)|1?u?v?2,u,v?0,1,2|1u+v2,u,v=0,1,2},因为k为奇数时船从此岸D={
驶向彼岸,k为偶数时船由彼岸驶向此岸,所以状态s
k随决策d
k变化的规律是s
k?1?s
k?(?1)dkk,此式为状态转移律。制定安全渡河方案归结为如下的多步决策模型:
求决策d
k?D(k?1,2?n),使状态s
k?S按照转移xx,由初始状态s
1?(3,3)经有限n步到达s
n?1?(0,0)
第三步:
模型求解。
#include stdio.h
#include string.h
#include memory
#include stdlib.h
#include iostream
using namespace std;
#include conio.h
FILE *fp;/*设立文件指针,以便将它用于其他函数中*/
struct a{
long m,s;
struct a *next;
};/*数组类型a:
记录各种情况下船上的商人和仆人数,m:
代表商人数s:
代表仆人数*/struct a *jj,head;/*head为头指针的链表单元(船上的人数的各种情况的链表)*/
int n,total=0,js=0;/*total表示船上各种情况总数*/
struct aim {
long m1,s1,m2,s2;
int n;
struct aim *back,*next;};/*用于建立双向的指针链表,记入符合的情况,m1,s1表示要过岸的商人数和仆人数;m2,s2表示过岸了的商人数和仆人数,n表示来回的次数*/int k1,k2;
void freeit(struct aim *p){
struct aim *p1=p;
p1=p-back;
free(p);
if(p1!=NULL)
p1-next=NULL;
return;
}/*释放该单元格,并将其上的单元格的next指针还原*/
int determ(struct aim *p)
{ struct aim *p1=p;
if(p-s1k2)return -1;/*仆人数不能超过总仆人数*/
if(p-m1k1)return -1;/*商人数不能超过总商人数*/
if(p-s2k2)return -1;/*对岸,同上*/
if(p-m2k1)return -1;/*对岸,同上*/
if(p-s10)return -1;/*仆人数不能为负*/
if(p-s20)return -1;/*商人数不能为负*/
if(p-m10)return -1;/*对岸,同上*/
if(p-m20)return -1;/*对岸,同上*/
if(p-m1!=0)
if(p-s1p-m1)return -1;
if(p-m2!=0)
if(p-s2p-m2)return -1;/*两岸商人数均不能小于仆人数*/
while(p1!=NULL){
p1=p1-back;
if(p1!=NULL)
if(p1-n%2==p-n%2)
if(p1-s1==p-s1)
if(p1-s2==p-s2)
if(p1-m1==p-m1)
if(p1-m2==p-m2)
return -1;}/*用于
您可能关注的文档
最近下载
- 液体伤口敷料产品技术要求标准2023版.docx VIP
- 《水利工程外观质量评定规程DB34∕T 4010-2021》知识培训.pptx VIP
- DLT741-2023年架空送电线路运行规程.docx
- 并网光伏电站项目工程现场电气二次施工方案.doc
- 英语新课标背景下:非纸笔测试在小学英语期末评价中的实践研究.pdf VIP
- 股市实战绝技汇总篇(精华).doc VIP
- 历年行情的十大牛股.doc VIP
- 安徽省六校联考暨安徽六校教育研究会2026届高三入学素质检测-物理试卷答案.docx VIP
- 基于Ansys CFX的风扇叶片双向流固耦合分析.docx VIP
- (高清版)DB1307∕T 334-2020 蛋鸡无抗养殖技术规范.pdf VIP
文档评论(0)