QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 14268|回复: 14
打印 上一主题 下一主题

商人过河问题的MATLAB编程

[复制链接]
字体大小: 正常 放大

14

主题

3

听众

531

积分

  • TA的每日心情
    开心
    2013-9-15 09:21
  • 签到天数: 52 天

    [LV.5]常住居民I

    社区QQ达人

    群组山东商职数学建模

    群组数学建模培训课堂1

    群组Matlab讨论组

    群组数学建模培训课堂2

    群组中国数模会长俱乐部

    跳转到指定楼层
    1#
    发表于 2010-6-23 01:03 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    clear all % 080817
    clc         % 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,:)=[i j];
            end
            if i+j>0&i+j<=h&(i>=j|i==0)
                LD=LD+1;D(LD,:)=[i j];
            end
        end
    end
    %用搜寻法找出符合条件的渡河方案
    %……………………………………………………………………………………………$$
    N=15;
    Q1=inf*ones(2*N,2*N);
    Q2=inf*ones(2*N,2*N);
    t=1;
    le=1;
    q=[m n];
    f0=0; %判断循环终止标记
    while f0~=1&t<N             %搜索可行的策略
         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;
    SA=zeros(tr,2);SB=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
        SA(k1,:)=saa1;
        SB(k,:)=sbb1;
    end
    SA(tr,:)=[m0 n0];
    SB(1,:)=[m,n]-SA(1,:);
    %………………………………………………………………………………………………¥¥
    disp '初始状态:'
    X0=[m,n]
    disp '状态为:'
    SA
    disp '决策为:'
    SB
    toc




    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持2 反对反对1 微信微信
    sanbao 实名认证       

    5

    主题

    3

    听众

    1393

    积分

    升级  39.3%

  • TA的每日心情
    开心
    2012-5-1 11:29
  • 签到天数: 2 天

    [LV.1]初来乍到

    自我介绍
    爱学习的人

    群组数学建模培训课堂1

    群组小草的客厅

    回复

    使用道具 举报

    linmatsas 实名认证       

    53

    主题

    13

    听众

    3591

    积分

    逍遥游

  • TA的每日心情
    奋斗
    2014-12-2 09:53
  • 签到天数: 54 天

    [LV.5]常住居民I

    自我介绍
    额。。。。世界上最讨厌的事情就是自我介绍。。。

    邮箱绑定达人 新人进步奖 发帖功臣 最具活力勋章

    群组Matlab讨论组

    群组数学建模

    群组小草的客厅

    群组2012数学一考研交流

    群组C 语言讨论组

    回复

    使用道具 举报

    3

    主题

    3

    听众

    39

    积分

    升级  35.79%

    该用户从未签到

    群组数学建模

    群组广东数学建模

    群组北理工数学建模

    群组数学建模交流

    群组数学建模论文天下

    回复

    使用道具 举报

    14

    主题

    3

    听众

    531

    积分

  • TA的每日心情
    开心
    2013-9-15 09:21
  • 签到天数: 52 天

    [LV.5]常住居民I

    社区QQ达人

    群组山东商职数学建模

    群组数学建模培训课堂1

    群组Matlab讨论组

    群组数学建模培训课堂2

    群组中国数模会长俱乐部

    回复

    使用道具 举报

    dalonso        

    0

    主题

    0

    听众

    4

    积分

    升级  80%

    该用户从未签到

    回复

    使用道具 举报

    0

    主题

    3

    听众

    16

    积分

    升级  11.58%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    10

    主题

    5

    听众

    792

    积分

    升级  48%

  • TA的每日心情
    开心
    2013-4-16 11:57
  • 签到天数: 127 天

    [LV.7]常住居民III

    发帖功臣

    群组第二届数模基础实训

    群组Matlab讨论组

    群组数学建模培训课堂1

    群组数学建模培训课堂2

    群组学术交流A

    回复

    使用道具 举报

    ※fly★        

    1

    主题

    4

    听众

    223

    积分

    升级  61.5%

  • TA的每日心情
    开心
    2014-11-9 10:25
  • 签到天数: 76 天

    [LV.6]常住居民II

    自我介绍
    爱好数学

    群组西安交大数学建模

    群组数学建模培训课堂1

    群组学术交流A

    群组学术交流B

    群组物联网工程师培训

    回复

    使用道具 举报

    唤起 实名认证    中国数模人才认证   

    10

    主题

    3

    听众

    440

    积分

    升级  46.67%

  • TA的每日心情
    奋斗
    2014-11-16 12:53
  • 签到天数: 99 天

    [LV.6]常住居民II

    群组学术交流A

    群组学术交流B

    群组Matlab讨论组

    群组数学建模

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-20 17:36 , Processed in 0.888003 second(s), 105 queries .

    回顶部