function out = RunGA(problem, params)
% Problem
CostFunction = problem.CostFunction;
nVar = problem.nVar;
VarSize = [1, nVar];
VarMin = problem.VarMin;
VarMax = problem.VarMax;
% Params
MaxIt = params.MaxIt;
nPop = params.nPop;
beta = params.beta;
pC = params.pC;
nC = round(pC*nPop/2)*2;
gamma = params.gamma;
mu = params.mu;
sigma = params.sigma;
% Template for Empty Individuals
empty_individual.Position = [];
empty_individual.Cost = [];
% Best Solution Ever Found
bestsol.Cost = inf;
% Initialization
pop = repmat(empty_individual, nPop, 1);
for i = 1:nPop
% Generate Random Solution
pop(i).Position = unifrnd(VarMin, VarMax, VarSize);
% Evaluate Solution
pop(i).Cost = CostFunction(pop(i).Position);
% Compare Solution to Best Solution Ever Found
if pop(i).Cost < bestsol.Cost
bestsol = pop(i);
end
end
% Best Cost of Iterations
bestcost = nan(MaxIt, 1);
% Main Loop
for it = 1:MaxIt
% Selection Probabilities
c = [pop.Cost];
avgc = mean(c);
if avgc ~= 0
c = c/avgc;
end
probs = exp(-beta*c);
% Initialize Offsprings Population
popc = repmat(empty_individual, nC/2, 2);
% Crossover
for k = 1:nC/2
% Select Parents
p1 = pop(RouletteWheelSelection(probs));
p2 = pop(RouletteWheelSelection(probs));
% Perform Crossover
[popc(k, 1).Position, popc(k, 2).Position] = ...
UniformCrossover(p1.Position, p2.Position, gamma);
end
% Convert popc to Single-Column Matrix
popc = popc(:);
% Mutation
for l = 1:nC
% Perform Mutation
popc(l).Position = Mutate(popc(l).Position, mu, sigma);
% Check for Variable Bounds
popc(l).Position = max(popc(l).Position, VarMin);
popc(l).Position = min(popc(l).Position, VarMax);
% Evaluation
popc(l).Cost = CostFunction(popc(l).Position);
% Compare Solution to Best Solution Ever Found
if popc(l).Cost < bestsol.Cost
bestsol = popc(l);
end
end
% Merge and Sort Populations
pop = SortPopulation([pop; popc]);
% Remove Extra Individuals
pop = pop(1:nPop);
% Update Best Cost of Iteration
bestcost(it) = bestsol.Cost;
% Display Itertion Information
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(bestcost(it))]);
end
% Results
out.pop = pop;
out.bestsol = bestsol;
out.bestcost = bestcost;
end
没有合适的资源?快使用搜索试试~ 我知道了~
实数编码遗传算法(Real-coded Genetic Algorithm)
共7个文件
m:7个
1 下载量 17 浏览量
2023-12-27
09:39:52
上传
评论
收藏 2KB RAR 举报
温馨提示
实数编码遗传算法(Real-coded Genetic Algorithm)是一种启发式搜索算法,用于解决优化问题。与二进制遗传算法不同,实数编码遗传算法适用于解决决策变量为实数的优化问题。以下是实数编码遗传算法的基本描述: 初始化种群:初始时,随机生成一定数量的个体(也称为染色体),每个个体由一组实数值(决策变量)构成,这些个体组成了种群。 确定适应度函数:根据具体的优化问题,定义一个适应度函数来评估每个个体的优劣程度。适应度函数通常基于问题的特性和优化目标来定义。 选择操作:使用选择算子(如轮盘赌选择、竞赛选择等),根据个体的适应度值选择父代个体用于繁殖下一代。 交叉操作:选定一定的交叉概率,对选出的父代个体进行交叉操作,生成新的个体作为下一代种群的一部分。在实数编码遗传算法中,可以使用一些常见的交叉方式,如单点交叉、多点交叉、均匀交叉等。 变异操作:选定一定的变异概率,对新生成的个体进行变异操作,以增加种群的多样性。在实数编码遗传算法中,可以使用一些常见的变异方式,如高斯变异、多项式变异等。 评估适应度:对新生成的个体,计算其适应度值。 替换操作:根据适应度值,选择
资源推荐
资源详情
资源评论
收起资源包目录
Real-Coded GA.rar (7个子文件)
Real-Coded GA
Sphere.m 51B
RouletteWheelSelection.m 124B
Mutate.m 159B
app1.m 561B
UniformCrossover.m 220B
SortPopulation.m 100B
RunGA.m 3KB
共 7 条
- 1
资源评论
嵌入式职场
- 粉丝: 4w+
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功