function out = RunGA(problem, params)
% Problem
CostFunction = problem.CostFunction;
nVar = problem.nVar;
% Params
MaxIt = params.MaxIt;
nPop = params.nPop;
beta = params.beta;
pC = params.pC;
nC = round(pC*nPop/2)*2;
mu = params.mu;
% 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 = randi([0, 1], 1, nVar);
% 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] = ...
MyCrossover(p1.Position, p2.Position);
end
% Convert popc to Single-Column Matrix
popc = popc(:);
% Mutation
for l = 1:nC
% Perform Mutation
popc(l).Position = Mutate(popc(l).Position, mu);
% 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
没有合适的资源?快使用搜索试试~ 我知道了~
二进制遗传算法(Binary Genetic Algorithm)
共10个文件
m:10个
0 下载量 188 浏览量
2023-12-27
09:38:15
上传
评论
收藏 3KB RAR 举报
温馨提示
二进制遗传算法(Binary Genetic Algorithm)是一种启发式搜索算法,用于解决优化问题。与传统的遗传算法相比,二进制遗传算法适用于解决决策变量为二进制编码的优化问题。以下是二进制遗传算法的基本描述: 初始化种群:初始时,随机生成一定数量的二进制编码的个体(也称为染色体),这些个体组成了种群。 确定适应度函数:针对具体的优化问题,需要定义一个适应度函数来评价每个个体的优劣。适应度函数通常根据问题的特性来定义,例如在投资组合优化中可以是收益、风险和相关性等指标的组合。 选择操作:通过轮盘赌选择、竞赛选择等方式,根据个体的适应度值选择父代个体用于繁殖下一代。 交叉操作:选定一定的交叉概率,对选出的父代个体进行交叉操作,生成新的个体作为下一代种群的一部分。 变异操作:选定一定的变异概率,对新生成的个体进行变异操作,以增加种群的多样性。 评估适应度:对新生成的个体,计算其适应度值。 替换操作:根据适应度值,选择要保留的个体,一般采用保留精英个体或者使用某种选择策略来确定哪些个体将会成为下一代种群的成员。 迭代更新:通过重复进行选择、交叉、变异和替换操作,直至满足
资源推荐
资源详情
资源评论
收起资源包目录
Binary GA.rar (10个子文件)
Binary GA
RouletteWheelSelection.m 124B
Mutate.m 115B
MinOne.m 50B
DoublePointCrossover.m 265B
app1.m 409B
UniformCrossover.m 171B
SortPopulation.m 100B
SinglePointCrossover.m 187B
MyCrossover.m 344B
RunGA.m 3KB
共 10 条
- 1
资源评论
嵌入式职场
- 粉丝: 4w+
- 资源: 44
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功