1. 소개
1 유전 알고리즘의 기본 이론
유전학은 유전이 각 세포에 캡슐화되고 유전자의 형태로 염색체에 포함 된 지시 유전 코드라고 믿고 있으며 각 유전자는 특별한 위치를 가지며 특별한 속성을 제어합니다. 각 유전자에 의해 생성 된 개체는 환경에 어느 정도 적응할 수 있습니다. 유전자 혼성화 및 돌연변이는 환경에 적응할 수있는 자손을 생산할 수 있으며, 적자 생존의 자연 선택을 통해 체력 가치가 높은 유전자 구조를 보존합니다.
유전 알고리즘은 "적자 생존"의 유전 이론을 바탕으로 최적화 문제의 해결책을 "염색체"의 "적자 생존"과정으로 표현합니다. 복제, 교차, 돌연변이 세대의 진화를 통해 "염색체"그룹, 우리는 마침내 얻습니다. 문제에 대한 최적의 또는 만족스러운 해결책을 얻기 위해 환경에 가장 잘 적응하는 개인입니다. 이것은 고도의 병렬, 무작위 및 적응 형 일반 최적화 알고리즘입니다.
유전 알고리즘의 일련의 장점으로 인해 최근 몇 년 동안 점점 더 중요해졌으며 운송 분야에서의 성공적인 적용을 포함하여 많은 분야에서 최적화 문제를 해결하는 데 널리 사용되었습니다.
2
유전 알고리즘의 특성 유전 알고리즘은 생물학적 자연 환경에서 유전 및 진화 과정을 시뮬레이션하여 형성된 자체 적응 형 글로벌 최적화 확률 검색 알고리즘입니다. 복잡한 시스템의 최적화 계산에 사용할 수있는 강력한 검색 알고리즘의 일종으로 다른 최적화 알고리즘에 비해 많은 특징이 있습니다.
열거, 휴리스틱 검색 알고리즘 : 세 가지 주요 전통 최적화 알고리즘이있다
(1). 열거 방법
열거 방법은 정확한 최적 해를 찾기 위해 실행 가능한 솔루션 집합의 모든 실행 가능한 솔루션을 열거합니다. 연속 함수의 경우이 방법은 먼저 이산화가 필요하므로 이산 처리로 인해 최적의 솔루션에 도달 할 수 없습니다. 또한 열거 공간이 상대적으로 크면이 알고리즘의 솔루션 효율성이 매우 낮고 시간이 많이 걸립니다.
2. 휴리스틱 알고리즘
휴리스틱 알고리즘은 최적 솔루션을 찾거나 최적 솔루션을 근사화하기 위해 실행 가능한 솔루션을 생성 할 수있는 휴리스틱 규칙을 찾습니다. 휴리스틱 알고리즘의 효율성은 상대적으로 높지만 해결해야 할 각 문제에 대해 고유 한 휴리스틱 규칙을 찾아야합니다.이 휴리스틱 규칙은 일반적으로 보편적이지 않으며 다른 문제에 적합하지 않습니다.
삼. 검색 알고리즘
검색 알고리즘은 실행 가능한 솔루션 집합의 하위 집합에서 검색 작업을 수행하여 최적의 솔루션을 찾거나 문제의 최적 솔루션을 근사합니다. 검색 알고리즘이 문제에 대한 최적의 솔루션을 얻을 수 있다고 보장 할 수는 없지만 일부 휴리스틱 지식을 적절하게 사용하면 근사 솔루션의 품질과 효율성간에 좋은 균형을 이룰 수 있습니다.
3 기본 유전 알고리즘의 워크 플로우
4 피트니스 기능
5 선택 연산자
선택 (복제라고도 함)은 그룹에서 활력이 강한 개인을 선택하여 새 그룹을 생성하는 프로세스입니다. 유전 알고리즘은 선택 연산자를 사용하여 그룹의 개인에 대한 적자 생존을 수행하고 각 개인의 적격성에 따라 선택합니다. 체력이 더 높은 개인은 다음 세대 인구로 상속 될 가능성이 더 높습니다. 그 반대의 경우도 마찬가지입니다. 이러한 방식으로 그룹 내 개인의 피트니스 가치는 최적의 솔루션에 지속적으로 접근 할 수 있습니다. 선택 연산자의 결정은 유전 알고리즘의 계산 결과에 직접적인 영향을 미칩니다.
다음은 일반적이고 일반적으로 사용되는 선택 연산자
입니다. 룰렛 선택
2. 무작위 경쟁 선택
3. 무작위 순회 선택
4. 선택 정렬
5. 리그 선택
6 크로스 오버 연산자
다음은 이진 코드 개인 또는 십진 코드 개인에 적합한 여러 크로스 오버 연산자를 소개합니다.
엘. 단일 포인트 크로스 오버
단일 포인트 크로스 오버 (1 포인트 크로스 오버)는 단순 크로스라고도하며 가장 일반적인 기본 크로스 연산자입니다. 이진 문자열의 무작위 선택 점으로 시작하여 쌍을 이루는 각 개인 쌍에 대해 설정된 교차 확률에 따라 교차점에서 두 개인의 부분 염색체를 교환하여 두 명의 새로운 개인을 생성합니다.
2.
2 점 크로스 오버 및 다점 크로스 오버 2 점 크로스 오버는 개별 코드 문자열에서 2 개의 크로스 오버 지점을 설정 한 다음 부분 유전자 교환을 의미합니다. 2 점 교차의 특정 프로세스는 다음과 같습니다.
(1) 서로 쌍을 이루는 두 개의 개별 코드 문자열에 2 개의 교차점이 즉시 설정됩니다.
(2) 두 세트의 교차점 사이에서 두 개체의 염색체 일부를 교환합니다.
삼. 균일 크로스 오버
균일 크로스 오버는 두 쌍의 개인의 각 유전자좌에서 유전자가 동일한 크로스 오버 확률로 교환되어 두 명의 새로운 개체를 형성하는 것을 의미합니다. 특정 작업은 마스크를 설정하여 새로운 개인의 각 유전자가 어떤 부모 개인에 의해 제공되는 방법을 결정하는 데 사용할 수 있습니다.
4. 산술 크로스 오버
산술 크로스 오버는 두 명의 새로운 개인을 생성하기 위해 두 개인의 선형 조합을 말합니다. 선형 결합 연산을 수행하기 위해 산술 교차의 연산 객체는 일반적으로 부동 소수점 숫자 코드로 표현되는 개체입니다.
7 돌연변이 연산자
유전 알고리즘에서 이른바 돌연변이 작업은 개별 염색체 암호화 문자열에있는 일부 유전자좌의 유전자 값을 유전자좌의 다른 대립 유전자로 대체하여 새로운 개체를 형성하는 것을 말합니다. 돌연변이는 새로운 개체를 생성하기위한 유전 알고리즘의 주요 방법 중 하나이며, 돌연변이 조작은 알고리즘 작동 중에 인구의 다양성을 유지하고 조기 성숙을 효과적으로 방지하며 유전자 알고리즘의 로컬 검색 능력을 향상시킬 수 있습니다.
유전자 알고리즘의 변이 연산자도 각기 다른 요구 사항에 따라 선택하고 설계해야하며 다음은 일반적으로 사용되는 몇 가지 변이 연산자입니다.
8 유전 알고리즘 개선
둘째, 소스 코드
%% GA
%% 清空环境变量
clc,clear,close all
warning off
% feature jit off
%% 遗传算法参数初始化
maxgen = 50; % 进化代数,即迭代次数
sizepop = 100; % 种群规模
pcross = [0.7]; % 交叉概率选择,0和1之间
pmutation = [0.1]; % 变异概率选择,0和1之间
%染色体设置
lenchrom=ones(1,3); % t1、t2、t3
bound=[38,59;26,37;33,44;]; % 数据范围
%---------------------------种群初始化------------------------------------
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness = []; %每一代种群的平均适应度
bestfitness = []; %每一代种群的最佳适应度
bestchrom = []; %适应度最好的染色体
%% 初始化种群
for i=1:sizepop
% 随机产生一个种群
individuals.chrom(i,:)=Code(lenchrom,bound); % 编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)
x=individuals.chrom(i,:);
% 计算适应度
individuals.fitness(i)=fun(x); % 染色体的适应度
end
%% 找最好的染色体
[bestfitness bestindex] = min(individuals.fitness);
bestchrom = individuals.chrom(bestindex,:); % 最好的染色体
% 记录每一代进化中最好的适应度和平均适应度
trace = [bestfitness];
%% 迭代求解最佳初始阀值和权值
% 进化开始
for i=1:maxgen
disp(['迭代次数: ',num2str(i)])
% 选择
individuals=Select(individuals,sizepop);
% 交叉
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); % 解码
individuals.fitness(j)=fun(x); % 染色体的适应度
end
%% 改进的GA
%% 清空环境变量
% clc,
clear % ,close all % 清除变量空间
warning off % 消除警告
% feature jit off % 加速代码执行
%% 遗传算法参数初始化
maxgen = 50; % 进化代数,即迭代次数
sizepop = 100; % 种群规模
pcross = [0.7]; % 交叉概率选择,0和1之间
pmutation = [0.01]; % 变异概率选择,0和1之间
delta = 0.1;
% 城市交通信号系统参数
C = 140;
L = 10;
load('data.mat') % 包含交通流量q以及饱和流量xij
q = q./3600; % 转化为秒s
xij = xij./3600; % 转化为秒s
%染色体设置
lenchrom=ones(1,3); % t1、t2、t3
bound=[38,59;26,37;33,44;]; % 数据范围
%---------------------------种群初始化------------------------------------
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness = []; %每一代种群的平均适应度
bestfitness = []; %每一代种群的最佳适应度
bestchrom = []; %适应度最好的染色体
%% 初始化种群
for i=1:sizepop
% 随机产生一个种群
individuals.chrom(i,:)=Code(lenchrom,bound); % 编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)
x=individuals.chrom(i,:);
% 计算适应度
individuals.fitness(i)=fun1(x); % 染色体的适应度
end
%% 找最好的染色体
[bestfitness bestindex] = min(individuals.fitness);
bestchrom = individuals.chrom(bestindex,:); % 最好的染色体
% 记录每一代进化中最好的适应度和平均适应度
trace = [bestfitness];
%% 迭代求解最佳初始阀值和权值
% 进化开始
for i=1:maxgen
disp(['迭代次数: ',num2str(i)])
% 选择
individuals=Select1(individuals,sizepop);
% 交叉
individuals.chrom=Cross1(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异
individuals.chrom=Mutation1(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); % 解码
individuals.fitness(j)=fun1(x); % 染色体的适应度
end
fmax = max(individuals.fitness); % 适应度最大值
fmin = min(individuals.fitness); % 适应度最小值
favg = mean(individuals.fitness); % 适应度平均值
individuals.fitness = (individuals.fitness + abs(fmin))./(fmax+fmin+delta); %适应度标定
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
세, 실행 결과
네, 비고
완전한 코드 또는 작성 추가 QQ1564658423 과거 검토
>>>>>>
matlab 입자 떼 최적화 회색 늑대 알고리즘을
기반으로 [최적화] [ Matlab 소스 코드 006 포함] [최적화] matlab 다목적 회색 늑대 최적화 알고리즘 MOGWO [Matlab 포함] 기반 소스 코드 문제 007]
[최적화 된 솔루션] matlab 입자 군집 알고리즘을 기반으로 한 충전소의 최적 레이아웃 [Matlab 소스 코드 012 포함]
[최적화 된 솔루션] matlab 유전 알고리즘을 기반으로 한 다중 여행 세일즈맨 문제 [Matlab 소스 코드 016 포함]
[최적화 됨 솔루션】 matlab 유전 알고리즘 기반 최단 경로 찾기 [Matlab 소스 코드 023 포함]
[최적화 솔루션] MATLAB 유전 및 시뮬레이션 어닐링 기반 3D 패킹 문제 [Matlab 소스 코드 031 포함]
[최적화 솔루션] 차량 출발 간격 최적화 해결 Matlab 유전 알고리즘 기반 문제 [Matlab 소스 코드 132 포함]
[최적화 솔루션] Krill swarm 알고리즘 [matlab 소스 코드 133 포함]
[최적화 솔루션] 미분 진화 알고리즘 [Matlab 소스 코드 134 포함]
[최적화 솔루션] 기반의 페널티 함수 방법 matlab 제약 최적화 [Matlab 소스 코드 163주기 포함]
[최적화 솔루션] 중유 열분해 모델을 해결하기 위해 matlab 개선 된 회색 늑대 알고리즘 기반 [Matlab 소스 코드 164주기 포함]
[최적화 솔루션] MATLAB ant colony 알고리즘 유통망 장애 기반 위치 [Matlab 소스 코드 165 기간 포함]
[섬 물질 보충 최적화 문제를 해결하기위한 matalb 유전 알고리즘 기반 최적화 솔루션 [Matlab 소스 코드 172 포함]
[최적화 솔루션] 코로나 바이러스 인구 면역 최적화 알고리즘 (CHIO) [Matlab 소스 코드 186 포함] ]
[최적화 솔루션] Golden Eagle 최적화 알고리즘 (GEO)) 【Matlab 소스 코드 187 기간 포함】
[다목적 최적화 솔루션] matlab 골든 이글 알고리즘 (MOGEO) 기반 다목적 최적화 솔루션 [Matlab 소스 코드 188 포함]
[최적화 솔루션] matlab GUI 인터페이스 기반 BP 신경망 최적화 솔루션 [Matlab 소스 코드 208]
[최적화 솔루션] MATLAB GUI 인터페이스 기반의 유전 알고리즘 최적화 솔루션 [Matlab 소스 코드 209 포함]
[최적화 솔루션] MATLAB 면역 알고리즘 기반 수치 근사 최적화 분석 [Matlab 소스 코드 211 포함]
[최적화 솔루션] MATLAB 휴리스틱 알고리즘 기반 기능 최적화 분석 [Matlab 소스 코드 212 기 포함]
[최적화 솔루션] matalb 개선 된 유전 알고리즘 (GA + IGA) 기반 도시 교통 신호 최적화 [Matlab 소스 코드 213 기 포함]