QQ登录

只需要一步,快速开始

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

[问题求助] 请各位matlab程序高手帮帮我

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

3

主题

4

听众

80

积分

升级  78.95%

  • TA的每日心情
    擦汗
    2012-9-24 21:43
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    自我介绍
    和大家分享建模经历

    群组学术交流A

    跳转到指定楼层
    1#
    发表于 2012-8-20 20:51 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    是有关蚁群算法在最大流最小费用方面的应用,自己下载了个程序,改了半天了都没运行出来,后来得知是被人可以删了几句,请大家帮我看看吧,我是参加数模赛的学生,可以的话给我发邮件吧,sdqdliuyao@163.com 非常感谢!
    function [f,MinCost,MaxFlow]=MinimumCostFlow(a,c,V,s,t)
    % 基于Floyd最短路算法的Ford和Fulkerson迭加算法 %
    % 输入参数列表
    % a 单位流量的费用矩阵
    % c 链路容量矩阵
    % V 最大流的预设值,可为无穷大
    % s 源节点
    % t 目的节点
    % 输出参数列表
    % f 链路流量矩阵
    % MinCost 最小费用
    % MaxFlow 最大流量
    % 第一步:初始化


    N=size(a,1);%节点数目
    f=zeros(N,N);%流量矩阵,初始时为零流
    MaxFlow=sum(f(s,);%最大流量,初始时也为零
    flag=zeros(N,N);%真实的前向边应该被记住
    for i=1:N
        for j=1:N
            if i~=j&&c(i,j)~=0
                flag(i,j)=1;%前向边标记
                flag(j,i)=-1;%反向边标记
            end
            if a(i,j)==inf
                a(i,j)=BV;
                w(i,j)=BV;%为提高程序的稳健性,以一个有限大数取代无穷大
            end
        end
    end
    %[L,R]=FLOYD2(w,s,t);
    if L(end)
        RE=1;%如果路径长度小于大数,说明路径存在
    else
        RE=0;
    end
    % 第二步:迭代过程
    while RE==1&&MaxFlow<=max(max(V))%停止条件为达到最大流的预设值或者没有从s到t的最短路
        %以下为更新网络结构
        MinCost1=sum(sum(f.*a));
        MaxFlow1=sum(f(s,);
        f1=f;
        TS=length(R)-1;%路径经过的跳数
        LY=zeros(1,TS);%流量裕度
        for i=1:TS
            LY(i)=c(R(i),R(i+1));
        end
        maxLY=min(LY);%流量裕度的最小值,也即最大能够增加的流量
        for i=1:TS
            u=R(i);
            v=R(i+1);
            if flag(u,v)==1&&maxLY
                f(u,v)=f(u,v)+maxLY;%记录流量值
                w(u,v)=a(u,v);%更新权重值
                c(v,u)=c(v,u)+maxLY;%反向链路的流量裕度更新
            elseif flag(u,v)==1&&maxLY==c(u,v)%当这条边为前向边且是饱和边时
                w(u,v)=BV;%更新权重值
                c(u,v)=c(u,v)-maxLY;%更新流量裕度值
                w(v,u)=-a(u,v);%反向链路权重更新
            elseif flag(u,v)==-1&&maxLY
                w(v,u)=a(v,u);
                c(v,u)=c(v,u)+maxLY;
                w(u,v)=-a(v,u);
            elseif flag(u,v)==-1&&maxLY==c(u,v)%当这条边为反向边且是饱和边时
                w(v,u)=a(v,u);
                c(u,v)=c(u,v)-maxLY;
                w(u,v)=BV;
            else
            end
        end
        MaxFlow2=sum(f(s,);
        MinCost2=sum(sum(f.*a));
        if MaxFlow2<=V
            MaxFlow=MaxFlow2;
            MinCost=MinCost2;
            [L,R]=FLOYD2(w,s,t);
        else f=f1+prop*(f-f1);
            MaxFlow=V;
            MinCost=MinCost1+prop*(MinCost2-MinCost1);
            return
        end
        if L(end)
            RE=1;%如果路径长度小于大数,说明路径存在
        else
            RE=0;
        end
    end
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    corrine        

    3

    主题

    4

    听众

    80

    积分

    升级  78.95%

  • TA的每日心情
    擦汗
    2012-9-24 21:43
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    自我介绍
    和大家分享建模经历

    群组学术交流A

    回复

    使用道具 举报

    lgmltxs 实名认证       

    8

    主题

    61

    听众

    1593

    积分

    升级  59.3%

  • TA的每日心情
    开心
    2018-12-6 14:40
  • 签到天数: 250 天

    [LV.8]以坛为家I

    社区QQ达人 邮箱绑定达人 新人进步奖 发帖功臣

    群组学术交流A

    群组数学软件学习

    群组学术交流C

    群组学术交流B

    群组学术交流D

    回复

    使用道具 举报

    corrine        

    3

    主题

    4

    听众

    80

    积分

    升级  78.95%

  • TA的每日心情
    擦汗
    2012-9-24 21:43
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    自我介绍
    和大家分享建模经历

    群组学术交流A

    是蚁群算法求最大流最小费用的,我改了下,应该是没有什么语法错误,但是缺一些关键语句哇
    回复

    使用道具 举报

    corrine        

    3

    主题

    4

    听众

    80

    积分

    升级  78.95%

  • TA的每日心情
    擦汗
    2012-9-24 21:43
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    自我介绍
    和大家分享建模经历

    群组学术交流A

    回复

    使用道具 举报

    梦溪517        

    18

    主题

    5

    听众

    230

    积分

    升级  65%

  • TA的每日心情
    开心
    2014-2-12 10:47
  • 签到天数: 52 天

    [LV.5]常住居民I

    群组Matlab讨论组

    群组C 语言讨论组

    群组学术交流B

    群组学术交流A

    群组2013年数学建模国赛备

    1. function [f,MinCost,MaxFlow]=MinimumCostFlow(a,c,V,s,t)
    2. % 基于Floyd最短路算法的Ford和Fulkerson迭加算法 %
    3. % 输入参数列表
    4. % a 单位流量的费用矩阵
    5. % c 链路容量矩阵
    6. % V 最大流的预设值,可为无穷大
    7. % s 源节点
    8. % t 目的节点
    9. % 输出参数列表
    10. % f 链路流量矩阵
    11. % MinCost 最小费用
    12. % MaxFlow 最大流量
    13. % 第一步:初始化


    14. N=size(a,1);%节点数目
    15. f=zeros(N,N);%流量矩阵,初始时为零流
    16. MaxFlow=sum(f(s,:));%最大流量,初始时也为零
    17. flag=zeros(N,N);%真实的前向边应该被记住
    18. for i=1:N
    19.     for j=1:N
    20.         if i~=j&&c(i,j)~=0
    21.             flag(i,j)=1;%前向边标记
    22.             flag(j,i)=-1;%反向边标记
    23.         end
    24.         if a(i,j)==inf
    25.             a(i,j)=BV;
    26.             w(i,j)=BV;%为提高程序的稳健性,以一个有限大数取代无穷大
    27.         end
    28.     end
    29. end
    30. %[L,R]=FLOYD2(w,s,t);
    31. if L(end)
    32.     RE=1;%如果路径长度小于大数,说明路径存在
    33. else
    34.     RE=0;
    35. end
    36. % 第二步:迭代过程
    37. while RE==1&&MaxFlow<=max(max(V))%停止条件为达到最大流的预设值或者没有从s到t的最短路
    38.     %以下为更新网络结构
    39.     MinCost1=sum(sum(f.*a));
    40.     MaxFlow1=sum(f(s,:));
    41.     f1=f;
    42.     TS=length(R)-1;%路径经过的跳数
    43.     LY=zeros(1,TS);%流量裕度
    44.     for i=1:TS
    45.         LY(i)=c(R(i),R(i+1));
    46.     end
    47.     maxLY=min(LY);%流量裕度的最小值,也即最大能够增加的流量
    48.     for i=1:TS
    49.         u=R(i);
    50.         v=R(i+1);
    51.         if flag(u,v)==1&&maxLY
    52.             f(u,v)=f(u,v)+maxLY;%记录流量值
    53.             w(u,v)=a(u,v);%更新权重值
    54.             c(v,u)=c(v,u)+maxLY;%反向链路的流量裕度更新
    55.         elseif flag(u,v)==1&&maxLY==c(u,v)%当这条边为前向边且是饱和边时
    56.             w(u,v)=BV;%更新权重值
    57.             c(u,v)=c(u,v)-maxLY;%更新流量裕度值
    58.             w(v,u)=-a(u,v);%反向链路权重更新
    59.         elseif flag(u,v)==-1&&maxLY
    60.             w(v,u)=a(v,u);
    61.             c(v,u)=c(v,u)+maxLY;
    62.             w(u,v)=-a(v,u);
    63.         elseif flag(u,v)==-1&&maxLY==c(u,v)%当这条边为反向边且是饱和边时
    64.             w(v,u)=a(v,u);
    65.             c(u,v)=c(u,v)-maxLY;
    66.             w(u,v)=BV;
    67.         else
    68.         end
    69.     end
    70.     MaxFlow2=sum(f(s,:));
    71.     MinCost2=sum(sum(f.*a));
    72.     if MaxFlow2<=V
    73.         MaxFlow=MaxFlow2;
    74.         MinCost=MinCost2;
    75.         [L,R]=FLOYD2(w,s,t);
    76.     else f=f1+prop*(f-f1);
    77.         MaxFlow=V;
    78.         MinCost=MinCost1+prop*(MinCost2-MinCost1);
    79.         return
    80.     end
    81.     if L(end)
    82.         RE=1;%如果路径长度小于大数,说明路径存在
    83.     else
    84.         RE=0;
    85.     end
    86. end
    复制代码
    帮你将乱码修改一下
    回复

    使用道具 举报

    corrine        

    3

    主题

    4

    听众

    80

    积分

    升级  78.95%

  • TA的每日心情
    擦汗
    2012-9-24 21:43
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    自我介绍
    和大家分享建模经历

    群组学术交流A

    回复

    使用道具 举报

    傻人招        

    11

    主题

    5

    听众

    172

    积分

    升级  36%

  • TA的每日心情
    奋斗
    2012-9-19 16:56
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    新人进步奖

    群组Matlab讨论组

    群组学术交流B

    群组学术交流A

    回复

    使用道具 举报

    corrine        

    3

    主题

    4

    听众

    80

    积分

    升级  78.95%

  • TA的每日心情
    擦汗
    2012-9-24 21:43
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    自我介绍
    和大家分享建模经历

    群组学术交流A

    回复

    使用道具 举报

    唯世        

    0

    主题

    8

    听众

    375

    积分

    升级  25%

  • TA的每日心情
    开心
    2014-2-7 07:48
  • 签到天数: 69 天

    [LV.6]常住居民II

    自我介绍

    群组2013认证赛B题讨论群组

    群组第四届cumcm国赛实训

    群组第三届数模基础实训

    群组2013数模夏令营B题

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-11-22 01:09 , Processed in 1.318805 second(s), 102 queries .

    回顶部