数学建模课程作业

论文题目:

对商人过河问题的研究

指导教师:黄光辉

小组成员:黄志宇(20156260)车辆工程04班

牛凯春(20151927)电气工程05

文逸楚(20150382)工商管理

02

一、问题重述

3名商人带3名随从乘一条小船过河,小船每次只能承载至多两人。随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。乘船渡河的方案由商人决定,商人们如何才能安全渡河呢?

二、问题分析

本题针对商人们能否安全过河问题,需要选择一种合理的过河方案。对该问题可视为一个多步决策模型,通过对每一次过河的方案的筛选优化,最终得到商人们全部安全过到河对岸的最优决策方案。对于每一次的过河过程都看成一个随机决策状态量,商人们能够安全到达彼岸或此岸我们可以看成目标决策允许的状态量,通过对允许的状态量的层层筛选,从而得到过河的目标。

三、模型假设

1. 过河途中不会出现不可抗力的自然因素。

2. 当随从人数大于商人数时,随从们不会改变杀人的计划。

3.船的质量很好,在多次满载的情况下也能正常运作。

4. 随从会听从商人的调度,所有人都到达河对岸。

四、符号说明第k 次渡河前此岸的商人数

第k 次渡河前此岸的随从数

过程的状态向量

允许状态集合

第k 次渡船上的商人数

第k 次渡船上的随从数

决策向量

允许决策集合

五、模型建立

本题为多步决策模型,每一次过河都是状态量的转移过程。

用二维向量表示过程的状态,其中分别表示对应时刻此岸的商人,仆人数以及船的行进方向,其中则允许状态集合:

=

又将二维向量定义为决策,则允许的决策合集为:

因为k 为奇数时船从此岸驶向彼岸,k 为偶数时船从彼岸驶向此岸,所以状态随决策的变化规律是

该式称为状态转移律。

求决策,使, 并按照转移律,由经过有限步n 到达状态

六、模型求解

本模型使用MATLAB 软件编程,通过穷举法获得决策方案如下(完整matlab 程序详见附录):

初始状态:

X0=

3

状态为:

S =

3

3

3

3

1

2

决策为:

D =

0可用图片表示为:3y [**************]1s n +12

2

1

2

[1**********]

七、模型推广

该商人和随从过河模型可以完美解决此类商人过河的决策问题,并且该模型还可推广至解决m 个商人和n 个随从过河,以及小船的最大载重人数改变时的问题,只需适当地改变相关的语句即可轻松实现模型的转换。

如当商人数和随从数均为4,小船最大载重人数为2时,只需将程序的参数修改为m=4,n=4,h=2即可。

若需求更多人数,则推广过程只需要将其中的(x,y)(限定范围)改成相对应的情况即可。

例如,商人基于仆人数都为4时允许状态集合,S={(x, y)|x=0,y=0,1,2,3,4;x=4,y=0,1,2,3,4;x=y=1,2,3}。由程序结果可得该问题无解。

八、模型评价

1. 本文通过matlab 编程,运用穷举法找出解决方案,并且程序可推广至m 个商人n 个随从的问题,具有实用性。

2. 本文存在的不足是程序只能求解出一种解决方案,无法列出所有解决方法。

附录

matlab 源程序

clear all

%n 为商人数,m为仆人数,h为每次过河的最多人数%n=3;m=3;h=2;%初始状态及数据

m0=0;n0=0;

tic

LS=0;%允许的状态集合S 与个数LS

LD=0;%允许的决策集合D 与个数LD

for i=0:n

for j=0:m

if i>=j&n-i>=m-j|i==n|i==0

LS=LS+1;S(LS,:)=[ij];

end

if i+j>0&i+j=j|i==0)

LD=LD+1;D(LD,:)=[ij];

end

end

end

%用搜寻法找出符合条件的渡河方案%

N=15;

Q1=inf*ones(2*N,2*N);

Q2=inf*ones(2*N,2*N);

t=1;

le=1;

q=[mn];

f0=0;%判断循环终止标记

while f0~=1&t

k=1;

sa=[];

sb=[];

for i0=1:le%第n 次允许的策略集逐次搜索

s0=q(i0,:);

if f0==1

break

end

for i=1:LD%由s0搜索D 后得到允许的状态

s1=s0+(-1)^t*D(i,:);

if s1==[m0,n0]

sa=[m0,n0];

sb=D(i,:);

f0=1;

break

end

for j=2:LS-1%搜索对比S 后允许状态%

if s1==S(j,:)

if k==1

sa(k,:)=s1;

sb(k,:)=D(i,:);

k=k+1;

break

end

if k>1%对重复状态删除处理%f1=0;

for ii=1:k-1

if s1==sa(ii,:)

f1=1;

break

end

end

end

if f1==0

sa(k,:)=s1;

sb(k,:)=D(i,:);

k=k+1;

break

end

end

end

end

end

q=sa;

le=size(q,1);

Q1(1:le,t*2-1:t*2)=q;

Q2(1:le,t*2-1:t*2)=sb;

t=t+1;

end

%在可行方案集合中逆向搜寻唯一方案%tr=t-1;saa1=sa;

S=zeros(tr,2);D=zeros(tr,2);for k=tr:-1:2

k1=k-1;f0=0;

sbb=Q2(:,k*2-1:k*2);

