2010-07-05 2 views
0

유전자 알고리즘을 사용하여 배낭 문제를 연구하고 있습니다. 하지만 몇 가지 어려움이 있습니다 ...VB.NET - Genetic Algotithm - 배낭 문제

먼저 사용자가 텍스트 문서에 저장된 데이터 세트를 생성합니다. 거기에서 나는 프로그램으로 데이터를 읽었다.

피트니스 값을 계산하고, 부모를 선택하고, 자식을 생성하고, 자식을 변형시키는 프로그램을 만드는 것이 좋습니다. 그러나 그것은 내가 인구가 적을 때만 작동합니다. 저의 인구가 적을 때마다 저의 프로그램은 계속 진화 할 것입니다. 그러나 인구가 많을 때는 일관성이 없습니다.

예 : 약 10-200 명의 인구가 있으면 유전 알고리즘이 완벽하게 실행됩니다. 그러나 더 높은 인구 (약 300 이상)에 도달하면 실행을 클릭하면 아무 것도 발생하지 않습니다. 그런 다음 프로그램을 다시 시작하고 똑같은 데이터 세트를 사용하면 프로그램이 성공적으로 실행됩니다.

코드의 어느 부분에서 문제가 발생하는지 잘 모릅니다. 예제 코드가 필요한 경우, 어떤 코드 부분을 원하는지 (부모 선택,로드 데이터 세트 등) 알려주십시오.

고마워!

+0

귀하의 코드를 보는 것이 도움이 될 것이라고 생각하지 않습니다. 우선 흥미로운 시스템 변수를보고하기 위해 print-debug 문을 추가하거나 코드가 문제가되는 인구 규모에 도달하면 어떤 행동을하는지 보도록하십시오. – FrustratedWithFormsDesigner

답변

2

3 가지 이유가있을 것 같습니다.

1) 코드

이 제거 비교적 간단합니다 버그. 프로그램의 특정 부분이 올바르게 실행되는지 확인하는 몇 가지 테스트를 작성해보십시오 (예 : 상위 선택 등). 한 장의 종이에 대해 알아낼 수있는 몇 가지 작은 예제에 대해 테스트 해보십시오. 메모리 문제 중

2) - 한 btreat

3 언급)이 싸움을하는 것이 더 어려울 것이다

일부 알고리즘 특질. 나는 단지 추측이므로 잘못되었을 수도 있지만, 문제의 크기가 임계 값을 초과하면 크게 행동을 바꾸는 알고리즘을 보았습니다. 가능성은 없지만 불가능하지는 않습니다. 여기서 인구 밀도가 천천히 증가하면 실행 시간이 갑자기 바뀔 수 있음을 알 수 있습니다.

1

아마 더 높은 인구로 제약 된 프로그램 메모리일까요?

+0

그게 내가 생각한 것입니다. 그러나 무엇을 확신 할 수 없습니다. 너무 많은 기억을 차지하고 있습니다. – Johnrad

+0

만약 당신이 메모리 문제를 겪고 있다면 메모리 부족 오류가 발생하거나 시스템이 대량으로 실행되지만 훨씬 느려질 것입니다 (메모리 부족 예외가 발생할 때까지). – FrustratedWithFormsDesigner