📄 readtask.sci
字号:
function ReadTask(TaskFile)
global Population;
global Bounds;
global EvalFuns;
global MaxGen;
global TermFun;
global Coding;
global SelectMeth;
global SelectPara
global XoverMeth
global XoverPara
global MutateMeth
global MutatePara
global AdjSelectMeth;
global AdjSelectPara;
global AdjXoverMeth;
global AdjXoverPara;
global AdjMutateMeth;
global AdjMutatePara;
global FitScalingMeth FitScalingPara
global ClusterNicheMeth ClusterNichePara
global ShareNicheMeth ShareNichePara
global ElitistReserve
global ExtElitistReserve ElitistNonDup ExtElitistReservePara
global CrsGenEliRes
global TaskList;
global TaskPopu;
global PopUsed;
global InformCollect;
global InitializePop;
global SortPopu;
Population=-1;
Bounds=[];
EvalFuns=[];
MaxGen=100;
TermFun='';
CodeMeth='';
SelectMeth='';
SelectPara='';
XoverMeth='';
XoverPara='';
MutateMeth='';
MutatePara='';
FitScalingMeth='';
FitScalingPara='';
ClusterNicheMeth='';
ClusterNichePara='';
ShareNicheMeth='';
ShareNichePara='';
AdjSelectMeth = '';
AdjSelectPara = '';
AdjXoverMeth = '';
AdjXoverPara = '';
AdjMutateMeth = '';
AdjMutatePara = '';
ElitistReserve=1;
ExtElitistReserve=0;
ElitistNonDup=0;
ExtElitistReservePara=0;
CrsGenEliRes=0;
TaskList=[];
TaskPopu=[];
PopUsed=0;
InformCollect = 1;
SortPopu=0;
InitializePop = 0;
[fid,err]= mopen(TaskFile, 'r');
if ( fid == -1), return, end;
filetext = mgetl(fid);
mclose(fid);
i=1;
while i<=size(filetext,1)
tline = filetext(i,:);
if ( isempty(tline) )
continue;
end
c = parse(tline);
select stripblanks(c(1,:))
case 'Popu:'
if strcmp(stripblanks(c(2,:)),'init')
InitializePop = 1;
Population = evstr(c(3,:));
end;
if strcmp(stripblanks(c(2,:)),'inherit')
InitializePop = 0;
end;
case 'Bounds:'
Bounds = eval(c(2,:));
if (size(Bounds,2) == 2),Bounds(:,3)=1e-6;end;
case 'Coding:'
Coding = stripblanks(c(2,:));
case 'EvalFun:'
j=size(EvalFuns,1);
EvalFuns(j+1,1) = stripblanks(c(2,:));
EvalFuns(j+1,2)= stripblanks(c(3,:));
case 'CycleBegin:'
TermFun = stripblanks(c(2,:));
MaxGen=stripblanks(c(3,:));
i=i+1;
tline = stripblanks(filetext(i,:));
while ~strcmp(tline, 'End')
fc = parse(tline);
//disp(fc(1,:));
select stripblanks(fc(1,:))
case 'Select:'
SelectMeth = stripblanks(fc(2,:));
SelectPara = fc(3,:);
case 'Crossover:'
XoverMeth = stripblanks(fc(2,:));
XoverPara = fc(3,:);
case 'Mutation:'
MutateMeth = stripblanks(fc(2,:));
MutatePara = fc(3,:);
case 'FitScaling:'
FitScalingMeth=stripblanks(fc(2,:));
FitScalingPara = fc(3,:);
case 'ClusterNiche:'
ClusterNicheMeth = stripblanks(fc(2,:));
ClusterNichePara = fc(3,:);
case 'ShareNiche:'
ShareNicheMeth = stripblanks(fc(2,:));
ShareNichePara = fc(3,:);
case 'ElitistReserve:'
if (strcmp(stripblanks(fc(2,:)),'on'))
ElitistReserve = 1;
else
ElitistReserve = 0;
end;
case 'ExtElitistReserve:'
ExtElitistReserve = 1;
ElitistReserve = 0;
ExtElitistReservePara = stripblanks(fc(2,:));
if ( size(fc,1)==3 )
if strcmp(stripblanks(fc(3,:)),('NonDuplication'))
ElitistNonDup=1;
else
ElitistNonDup=0;
end
end
case 'CrossGenerationElitistReserve:'
if (strcmp(stripblanks(fc(2,:)),'on'))
CrsGenEliRes = 1;
ElitistReserve = 0;
else
CrsGenEliRes = 0;
end;
case 'SortPopu:'
if (strcmp(stripblanks(fc(2,:)),'on'))
SortPopu = 1;
else
SortPopu = 0;
end;
case 'Task:'
temp = stripblanks(fc(3,:));
l = size(temp,2);
a=temp(l);
if ( a == '%' )
ThesePop = Population * evstr(temp(1:l-1))/100;
else
ThesePop = evstr(pl(2,:));
end;
if ( ThesePop + PopUsed > Population )
disp('error: summary of subtask''s Population is bigger than main task''s');
else
TaskList = [TaskList;fc(2,1:20)];
TaskPopu = [TaskPopu;PopUsed+1,PopUsed + ThesePop];
PopUsed = PopUsed + ThesePop;
end;
else
disp('Error: unrecognizable symbol!');
disp(fc(1,:));
break;
end
i=i+1;
tline = stripblanks(filetext(i,:));
end
case 'InformCollect:'
if strcmp(stripblanks(c(2,:)),'on')
InformCollect=1;
else
InformCollect=0;
end
case 'AdjustSelect:'
AdjSelectMeth=stripblanks(c(2,:));
AdjSelectPara=c(3,:);
case 'AdjustXover:'
AdjXoverMeth=stripblanks(c(2,:));
AdjXoverPara=c(3,:);
case 'AdjustMutate:'
AdjMutateMeth=stripblanks(c(2,:));
AdjMutatePara=c(3,:);
case ''
else
disp(c(1,:));
break;
end
i=i+1;
end
if (1<0)
disp (Population);
disp (Bounds);
disp (EvalFuns);
disp (MaxGen);
disp (TermFun);
disp (Coding);
disp (SelectMeth);
disp (SelectPara)
disp (XoverMeth)
disp (XoverPara)
disp (MutateMeth)
disp (MutatePara)
disp (AdjSelectMeth);
disp (AdjSelectPara);
disp (AdjXoverMeth);
disp (AdjXoverPara);
disp (AdjMutateMeth);
disp (AdjMutatePara);
disp (FitScalingMeth, FitScalingPara);
disp (ClusterNicheMeth, ClusterNichePara);
disp (ShareNicheMeth, ShareNichePara);
disp (ElitistReserve);
disp (ExtElitistReserve, ElitistNonDup, ExtElitistReservePara);
disp (CrsGenEliRes);
disp (TaskList);
disp (TaskPopu);
disp (PopUsed);
disp (InformCollect);
disp (InitializePop);
disp (SortPopu);
end
if strcmp(stripblanks(Coding),'Binary'),codetype=0;end;
if strcmp(stripblanks(Coding),'Real'), codetype=1;end;
if strcmp(stripblanks(Coding),'Order'), codetype=2;end;
if strcmp(stripblanks(Coding),'Gray'), codetype=3;end;
if InitializePop
startPop=initializega(Population,Bounds,[codetype]);
end;
DisplayFun='';
opts=[codetype];
[x,endPop,bPop,traceInfo,pareto] = universalga(Bounds,Population,opts,startPop,EvalFuns,...
SelectMeth,SelectPara,XoverMeth,XoverPara,MutateMeth,MutatePara,...
AdjSelectMeth,AdjSelectPara,AdjXoverMeth,AdjXoverPara,AdjMutateMeth,AdjMutatePara,...
FitScalingMeth,FitScalingPara,ClusterNicheMeth,ClusterNichePara,ShareNicheMeth,ShareNichePara,...
ElitistReserve,ExtElitistReserve,ElitistNonDup,ExtElitistReservePara,CrsGenEliRes,...
TermFun,MaxGen,InformCollect,TaskList,SortPopu,'');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -