제약 조건(MATLAB 코드)이 있는 최적화 문제를 해결하기 위해 일반적으로 개선된 유전 알고리즘

목차

1. 개요

2 유전자 알고리즘

2.1 유전자 알고리즘의 기본 개념

2.2 유전자 알고리즘의 특징 

2.3 프로그램 블록도 

3 실행 결과

 4 제약 조건이 있는 최적화 문제를 해결하기 위해 일반적으로 개선된 유전 알고리즘(MATLAB 코드)


1. 개요

       GA(Genetic Algorithm) 는 자연 환경에서 유기체의 유전 및 진화 과정을 시뮬레이션하여 형성된 적응 형 전역 최적화 검색 알고리즘 입니다 . 미국의 JH 홀랜드 교수에 의해 처음 제안되었으며, 1960년대 자연 및 인공 적응 시스템에 대한 연구에서 비롯되었으며, 1970년대에 KADe Jong은 유전 알고리즘의 아이디어를 바탕으로 다수의 컴퓨터에 대한 순수 수치 함수 최적화 계산 실험80 1990년대에 유전자 알고리즘은 일련의 연구 작업을 기반으로 DJGoldberg에 의해 요약되었습니다. 유전 알고리즘은 자연의 생물학적 진화 메커니즘을 모방하여 개발된 무작위 전역 검색 및 최적화 방법입니다. 다윈의 진화론과 멘델의 유전이론을 차용한 것으로 본질적으로 병렬적이고 효율적인 전역 탐색 방법으로 탐색 과정에서 탐색 공간에 대한 지식을 자동으로 획득하고 축적할 수 있으며 탐색 과정을 적응적으로 제어하여 최적의 솔루션. 유전 알고리즘 작동: "적자 생존" 원칙을 사용하여 잠재적 솔루션 모집단에서 대략적인 최적 솔루션을 연속적으로 생성합니다. 각 세대마다 문제 영역에서 개인의 적합도 값과 자연 유전학에서 차용한 재구성 방법에 따라 개체 선택을 하고 새로운 근사해를 생성한다. 이 과정은 개체군에서 개체의 진화로 이어지며 결과적으로 새로운 개체는 원래 개체보다 환경에 더 잘 적응합니다.

       자연 선택 이론은 적자만이 살아남고 유기체가 생존을 원한다면 생존을 위해 싸워야 한다고 주장합니다. 생존을 위한 투쟁은 종내 투쟁, 종간 투쟁, 유기체와 환경 사이의 투쟁이라는 세 가지 측면을 포함한다. 생존을 위한 투쟁에서 유리한 돌연변이를 가진 개체는 생존하는 경향이 있으며 유리한 돌연변이를 자손에게 물려줄 기회가 더 많고 불리한 돌연변이를 가진 개체는 제거될 가능성이 높으며 자손을 생산할 기회는 훨씬 적습니다. 따라서 생존투쟁에서 승리하는 개인은 모두 환경에 대한 적응력이 강한 개인이다. 다윈은 생존을 위한 투쟁에서 적자생존과 부적합자의 제거 과정을 자연선택이라고 불렀다 . 다윈의 자연 선택 이론은 유전과 변이가 유기체의 진화를 결정하는 내부 요인임을 보여줍니다. 유전은 부모와 자식 사이의 형질의 유사성을 말하며, 변이는 부모와 자식 사이의 형질뿐만 아니라 자손의 개체 사이의 형질의 차이를 의미합니다. 유기체에서 유전과 변이는 밀접한 관련이 있습니다. 유기체의 유전적 특성은 돌연변이되는 경향이 있으며 돌연변이된 특성 중 일부는 유전될 수 있습니다. 유전은 유기체의 특성을 자손에게 지속적으로 전달하여 종의 특성을 유지할 수 있고 변이는 유기체의 특성을 변화시켜 새로운 환경에 적응하고 계속 발전할 수 있습니다. 생물의 모든 생활 활동에는 물질적 기반이 있으며 생물의 유전과 변이도 마찬가지입니다. 현대 세포학 및 유전학의 연구에 따르면 유전 물질의 주요 운반체는 염색체이며, 유전자는 유전 정보를 저장하는 유전 효과가 있는 단편으로 정확하게 복제될 수 있으며 돌연변이를 일으킬 수도 있습니다. 유기체 자체는 유전자 복제 및 교차를 통해 특성의 유전을 선택하고 제어합니다. 동시에 유전자 재조합, 유전자 변이, 염색체의 구조와 수의 변이를 통해 다양한 변이 현상이 발생한다. 유기체의 유전적 특성은 생물계의 종들이 상대적으로 안정적으로 유지되도록 하고, 유기체의 변이 특성은 개별 유기체가 새로운 특성을 생성하고 심지어 새로운 종을 형성하여 유기체의 진화와 발달을 촉진합니다. 유기체의 번식에서 유전자 교차 및 돌연변이의 가능성으로 인해 생물학적 특성의 지속적인 미미한 변화가 발생하여 외부 환경의 방향 선택에 대한 물질적 조건과 기반을 제공하고 생물학적 h2의 진화를 가능하게 합니다 .

