matlab程序4名商人,商人们怎样安全过河附MATLAB程序完整.doc

商人们怎样安全过河附MATLAB程序完整.doc

*** 商人们怎样安全过河 随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货. 但是乘船渡河的方案由商人决定. 商人们怎样才能安全过河 问题分析D多步决策过程决策 每一步此岸到彼岸或彼岸到此岸船上的人员要求在安全的前提下两岸的随从数不比商人多,经有限步使全体人员过河.建立模型xk第k次渡河前此岸的商人数 xk, yk0,1,2,3;yk第k次渡河前此岸的随从数 k1,2,|.... skxk , yk过程的状态 S 允许状态集合Sx , y| x0, y0,1,2,3; x3, y0,1,2,3; xy1,2uk第k次渡船上的商人数 uk, vk0,1,2;vk第k次渡船上的随从数 k1,2,..... dkuk , vk决策 Du , v| uv1, 2 允许决策集合 状态转移律 多步决策问题 求dkDk1,2, n, 使skS, 并按转移律由 s13,3到达 sn10,0. 模型求解穷举法 编程上机 Sx , y| x0, y0,1,2,3;x3, y0,1,2,3; xy1,2 图解法状态sx,y 16个格点允许状态 10个 点允许决策 移动1或2格; k奇,左下移; k偶,右上移.d1,.......,d11给出安全渡河方案评注和思考规格化方法,易于推广考虑4名商人各带一随从的情况程序 开始 function juecheguoheclear allclc 程序开始需要知道商人和仆人数; shangren输入商人数目 ;puren输入仆人数目 ;rongliang输入船的最大容量 ; if purenshangrenshangren输入商人数目;puren输入仆人数目;rongliang输入船的最大容量; end 决策生成 jc1; 决策向量放在矩阵d中,jc为插入新元素的行标初始为1; for i0rongliang for j0rongliang if ijrongliangij0 满足条Du,v|1uvrongliang,u,v0,1,2 djc,13i,j ,1; 生成一个决策向量立刻扩充为三维; djc1,13-i,-j,-1; 同时生成他的负向量; jcjc2; 由于生成两个决策向量,则jc要向下移动两个; end end j0; end 状态数组生成 kx1; 状态向量放在A矩阵中,生成方法同矩阵生成;for ishangren-10 for jpuren-10 if ijshangren-ipuren-j|i0|ishangren ijshangren-ipuren-j|i0|ishangren为可以存在的状态的约束条件 Akx,13i,j,1; 生成状态数组集合D Akx1,13i,j,0; kxkx2; end end jpuren;end; 将状态向量生成抽象矩阵 k1/2*sizeA,1; CXzeros2*k,2*k;asized,1; for i12*k for j1a cAi,dj, ; xfindA,1c1A,2c2A,3c3 ; vi,x1; x为空不会改变v值 end enddijstra算法x1; ysizeA,1;msizev,1;Tzerosm,1; TT.-1;lmdT; PT; Szerosm,1; Sx1; Px0; lmdx0;kx; while1 afindS0; aafindS1; if sizeaa,1m break; end for j1sizea,1 ppaj,1; if vk,pp0 if TppPkvk,pp TppPkvk,pp; lmdppk; end end end miminTa; if miinf break; else dfindTmi; dd1; Pdmi; Tdinf; kd; Sd1; endend if lmdyinf juechecan not reach不能过河; return;end jueche1y;g2; hy;while1 if hx break; end juecheglmdh; gg1; hlmdh;end juecheAjueche,;jueche,3; 程序完 ***

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值