2

저는 Matlab에 병렬 유전 알고리즘, 특히 이중 종 유전 알고리즘 (DSGA)을 쓰고 있습니다. (더 많은 정보는 this paper here에서 찾을 수 있습니다.) 일부 병렬 처리에 문제가 있습니다. 코드.Matlab에서 유전 알고리즘의 병렬화

저는 이제 물리학 및 수학 전공입니다. 저는 연구 프로젝트에 도움이되는 프로그래밍을 시작하고 있습니다. Matlab에서 다소 병렬화 된 피트니스 기능을 사용하여 직렬 유전자 알고리즘을 이미 구현했지만,이 이중 종 유전 알고리즘을 구현하는 데 관심이 있습니다.

좋아요. 질문 : 다른 MATLAB 작업자에서 다른 작업을 수행하는 루프에 대해 2 가지 다른 방법을 사용할 수 있습니까? 2 for 루프는 다른 데이터와 다른 코드를 갖지만 동시에 실행해야합니다. 나는 그것을 위해 parfor 루프를 사용할 수 있다고 생각하지 않는다. 병렬 도구 상자에 대한 설명서를 읽은 후 단일 프로그램 다중 데이터 (spmd) 기능을 사용하는 것처럼 보일 수 있습니다? 나는 그것의 최선의 선택이 정말로 전혀 효과가 있는지 정말로 확신하지 못합니다.

모든 조언을 주시면 감사하겠습니다.

감사합니다.

답변

0

첫 번째 단계는 함수에서 두 루프를 모두 래핑하는 것이므로 코드를 단순화합니다. 그런 다음 병렬로 평가하려는 모든 함수가 포함 된 셀을 만듭니다. 구문을 이해하지 못하는 경우 "함수 핸들"에 대한 설명서를 확인하십시오. 나는 여기에 몇 가지 더미 기능을 사용

jobs={@()exp(1),@()exp(2),@()sin(3)} 

지금 당신은 쉽게 병렬로 작업을 평가할 수 :

result=cell(size(jobs)) 
parfor ix=1:numel(jobs),result{ix}=jobs{ix}(), end 

이 다른 솔루션이 있지만, 같은 코드가 PC에서 실행 할 수 있기 때문에 나는이 구현을 선호 병렬 계산없이 (parfor는 interpreded).

+0

내가 정말로하고 싶은 것은 다른 인구를 평가하기 위해 GA 인구 중 하나와 다른 프로세서 또는 근로자를 평가하기 위해 프로세서 나 작업자를 할당하는 것입니다. –