2 유전자 알고리즘

2.1 유전자 알고리즘의 기본 개념

      유전알고리즘은 쉽게 말해서 모집단 탐색기술을 이용하여 모집단을 문제해결의 집합으로 표현하고, 현재 모집단 에 선택, 교배, 돌연변이 등의 일련의 유전적 연산을 적용하여 새로운 세대의 모집단을 생성하고 , 대략적인 최적 최적 상태를 포함하도록 모집단을 점진적으로 진화시킵니다. 유전알고리즘은 자연유전학과 컴퓨터과학의 상호침투에 의해 형성된 컴퓨팅 방법이기 때문에 유전알고리즘에서 자연진화와 관련된 몇 가지 기본 용어가 자주 사용되며, 해당 용어 간의 관계는 표 2.1과 같다.

유전학 용어

유전 알고리즘 용어

그룹

실행 가능한 솔루션 세트

개인

실행 가능한 솔루션

염색체

실행 가능한 솔루션의 인코딩

유전자

가능하게 디코딩 가능한 구성 요소

유전적 형태

유전자 코드

적응성

목적 함수 값

선택하다

작업 선택

십자가

교차 조작

돌연변이

돌연변이 연산

2.2 유전자 알고리즘의 특징 

유전 알고리즘은 자연 환경에서 유기체의 유전 및 진화 과정을 시뮬레이션하여 형성된 병렬적이고 효율적이며 전역적인 검색 방법이며 주로 다음과 같은 특징을 가지고 있습니다.

(1) 유전자 알고리즘은 연산 대상으로 결정 변수의 인코딩을 취합니다. 이러한 의사결정변수 부호화 방식은 생물학에서의 염색체와 유전자의 개념을 최적화 계산 과정에서 참고할 수 있도록 하고, 자연계의 유전학 및 유기체 진화의 메커니즘을 모방하고, 유전 연산자를 편리하게 적용할 수 있도록 한다. 특히 코드 개념만 있고 수치 개념이 없거나 수치 개념이 어려운 일부 최적화 문제의 경우 인코딩 처리 방법이 고유한 장점을 나타냅니다.

(2) 유전자 알고리즘은 목적함수 값을 직접 검색 정보로 사용한다 . 목적함수의 도함수 값과 같은 다른 보조 정보를 필요로 하지 않고 목적함수 값에서 변환된 적합함수 값만을 ​​사용하여 추가 탐색 방향 및 탐색 범위를 결정합니다. 실제 응용에서 많은 함수는 도출할 수 없거나 도출하기 어렵거나 아예 존재하지 않는 경우가 많은데, 이러한 목적함수의 최적화 및 조합적 최적화에는 유전알고리즘이 함수 도출의 문제를 회피할 수 있기 때문에 높은 우월성을 보인다. 장애.

(3) 유전자 알고리즘은 동시에 여러 검색 포인트의 검색 정보를 사용한다 . 최적해를 찾기 위한 유전자 알고리즘의 탐색 과정은 한 개인이 아닌 많은 개인으로 구성된 초기 집단에서 시작된다.

이 그룹에 대해 선택, 교차, 돌연변이 등의 작업을 수행하여 많은 그룹 정보를 포함하는 새로운 세대의 그룹을 생성합니다. 이 정보는 일부 불필요한 지점을 검색하는 것을 피할 수 있으며, 이는 유전자 알고리즘에 고유한 일종의 암묵적 병렬성인 더 많은 지점을 검색하는 것과 같습니다.

