2016-08-01 5 views
0

나는 배낭 문제와 비슷한 알고리즘을 만들려고합니다. 문제는 특정 중간 제품에 대한 요리법/BOM을 찾는 것입니다. 중간 제품에 대한 조리법에는 여러 가지 대안이 있습니다. 예를 들어, 제품 X는 원료 A + 75 %, 원료 A + 원료 B50 %의 원료 25 %로 구성 될 수 있습니다. 각 레서피에는 1 ~ 100 가지의 대체 방법이 있습니다.유전자 알고리즘 인코딩

내 질문은 다른 제조법 대안 (및/또는 인터넷에서 비슷한 문제를 찾을 수있는 곳)을 인코딩하는 가장 좋은 방법입니다. 나는 가치 인코딩을 사용해야한다고 생각한다. 즉, 레시피의 각 대안에 값을 할당해야한다. 합리적이고 다른 옵션이 있습니까?

감사 & 종류

답변

1

당신은 숫자 염색체의 문제를 인코딩 할 수 있습니다. 제품에 N 성분이있는 경우 숫자 염색체의 길이는 N입니다. X = {x1, x2, .., xN}. 염색체의 모든 숫자 xi는 i의 부분을 나타냅니다. 숫자가 하나가되도록 요구되는 것은 아닙니다. 예. X = {23,5,0} 의미는 성분 1이 23, 성분 2가 5, 성분이 3 인 것입니다.

이 인코딩을 사용하면 크로스 오버가 염색체를 무효화하지 않습니다.

+0

나는이 문제를 완전히 설명하지는 못했지만 당신은 여전히 ​​그것을 올바르게 이해하고 있습니다. 둘 다 감사합니다. –

1

당신은 그냥 내가 자손이 단지 생산 될 수 있음을 시사 operation.So 크로스 오버를 사용하기 어렵다

X={x1,x2,x3,...,x100} xi∈[0,1] ∑(xi)=1.0 

아래처럼 개인을 제시하는 100 dimentions 변수를 사용할 수 관하여 돌연변이 작전에 의해. 부모 개인의 'X'를 향해

돌연변이 작업 :

(1)randly choose two dimention 'xi' and 'xj' from 'X'; 

(2)p=rand(0,1); 

(3)xj=xj+(1-p)*xi; 

(4)xi=xi*p;