遗传算法程序〔一〕: 说明: fga.m 为遗传算法的主程序; 采纳二进制 Gray 编码,采纳基于轮盘赌法的非线性排名选择, 均匀交叉,变异操作,而且还引入了倒位操作!function [BestPop,Trace]=fga(FUN,LB,UB,eranum,popsize,pCross,pMutation,pInversion,options) % [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation) % Finds a maximum of a function of several variables.% fmaxga solves problems of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群% Trace - 最正确染色体所对应的目标函数值% FUN - 目标函数% LB - 自变量下限% UB - 自变量上限% eranum - 种群的代数,取 100--1000(默认 200)% popsize - 每一代种群的规模;此可取 50--200(默认 100)% pcross - 交叉概率,一般取 0.5--0.85 之间较好(默认 0.8)% pmutation - 初始变异概率,一般取 0.05-0.2 之间较好(默认 0.1)% pInversion - 倒位概率,一般取 0.05-0.3 之间较好(默认 0.2)% options - 1*2 矩阵,options(1)=0 二进制编码(默认 0),option(1)~=0 十进制编%码,option(2)设定求解精度(默认 1e-4)%% ------------------------------------------------------------------------T1=clock;if nargin<3, error('FMAXGA requires at least three input arguments'); endif nargin==3, eranum=200;popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];endif nargin==4, popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];endif nargin==5, pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];endif nargin==6, pMutation=0.1;pInversion=0.15;options=[0 1e-4];endif nargin==7, pInversion=0.15;options=[0 1e-4];endif find((LB-UB)>0) error('数据输入错误,请重新输入(LB