(4) Genetic Algorithm은 확률 기반 검색 기법입니다 . Genetic Algorithm은 적응형 확률 탐색 기술로 선택, 교배, 돌연변이 등의 연산이 모두 확률적으로 이루어지므로 탐색 과정의 유연성이 증가합니다. 이 확률적 특성은 모집단에서 적합도가 낮은 일부 개체를 생성하기도 하지만 진화 과정이 진행됨에 따라 새로운 개체군에서 항상 더 많은 우수한 개체가 생성됩니다. 일부 다른 알고리즘과 비교할 때 유전자 알고리즘의 견고성은 검색 효과에 대한 매개변수의 영향을 가능한 한 작게 만듭니다. (5) 유전알고리즘은 자기조직화, 자기적응, 자기학습의 특성을 갖는다. 유전알고리즘이 진화적 과정을 통해 정보를 획득하여 자신의 탐색을 체계화하면 적합도가 높은 개체일수록 생존 확률이 높아지고 환경에 더 적응할 수 있는 유전적 구조를 얻게 된다. 동시에 유전자 알고리즘은 확장성이 있고 다른 알고리즘과의 결합이 용이하여 양 당사자의 장점을 결합한 하이브리드 알고리즘을 생성합니다.

2.3 프로그램 블록도 

          

유전자 알고리즘의 동작 흐름은 그림 2.1과 같다. 구체적인 단계는 다음과 같습니다.

(1) 초기화 . 진화 대수 카운터 g=0으로 설정하고, 최대 진화 대수 G를 설정하고, 무작위로 NP 개체를 초기 모집단 P(0)으로 생성합니다.

(2) 개별 평가 . 모집단 P()에서 각 개인의 적합도를 계산합니다.

(3) 동작을 선택합니다 . 선발연산자는 모집단에 작용하여 개인의 적합도에 따라 일정한 규칙이나 방법에 따라 우수한 개체를 선별하여 다음세대 모집단에 물려준다.

(4) 교차 조작 . 모집단에 교차 연산자를 적용하고 특정 확률로 선택된 개인 쌍 간에 일부 염색체를 교환하여 새로운 개체를 생성합니다.

(5) 변이 연산 . 돌연변이 연산자를 모집단에 적용하고 선택된 개인에 대해 특정 확률로 하나 또는 일부 유전자 값을 다른 대립 유전자로 변경합니다. 모집단 P(i)가 선택, 교차 및 돌연변이 작업을 거친 후 차세대 모집단 P(t+1)을 얻습니다. 적합도 값을 계산하고 적합도 값에 따라 정렬하여 다음 유전 작업을 준비합니다.

(6) 종료조건 판단 : g<G이면 g=g+1이면 (2)단계로 진행하고, g>G이면 이 진화 과정에서 얻은 최대 적합도를 가진 개체를 최적해로 출력하고, 계산을 종료합니다.

코드의 일부:

function New_Population = EnviornmentalSelection(Population,Offspring,state)
% 本函数用来挑选新的种群

N = length(Population);
New_Population = Population;

%% 基本思路如下:为了确保种群的多样性,采用一对一替换机制。只有后代表现强于父代才会发生替换。
for i=1:N
    pcv = Population(i).con;
    ccv = Offspring(i).con;
    pf = Population(i).obj;
    cf = Offspring(i).obj;
    if (pcv == 0 && ccv == 0) % 采用 feasible rules 挑选新解
        if pf < cf
            New_Population(i) = Population(i);
        else
            New_Population(i) = Offspring(i);
        end
    else
        if pcv < ccv
            New_Population(i) = Population(i);
        else
            New_Population(i) = Offspring(i);
        end
    end
end

% %% 此处采用精英保留策略,每一次迭代之后,挑选指定数量的最佳解替换最劣解,其中数量于概率根据迭代进度计算
% objs = [New_Population.obj];
% cons = [New_Population.cons];
% [~,index] = sortrows([cons' objs']);
% n = ceil((1-state)*(N/100));
% if rand>state*state/2
%     New_Population(index(end-n+1:end)) = New_Population(index(1:n));
% end

3 실행 결과

 4 제약 조건이 있는 최적화 문제를 해결하기 위해 일반적으로 개선된 유전 알고리즘(MATLAB 코드)

블로그 홈페이지: @果格格果树果

추천

출처blog.csdn.net/weixin_61181717/article/details/128097603