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

📄 ga_ini.m

📁 遗传算法的matlab程序集(内有很多问题的具体解决程序)
💻 M
字号:
% 初始化参数然后调用tree_ga.m
% 群体大小 
pop_size=25;
% 世代数目
num_gen=50;
% Equation Generation
% p_sub_tree: 子树的概率
% p_const: 常量的概率
% Note: 输入概率= 1 - p_sub_tree - p_const
% s_length: 连锁子树数目
p_sub_tree=0.5;
p_const=0.2;
s_length=8;
equ_par = [p_sub_tree p_const];
% 最小平方距离优化选择
%options(1)  = 1;  % 显示结果
%options(5)  = 1;  % 高斯牛顿
options(14) = 1000; % 最大循环数
time_out = 30;
% 再生
% 代沟
% 旧世代溶入新世代的比率
p_old=0.1;
% 转变, 交叉和转换的概率
p_mutate=0.25;
p_cross=0.65;
p_perm=0.10;
% 在转变期间将常量转换成输入的概率
p_c2u = 0.1; 
% 适应度函数
% 选择适应度函数
ffunc = 'ccf';
%ffunc = 'mse';
snip_length=200;
% 显示结果,存储并重新初始化
% 显示频率
presults=1;
% 简化显示
simp_disp=1;   % [1=ON, 0=OFF]
% 存储最好的方案并存入文件
dump_num = 10;
%按给定代数间隔从最好的方案开始重新初始化 
rein_num = num_gen+1;
% 函数基本集
% 变量数和函数标识符
 num_fun_arg(1)=2; fun_name(1)='^'; % ^
 num_fun_arg(2)=2; fun_name(2)='*'; % *
 num_fun_arg(3)=2; fun_name(3)='-'; % -
 num_fun_arg(4)=2; fun_name(4)='+'; % +
 num_fun_arg(5)=2; fun_name(5)='/'; % /
 num_fun_arg(6)=1; fun_name(6)='r'; % sqrt
 num_fun_arg(7)=1; fun_name(7)='l'; % log
 num_fun_arg(8)=1; fun_name(8)='s'; % ^2
 num_fun_arg(9)=1; fun_name(9)='p'; % exp
% 用户定义函数
% <1> = 常量
% <2> = 输入
% <3> = 子树
%--------------------------------------------------------------
num_fun_arg(10)=2; fun_name(10)='1';
user_def_fun='{7.2e9*<3>*p(9.5e3/u3)*<3>}';

num_fun_arg(11)=2; fun_name(11)='2';
user_def_fun=str2mat(user_def_fun,'{1000*<3>/u1*<3>}');  
  
% 为每个用户函数设立函数权重
% 初始代的函数权重
% 函数基本集
fun_wgt(1)=2; % ^
fun_wgt(2)=3; % *
fun_wgt(3)=3; % -
fun_wgt(4)=3; % +
fun_wgt(5)=3; % /
fun_wgt(6)=1; % sqrt
fun_wgt(7)=1; % log
fun_wgt(8)=1; % ^2
fun_wgt(9)=1; % exp

% 用户定义函数
fun_wgt(10)=0; 
fun_wgt(11)=0; 
%fun_wgt(12)=1;
%fun_wgt(13)=1;
% 转变的功能权重
mut_fun_wgt(1)=2; % ^
mut_fun_wgt(2)=3; % *
mut_fun_wgt(3)=3; % -
mut_fun_wgt(4)=3; % +
mut_fun_wgt(5)=3; % /
mut_fun_wgt(6)=1; % sqrt
mut_fun_wgt(7)=1; % log
mut_fun_wgt(8)=1; % ^2
mut_fun_wgt(9)=1; % exp

mut_fun_wgt(10)=0; 
mut_fun_wgt(11)=0; 
%mut_fun_wgt(11)=1;
%mut_fun_wgt(12)=1;
%mut_fun_wgt(13)=1;

% 产生函数集

 for i=1:fun_wgt(1),
    fun_set(i)=fun_name(1);num_fun_arg_set(i)=num_fun_arg(1);
 end
 fun_ind=fun_wgt(1);
 
 for j=2:length(fun_wgt),
    for i=fun_ind+1:fun_ind+fun_wgt(j),
       fun_set(i)=fun_name(j);num_fun_arg_set(i)=num_fun_arg(j);
    end;
    fun_ind=fun_ind+fun_wgt(j);
 end        
 
% 产生转变函数集

 for i=1:mut_fun_wgt(1),
    mut_fun_set(i)=fun_name(1);mut_num_fun_arg_set(i)=num_fun_arg(1);
 end
 fun_ind=mut_fun_wgt(1);
 
 for j=2:length(mut_fun_wgt),
    for i=fun_ind+1:fun_ind+mut_fun_wgt(j),
       mut_fun_set(i)=fun_name(j);mut_num_fun_arg_set(i)=num_fun_arg(j);
    end;
    fun_ind=fun_ind+mut_fun_wgt(j);
 end

% 调用 tree_ga
tree_ga2

⌨️ 快捷键说明

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