1

정수 변수의 배열을 최적화하기 위해 matlabs GA를 사용하지만 각 변수를 고유 한 값으로 지정합니다. 더 정확하게 말하면, 특정 비율 만 고유 값을 갖기를 원합니다.고유 한 정수만 사용하는 MATLAB GA (Genetic Algorithm)

예를 들어, 10 개의 변수에 대해 최적의 정수 값을 찾아야한다고 가정하지만, 요구 사항으로는 마지막 5가 주어진 범위 사이의 모든 고유 값을 갖도록 최적화해야합니다. 마지막 5 개의 변수가 고유하다는 것을 어떻게 확인할 수 있습니까?

반복 변수에 플래그를 지정하는 비선형 제약 조건을 사용하려고했지만 GA가이 반복을 실행하여 오류가 발생할 수 있음을 의미합니다. 내가 생각한 또 다른 방법은, 그러나 그것을하는 법을 모르겠다. 그것들이 unqiue임을 보장하는 커스텀 생성 함수를 만드는 것이겠습니까?

이 문제에 대한 도움을 주시면 매우 감사하겠습니다. 감사!

답변

0

아마도 피트니스 기능에서 데크에서 그림을 그리는 것과 유사한 설정을 사용 하시겠습니까?

즉, 대신 초, 첫 번째 변수에 1과 10 사이의 인덱스을 선택하도록 지시, 3 개 고유의 정수를 선택 1-9을 GA를 말하려고의, 범위 1-10에서 3 개 고유의 정수를 원 말한다 세 번째는 1-8입니다. 프로그래밍 방식으로 또는 익명 함수를 사용하여 1에서 10 사이의 고유 한 정수 배열을 피트니스 함수에 전달합니다. 첫 번째 변수는이 배열에서 정수를 선택하고 (인덱싱을 통해) 배열에서이 정수를 제거합니다. 두 번째 및 세 번째 변수를 사용하여 반복합니다. 이 방법으로 각 변수는 고유 한 값을 선택합니다 (예 : 카드 갑판에서 그림 그리기).

+0

멋진 간단한 해결책입니다. 감사. –