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

📄 ga.cpp

📁 matlab的GA工具箱与vc混和实现遗传算法的源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            //Pick another parent
            xN = deblank(xOverFNs(i_,c_p));
            //Get the name of crossover function
            /*[c1,c2] = */feval(xN,(CL(endPop(a,c_p)),endPop(b,c_p),bounds,(BR(gen),xOverOps(i_,c_p))),i_o,c1,c2) \
              ;
            
            if (istrue(c1(colon(1.0,1.0,numVar))==endPop(a,(colon(1.0,1.0,numVar))))) {
              //Make sure we created a new 
              c1(xZomeLength) = endPop(a,xZomeLength);
              //solution before evaluating
            } else
            if (istrue(c1(colon(1.0,1.0,numVar))==endPop(b,(colon(1.0,1.0,numVar))))) {
              c1(xZomeLength) = endPop(b,xZomeLength);
            } else {
              
              //[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]);
              eval(e1str);
            }
            if (istrue(c2(colon(1.0,1.0,numVar))==endPop(a,(colon(1.0,1.0,numVar))))) {
              c2(xZomeLength) = endPop(a,xZomeLength);
            } else
            if (istrue(c2(colon(1.0,1.0,numVar))==endPop(b,(colon(1.0,1.0,numVar))))) {
              c2(xZomeLength) = endPop(b,xZomeLength);
            } else {
              
              //[c2(xZomeLength) c2] = feval(evalFN,c2,[gen evalOps]);
              eval(e2str);
            }
            
            endPop(a,c_p) = c1;
            endPop(b,c_p) = c2;
          }
        }
        
        i_ga_v2 = colon(1.0,1.0,numMuts); int i_ga_i2;
        for (i_ga_i2=0;i_ga_i2<i_ga_v2.cols();i_ga_i2++) {
          forelem(i_,i_ga_v2,i_ga_i2);
          j_ga_v3 = colon(1.0,1.0,mutOps(i_,1.0)); int j_ga_i3;
          for (j_ga_i3=0;j_ga_i3<j_ga_v3.cols();j_ga_i3++) {
            forelem(j_,j_ga_v3,j_ga_i3);
            a = round(rand()*(popSize-1.0)+1.0);
            c1 = feval(deblank(mutFNs(i_,c_p)),(CL(endPop(a,c_p)),bounds,(BR(gen),mutOps(i_,c_p))));
            if (istrue(c1(colon(1.0,1.0,numVar))==endPop(a,(colon(1.0,1.0,numVar))))) {
              c1(xZomeLength) = endPop(a,xZomeLength);
            } else {
              
              //[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]);
              eval(e1str);
            }
            endPop(a,c_p) = c1;
          }
        }
        
      } else {
        //We are running a probabilistic model of genetic operators
        i_ga_v4 = colon(1.0,1.0,numXOvers); int i_ga_i4;
        for (i_ga_i4=0;i_ga_i4<i_ga_v4.cols();i_ga_i4++) {
          forelem(i_,i_ga_v4,i_ga_i4);
          xN = deblank(xOverFNs(i_,c_p));
          //Get the name of crossover function
          cp = find(rand(popSize,1.0)<xOverOps(i_,1.0)==1.0);
          if (istrue(rem(size(cp,1.0),2.0))) {
            cp = cp(colon(1.0,1.0,(size(cp,1.0)-1.0)));
          }
          cp = reshape(cp,size(cp,1.0)/2.0,2.0);
          j_ga_v5 = colon(1.0,1.0,size(cp,1.0)); int j_ga_i5;
          for (j_ga_i5=0;j_ga_i5<j_ga_v5.cols();j_ga_i5++) {
            forelem(j_,j_ga_v5,j_ga_i5);
            a = cp(j_,1.0);
            b = cp(j_,2.0);
            
            /*[endPop(a,c_p),endPop(b,c_p)] = */feval(xN,(CL(endPop(a,c_p)),endPop(b,c_p),bounds,(BR(gen),xOverOps( \
              i_,c_p))),i_o,lhs_0,lhs_1); endPop(a,c_p) = lhs_0; endPop(b,c_p) = lhs_1;
          }
        }
        i_ga_v6 = colon(1.0,1.0,numMuts); int i_ga_i6;
        for (i_ga_i6=0;i_ga_i6<i_ga_v6.cols();i_ga_i6++) {
          forelem(i_,i_ga_v6,i_ga_i6);
          mN = deblank(mutFNs(i_,c_p));
          j_ga_v7 = colon(1.0,1.0,popSize); int j_ga_i7;
          for (j_ga_i7=0;j_ga_i7<j_ga_v7.cols();j_ga_i7++) {
            forelem(j_,j_ga_v7,j_ga_i7);
            endPop(j_,c_p) = feval(mN,(CL(endPop(j_,c_p)),bounds,(BR(gen),mutOps(i_,c_p))));
            eval(e1str);
          }
        }
      }
      
      gen = gen+1.0;
      done = feval(termFN,(CL((BR(gen),termOps)),bPop,endPop));
      //See if the ga is done
      startPop = endPop;
      //Swap the populations
      
      /*[bval,bindx] = */min(startPop(c_p,xZomeLength),i_o,bval,bindx);
      //Keep the best solution
      startPop(bindx,c_p) = best;
      //replace it with the worst
    }
    
    /*[bval,bindx] = */max(startPop(c_p,xZomeLength),i_o,bval,bindx);
    if (istrue(display_)) {
      fprintf(1.0,TM("\\n%d %f\\n"),(CL(gen),bval));
      
    }
    
    x = startPop(bindx,c_p);
    if (istrue(opts(2.0)==0.0)) {
      //binary
      x = b2f(x,bounds,bits);
      bPop(bFoundIn,c_p) = (BR(gen),b2f(startPop(bindx,colon(1.0,1.0,numVar)),bounds,bits),startPop(bindx,xZomeLength) \
        );
    } else {
      
      bPop(bFoundIn,c_p) = (BR(gen),startPop(bindx,c_p));
    }
    
    if (istrue(collectTrace)) {
      traceInfo(gen,1.0) = gen;
      //current generation
      traceInfo(gen,2.0) = startPop(bindx,xZomeLength);
      //Best fittness
      traceInfo(gen,3.0) = mean(startPop(c_p,xZomeLength));
      //Avg fittness
    }
    
    
    
    
    
    
    
    call_stack_end;
    
    // nargin, nargout exit code
    nargin_val=old_nargin; nargout_val=old_nargout;
    
    // function exit code
    bounds.setname(NULL); evalFN.setname(NULL); evalOps.setname(NULL); startPop.setname(NULL); opts.setname(NULL) \
      ; termFN.setname(NULL); termOps.setname(NULL); selectFN.setname(NULL); selectOps.setname(NULL); xOverFNs.setname( \
      NULL); xOverOps.setname(NULL); mutFNs.setname(NULL); mutOps.setname(NULL); 
    x__o=x; endPop__o=endPop; bPop__o=bPop; traceInfo__o=traceInfo; 
    return x_M;
    end_scope
  }
  
  
  Mm ga() {
    begin_scope
    double old_nargin=nargin_val; nargin_val=0.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(bounds); dMm(evalFN); dMm(evalOps); dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm( \
      selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o);  \
      dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=1.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(evalFN); dMm(evalOps); dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps) \
      ; dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o) \
      ; 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=2.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(evalOps); dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs) \
      ; dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=3.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps) \
      ; dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=4.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs) \
      ; dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=5.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps) \
      ; dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=6.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o) \
      ; dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=7.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o) \
      ; dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=8.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o) \
      ; dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN, Mm selectOps) \
     {
    begin_scope
    double old_nargin=nargin_val; nargin_val=9.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o) \
      ; 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN, Mm selectOps, \
     Mm xOverFNs) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=10.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
    dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o); 
    ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
       mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(x__o);
    end_scope
  }
  
  Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN, Mm selectOps, \
     Mm xOverFNs, Mm xOverOps) {
    begin_scope
    double old_nargin=nargin_val; nargin_val=11.0; nargin_set=1;
    double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -