⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readtask.sci

📁 基于SCILAB的The Genetic Algorithm Toolbox for SCILAB (GATS)工具箱
💻 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 + -