ga
用遗传算法寻找函数的最优解
语法规则
x = ga(fitnessfcn,nvars)
x = ga(fitnessfcn,nvars,A,b)
x = ga(fitnessfcn,nvars,A,b,Aeq,beq)
x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)%
其中fitnessfc为函数的句柄或者为匿名函数
nvars,表示自变量个个数(例如自变量为向量X,nvars代表X中的元素个数)
A,b就是表达式A*X<=b;
Aeq:表示线性等式约束矩阵,若是没有等式约束就写为[];
Beq:表示线性等式约束的个数Beq=length(nvars);
x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)
x =
ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)
x = ga(problem)
[x,fval] = ga(...)
例子
A = [1 1; -1 2; 2 1]; b = [2; 2; 3]; lb = zeros(2,1); [x,fval,exitflag] = ga(@lincontest6,2,A,b,[],[],lb) %lb表示x的下界,up表示上界 Optimization terminated: average change in the fitness value less than options.TolFun. x = 0.7794 1.2205 fval = -8.03916 exitflag =
z=f(x,y) 1、编码(解决初始化种群),先创建一个数组pop(popsize stringlenth)有popsize表示染色体个数列stringlenth的前一部分代表x的染色体,后一部分代表y的染色体。计算x,y染色体对所对应的十进制数值并记数组pop的第stringlenth+1,stringlenth+2列,计算f(x,y)的值并计为数组pop的第stringlenth+3列,计算每个染色体的复制概率并计为数组pop的第stringlenth+4列 function[pop1 f d pe stringlenth]=initialize(popsize stringlenth pop), pop=round(rand(popsize stringlent