zlh79 发表于 2007-5-11 16:55

矩阵维数规则问题

我做了一个小程序,但是运行总出现“??? Index exceeds matrix dimensions.”,去红色部分后,运行没有问题.我检查不出为什么,请各位高手指点以下.
for i=1:mant%%%每次均从同一点出发
               =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));
            ifYP(city(i,t))>=15523.9%%%经过搜索P仍必须满足YP(city(i,t))>15523.9的条件
                ifYAV(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 编辑 ]

zlh79 发表于 2007-5-11 16:56

不好意思发错地方,但是还是希望高人指点一下

xinyuxf 发表于 2007-5-11 16:58

把错误全贴出来吧
页: [1]
查看完整版本: 矩阵维数规则问题