matlab仿真程序报错,请教一下,非常感谢
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初学者,现在又急着用,想请教一下这个问题。非常感谢!! 返回小木虫查看更多
好笼统的问题
就是程序报错:输入的某一变量没有定义,想请教一下各位大神怎么改这个报错
,
JobNumber是NEH_ForTFT函数的输入变量,但是NEH_ForTFT这个函数没有被调用啊
另外,程序问题不是这样问的,基本不会有人逐行逐行地帮你看代码
未在主程序里面定义,这个是个程序函数。
好复杂的样子,不好看
加qq1632612110详聊
需要调试一下。