当前位置: 首页 > 仿真模拟 >matlab仿真程序报错,请教一下,非常感谢

matlab仿真程序报错,请教一下,非常感谢

作者 走向你77
来源: 小木虫 350 7 举报帖子
+关注

function [BestSequence,BestTFT]=NEH_ForTFT(JobNumber,MachineNumber,ProcessingTime)
JobN=JobNumber;
MachineN=MachineNumber;
if JobN<1
    return;
end
if MachineN<1
    return;
end
SumProcessingTime=zeros(1,JobN);
AllDelayTime=zeros(JobN,JobN);
for i=1:JobN
    for j=1:JobN
        if i==j
            continue;
        else
            AllDelayTime(i,j)=AppendDelay(MachineN,ProcessingTime(i,1:MachineN),ProcessingTime(j,1:MachineN));
        end
    end
end
DescendS=zeros(1,JobN);
JobSequence=zeros(1,JobN);
DescendS(1)=1;IndexD=1;
SumProcessingTime(1)=sum(ProcessingTime(1,1:MachineN));
for No_Job=2:JobN
    SumProcessingTime(No_Job)=sum(ProcessingTime(No_Job,1:MachineN));
    IndexD=No_Job;
    while  SumProcessingTime(No_Job)<SumProcessingTime(DescendS(IndexD-1))
           DescendS(IndexD)=DescendS(IndexD-1);
           IndexD=IndexD-1;
           if IndexD==1
               break;
           end
    end
    DescendS(IndexD)=No_Job;
end

[BestSequence,BestTFT]=Chins(DescendS);%call nested functin to finish the search
    function [JobSequence,TFT_Sequenced]=Chins(DescendS)
             No_Sequenced=zeros(1,JobN);
             Num_Sequenced=0;
             No_Sequencing=DescendS;%保存待排序的
             Num_Sequencing=JobN;%保存待排序的数目
             No_Sequenced(1)=No_Sequencing(1);Num_Sequenced=1;%初始化
             No_Sequencing(1)=[];Num_Sequencing=Num_Sequencing-1;
             TFT_Sequenced=SumProcessingTime(No_Sequenced(1));
             while Num_Sequencing>0
                   for i=1:Num_Sequencing
                        for j=1:Num_Sequenced+1
                           if  j==1
                               DeltDelayTime=AllDelayTime(No_Sequencing(i),No_Sequenced(1));
                           elseif   j==Num_Sequenced+1
                               DeltDelayTime==0;
                           else
                               DeltDelayTime=AllDelayTime(No_Sequenced(j-1),No_Sequencing(i))+AllDelayTime(No_Sequencing(i),No_Sequenced(j))-AllDelayTime(No_Sequenced(j-1),No_Sequenced(j));
                           end
                           DeltDelayTime=DeltDelayTime*(Num_Sequenced-j+1);%对后面(Num_Sequenced-j+1)个工作造成影响
                           if  j==1
                               TempTFT=TFT_Sequenced+DeltDelayTime+SumProcessingTime(No_Sequencing(i));
                               CandidateMin_TFT_Sequenced=TempTFT;
                               InsertPos_InSequencd(No_Sequencing(i))=j;
                           elseif j==2
                                  TempTFT=TFT_Sequenced+DeltDelayTime+AllDelayTime(No_Sequenced(1),No_Sequencing(i))+SumProcessingTime(No_Sequencing(i));
                           else   
                                 jDeltDelayTime=0;
                                 for pos=2:j-1
                                     jDeltDelayTime=jDeltDelayTime+AllDelayTime(No_Sequenced(pos-1),No_Sequenced(pos));
                                 end
                                 jDeltDelayTime=jDeltDelayTime+AllDelayTime(No_Sequenced(j-1),No_Sequencing(i));
                                 TempTFT=TFT_Sequenced+DeltDelayTime+jDeltDelayTime+SumProcessingTime(No_Sequencing(i));
                           end
                          
上面的程序在matlab里面运行的时候报错:“输入的JobNumber没有定义”,matlab初学者,现在又急着用,想请教一下这个问题。非常感谢!! 返回小木虫查看更多

今日热帖
  • 精华评论
  • 我怀念的TQ

    好笼统的问题

  • 走向你77

    引用回帖:
    2楼: Originally posted by 我怀念的TQ at 2017-01-17 09:36:22
    好笼统的问题

    就是程序报错:输入的某一变量没有定义,想请教一下各位大神怎么改这个报错

  • zbconquer

    JobNumber是NEH_ForTFT函数的输入变量,但是NEH_ForTFT这个函数没有被调用啊

    另外,程序问题不是这样问的,基本不会有人逐行逐行地帮你看代码

  • 四月飞龙

    未在主程序里面定义,这个是个程序函数。

  • 无知群众

    好复杂的样子,不好看

  • zhangxiyu199

    加qq1632612110详聊

  • 茶水人生

    需要调试一下。

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