saa=Q1(:,k1*2-1:k1*2);

for i=1:2*N

saa2=saa1-(-1)^k*sbb(i,:);for j=1:2*N

if saa2==saa(j,:)

saa1=saa2;

sbb1=sbb(i,:);

f0=1;

break

end

end

if f0==1

break

end

end

S(k1,:)=saa1;

D(k,:)=sbb1;

end

S(tr,:)=[m0n0];

D(1,:)=[m,n]-SA(1,:);disp '初始状态:'X0=[m,n]

disp '状态为:'

S

disp '决策为:'

D

toc

matlab三个商人三个随从,数学建模 商人过河相关推荐

  1. 数学建模清风第三次直播:excel在数学建模中的应用

    学习网址:课件下载 数学建模清风第一次直播:传染病模型和微分方程拟合 数学建模清风第二次直播:模拟退火算法 数学建模清风第三次直播:excel在数学建模中的应用 博客笔记: 数学建模清风第一次直播:传 ...

  2. matlab某奶制品加工厂,奶制品加工问题 - 数学建模.doc

    奶制品加工问题 - 数学建模 <数学实验>课程综合实验 奶制品加工问题 一.问题重述 一奶制品加工厂用牛奶生产A1, A2两种初级奶制品,它们可以直接出售,也可以分别深加工成B1, B2两 ...

  3. 一个实例用matlab分别画出拟合和插值,数学建模培训之四--拟合与插值专题(hzd).doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp微积分 数学建模培训之四--拟合与插值专题(hzd).doc6 ...

  4. 葡萄酒的评价matlab代码,MATLAB·设计论文葡萄酒质量评价的数学建模

    葡萄酒质量评价的数学建模 摘要:关于葡萄酒质量的评价,通常是通过评酒员的打分来确定的.本论文通过对酿酒葡萄与葡 萄酒的理化指标之间的相关关系和评酒员打分进行了深入系统地分析,给出了葡萄酒质量评价的 量 ...

  5. MATLAB求两圆的公切线,(PPT)数学建模.ppt

    (PPT)数学建模 * * 数学建模常用的方法: 机理分析.数据处理.综合评价.微分方程.差分方程.概率统计.插值与拟合.优化方法等. 1.数学建模所需要的方法和知识 数学建模应具备的数学知识: 高等 ...

  6. 蹦极模型matlab仿真,科学网—蹦极的数学建模及其龙格-库塔法求解方法 - 赵也非的博文...

    论文: 蹦极的数学建模及其龙格-库塔法求解方法 在"华东师范大学首届研究生数学建模竞赛"中,获得二等奖. 发表日期: 2007年5月 摘要: 本文通过参照题中给出的数据,对蹦极者在 ...

  7. 数学建模-商人过河问题

    商人过河问题 1.问题重述 三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行.随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货.但是如何乘船渡河的大权掌握在商人们手中,商 ...

  8. matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】

    [实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...

  9. 数学建模——商人与随从过河问题

    # -*- coding: utf-8 -*-""" ①判断当前状态是否合理- 得到答案输出 ②合理进行 运输适用于全部 """##初始条件 ...

最新文章

  1. mysql的count函数可以加表达式嘛_power bi15——power pivot的DAX表达式
  2. Qtum量子链受邀出席日本早稻田研究所区块链教育讲座
  3. P4370-[Code+#4]组合数问题2【数学,堆】
  4. 计算机系统的数制及转换
  5. 前端学习(2895):课程列表和导航结合
  6. fetch 不是xhr_春招|前端2019应届春招:不是被大厂选,而是选大厂(字节跳动,美团,网易)...
  7. LeetCode:Remove Nth Node From End of List 移除链表倒第n项
  8. android gradle 1.5.0,Cordova build – 无法解析com.android.tools.build:gradle:1.5.0
  9. 2-2Pytorch1.5环境配置
  10. 动态分配算法_【原创连载】算法素颜(第4篇):空间复杂度你真的懂了吗?
  11. actviti 工作流核心技术和实战-学习笔记(一)什么是工作流
  12. 企业招聘黑名单的9类人,你中枪了么?
  13. C#顺时针逆时针旋转图片
  14. 计算机发送到桌面快捷方式,win10系统右键菜单“发送到桌面快捷方式”选项不见了的详细步骤...
  15. 安装perf后,执行perf命令报错。
  16. 《大明王朝》赵贞吉的拉扯
  17. 这30个高质量的数据集网站,你必须要试试!
  18. multiple definition of `main'
  19. 企业智能化转型meetup回顾|开源BI AI助力企业转型之旅三阶段
  20. JAVA后端生成类似于分享海报图片的功能的实现

热门文章

  1. 程序员转行都去干嘛了?产品经理很正常,这位卖烧饼的也太强了
  2. 基于语法分析的公式分析器设计
  3. 计算机学报在线阅读,计算机学报CHIN.pdf
  4. 连上WiFi就能打电话?“手机营业厅”中的神奇功能火了
  5. 推荐这三款亲测好用的ai工具
  6. 第十四周 项目1抽象基类
  7. ionic platform add android环境搭建之难产【i1】【小白-2016.11.5】
  8. QT软件版本更改步骤
  9. 解决android api30以上,调用华为P50相机,点击拍照无反应问题
  10. Yolov5训练自己的数据集+TensorRT加速+Qt部署