www.gusucode.com > matlab的GA工具箱与vc混和实现遗传算法源码程序 > f552.cpp

      #include "matlib.h"
  #pragma hdrstop
  
  #include "f552.h"
  
  
  Mm f552(Mm sol, Mm options, i_o_t, Mm& sol__o, Mm& eval__o) {
    begin_scope
    sol.setname("sol"); options.setname("options"); 
    dMm(eval_); dMm(x1); dMm(x2); dMm(r1); dMm(r2); dMm(g1); dMm(g2); 
    
    call_stack_begin;
    // nargin, nargout entry code
    double old_nargin=nargin_val; if (!nargin_set) nargin_val=2.0;
    nargin_set=0;
    double old_nargout=nargout_val; if (!nargout_set) nargout_val=2.0;
    nargout_set=0;
    
    // translated code
    
    x1 = sol(1.0);
    x2 = sol(2.0);
    r1 = 0.1;
    r2 = 0.8;
    //约束条件
    g1 = x1-2.0*x2+1.0;
    g2 = power(x1,2.0)/4.0-power(x2,2.0)+1.0;
    //加惩罚项的适值
    if (istrue((g1>=0.0))&&istrue((g2>=0.0))) {
      eval_ = power((x1-2.0),2.0)+power((x2-1.0),2.0);
    } else {
      
      eval_ = power((x1-2.0),2.0)+power((x2-1.0),2.0)+r1*g1+r2*g2;
      eval_ = -eval_;
    }
    call_stack_end;
    
    // nargin, nargout exit code
    nargin_val=old_nargin; nargout_val=old_nargout;
    
    // function exit code
    sol.setname(NULL); options.setname(NULL); 
    sol__o=sol; eval__o=eval_; 
    return x_M;
    end_scope
  }
  
  
  Mm f552(Mm sol, Mm options) {
    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(sol__o); dMm(eval__o); 
    f552(sol, options, i_o, sol__o, eval__o);
    nargout_val=old_nargout;
    nargin_val=old_nargin;
    return(sol__o);
    end_scope
  }