声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 901|回复: 2

[编程技巧] 矩阵维数规则问题

[复制链接]
发表于 2007-5-11 16:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我做了一个小程序,但是运行总出现“??? Index exceeds matrix dimensions.”,去红色部分后,运行没有问题.我检查不出为什么,请各位高手指点以下.
for i=1:mant%%%每次均从同一点出发
               [x]=find(max(YMV));%%为了保证每只蚂蚁仅仅找到一个最值
               MAX_YMV=max(YMV);
           for t=2:NC
                city(i,t)=0;
                city(i,t)=ceil(rand*mant);%%蚂蚁i在t刻所可能选择的位置
              a=rand;%%%随即生成一个概率
              for m=1:mant%%%下一城市城市的选择
                if a<=PER(city(i,t-1),m)%%%%概率选择
                 city(i,t)=m;
                else
               continue;
                   end
               end  %%城市选择结束
          if P(city(i,t))>=15523.9 && AV(city(i,t-1))-AV(city(i,t))>=0;%%当达到容许值且目标值减少时才移动
       DELT(city(i,t-1),city(i,t))=DELT(city(i,t-1),city(i,t))+Q;%%设置初始值
       T(city(i,t-1),city(i,t))= T(city(i,t-1),city(i,t))*rho+DELT(city(i,t-1),city(i,t));
             %%蚂蚁i从位置city(i,t-1)到city(i,t)移动后路径上的信息量%%
              %%AV(city(i,t-1))-AV(city(i,t))>0为了保证蚂蚁不走回头路及冤枉路%%
              %%对于不满足P(city(i,t))>=15523.9条件的不移动,该蚂蚁休眠%%

          %%%%%%%%%%%% %%以下为以半径r搜索%%%%%%%%%%%%%%%%%%
        for j=1:3%%以r开始搜索
        for n=1:2
          YD(city(i,t))=YD(city(i,t))+((-1)^n)*j*r1;%%%以r1搜索
          YL(city(i,t))=YL(city(i,t))+((-1)^n)*j*r2;%%以r2搜索
               
          YN(city(i,t))=3.1415926*YL(city(i,t))^0.0628*YD(city(i,t))^2.308*33.8^0.2941;
          YK(city(i,t))=m(city(i,t))/YN(city(i,t));%%折减系数

             if YK(city(i,t))>=1
          %%强制折减系数YK(city(i,t))=1
           %%%YK(city(i,t))=1
           YP(city(i,t))=(3.1415926*YD(city(i,t))*YL(city(i,t))*105+3.1415926*YD(city(i,t))^2*4500/4)/2;%%%%求解允许承载力
            else
           YP(city(i,t))=(YK(j)*3.1415926*YD(city(i,t))*YL(city(i,t))*105+3.1415926*YD(city(i,t))^2*4500/4)/2;%%%%求解允许承载力
            end
           YV(city(i,t))=3.141926*YD(city(i,t))^2*YL(city(i,t))/4;%桩基体积
           %%%%目标函数值%%%%      
           YAV(city(i,t))=0.573*YP(city(i,t))+0.783*YV(city(i,t));
            if  YP(city(i,t))>=15523.9  %%%经过搜索P仍必须满足YP(city(i,t))>15523.9的条件
                if  YAV(city(i,t))<MAX_YMV     
                      YMV(x)=YAV(city(i,t));
                     YMD(x)=YD(city(i,t));
                     YML(x)=YL(city(i,t));%更新精英蚂蚁
                     YI(x)=city(i,t);%%更新记录精英蚂蚁的位置                 
                else
                 continue;
                end
             else
             continue;
            end
         end %%%结束n循环
       end %%%结束m循环,同时结束搜索  
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    else
city(i,t)=city(i,t-1);
   end
  end%%%%结束t循环
end  %%%%第一次循环结束

[ 本帖最后由 eight 于 2007-5-11 21:54 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-5-11 16:56 | 显示全部楼层
不好意思发错地方,但是还是希望高人指点一下
发表于 2007-5-11 16:58 | 显示全部楼层
把错误全贴出来吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-19 14:44 , Processed in 0.083403 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表