2014-07-18 4 views
0

유전자 알고리즘에서 일부 비트가 동일한 염색체의 다른 비트보다 중요성이있는 방식으로 염색체를 인코딩하는 것이 좋습니까? 예를 들어 (인덱스 % 2 == 0)/(2,4,6, ..) 비트는 (인덱스 % 2! = 0)/(1,3,5, ..) 비트보다 더 중요합니다. 예를 들어 비트 2의 범위가 [1,5] 인 경우 비트 3의 값을 고려하고 비트 2의 값이 0이면 비트 3의 값이 적용되지 않습니다.GA 중요도가 다른 비트가있는 염색체 표현

예를 들어 학교에서 제공하는 여러 과목이 있고 다음 학기에 어떤 과목을 제공해야하는지, 그리고 어떤 과목을 제공해서는 안되는지, 그리고 어떤 과목이 다음과 같은 그 과정을 가르치며 가르 칠 때 가르쳐야합니다. 따라서 문제를 나타내는 한 가지 방법은 길이 2n의 벡터를 사용하는 것입니다. 여기서 n은 코스 수입니다. 각 과정은 2- 튜플 (누가, 언제)으로 표시되며, 과정을 언제 가르쳐야하는지, 누가 가르쳐야하는지. i 번째 위치의 튜플은 i 번째 코스의 할당을 유지합니다. 이제 누가 교사용 ID가 가능한지, 가능한 값은 모든 가능한 시간에 0을 더할 수 있습니다. 0은 즉시 제공되지 않아야한다는 것을 의미합니다.

이제 동일한 적합성을 가진 두 개의 다른 튜플을 갖는 것이 좋습니까? 예를 들어, (3,0)과 (2,0)은 i 번째 코스의 값이 다르지만 같은 것을 의미합니다.이 코스는 누가 = 0인지에 대해 신경 쓰지 않기 때문에 제공되어서는 안됩니다. 또는 0을 추가하여 0을 가르치면 아무도 가르치지 않으며 튜플이라 함은 값이 (0,0) 인 경우에만 해당 코스를 제공해서는 안된다는 것을 의미합니다. 하지만 (0, v)와 (v, 0)은 어떨까요? 여기서 v> 0입니까? 이 과정을 제공해서는 안된다는 의미로 간주해야합니까? 이걸로 도움이 필요해.

답변

0

나는 당신의 질문을 완전히 이해하고 있는지 확신 할 수 없지만 최선을 다해 답변하려고 노력할 것입니다.

유전 알고리즘을 사용하여 문제를 해결할 때 인코딩 방법에 많은 유연성을 줄 수 있습니다. 일반적으로 피트니스 기능이나 알고리즘 구현 (즉 선택, 교차 및 돌연변이)에서 특정 비트가 더 두드러 질 수있는 두 곳이 있습니다. 피트니스 기능에서 특정 비트의 중요도를 변경하려면 먼저 진행하십시오. 이것은 당신이 원하는 행동을 장려하고 일반적으로 특정 비트가 더 두드러진 해결책으로 이끌 것입니다.

필자는 fitness 함수가 다른 비트보다 더 많은 비트 (또는 비트 그룹화)를 제공하는 많은 유전자 알고리즘을 사용해 왔습니다. 그것은 꽤 표준입니다.

유전자 알고리즘 구현에서 특정 비트를 다른 비트보다 두드러지게 만들 때 더욱주의해야합니다. 나는 특정 비트가 돌연변이 할 수 있도록 허용하거나 특정 지점에서만 교차 할 수있는 알고리즘으로 작업했습니다. 때로는 잘 작동 할 수도 있지만 (때로는 문제가있을 때 필요한 경우도 있음) 대부분의 경우 제대로 진행하기가 훨씬 어려워지고 조기 융합 같은 문제가 발생하기 쉽습니다.

편집 : 질문의 두 번째 부분에 대한 답변에서 , 여러분의 의견 : 제공되지해야 과정은 피트니스 기능에 아마 상황에 대처하기

가장 좋은 방법. 단순히 낮은 점수 (또는 점수 없음)를 부여하십시오. 동일한 것은 물론 염색체에서 복제됩니다. 이론 상으로는 이것이 그들이 당신 인구의 보편적 인 부분이되지 못하게해야합니다. 또는 세대마다 "도태 (culling)"양식을 적용 할 수 있습니다.이 양식은 인구에서 실용적이지 않은 염색체를 완전히 제거합니다. 선택에서 얻은 적합성 점수가없는 염색체를 완전히 제외하여 두 가지를 혼합 할 수 있습니다.

생존 할 수없는 염색체를 가지고있는 것처럼 들리는 문제에 관해서 당신이 말한 것은 아마 일반적 일 것입니다. 이것은 문제가 될 필요가 없습니다.피트니스 기능이 잘 인코딩되어 있고 올바른 선택 및 교차 방법을 사용하면 문제가되지 않습니다. 보다 실용적인 솔루션이 더 좋은 솔루션 일수록 좋은 솔루션을 개발할 수 있어야합니다.

어떤 경우에는 염색체의 특정 지점에서 크로스 오버를 중지하는 것이 좋습니다. 이것이 사실일지도 모르겠지만, 구현에 대해 더 많이 알지 못해도 말하기는 어렵습니다.

알고리즘을 구현하려는 방법에 대해 자세히 알지 못하면 더 자세한 답변을 드릴 수 없습니다. 나는 그 문제에 대해서 정말로 잘 알고 있지 않다. 내가 한 일이 아니야. 문제와 피트니스 기능을 인코딩하는 방법에 대한 자세한 내용을 추가하면 더 구체적인 조언을 드릴 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. GA에 대한 경험으로 내 질문의 두 번째 부분에 대한 제안을 할 수 있습니까? 만약 내가 (언제, 누가) 어떻게이 코드를 제공해서는 안되는지도? 가능한 모든 시간 +0을 취할 수있는 경우 즉각적인 의미는 아닙니다. 그리고 가능한 모든 교사 ID + 0을 취할 수있는 사람은 아무도 없습니다. 그렇다면 (0,0)은이 과정을 제공하지 말아야 함을 의미합니다. 하지만 예를 들어 (0,3) 또는 (9,0)을 얻는다면 이것들을 (0,0)과 동일하게 간주해야합니까? 이는 과정을 제공해서는 안된다는 것을 의미합니다. – Evan

+0

다른 인코딩은 GA 염색체가 가변 길이가되도록하는 것입니다. 하나의 염색체는 하나의 코스가 표현되는 (코스 ID, 누가 언제), 가능한 모든 시간을 가질 수 있는지 그리고 가능한 모든 교사 ID를 언제 취할 수 있는지에 따라 여러 코스로 구성됩니다. 그러나이 경우 하나의 염색체에 코스가 중복되면 어떻게 될까요? 어떻게 처리해야합니까? – Evan

+0

질문에 대한 답변을 더욱 자세히 시도했습니다. – OnABauer