꿀벌이 거북이 대리인이고 벌꿀이 패치 특정 변수 인 '벌꿀'모델을 만들고 있습니다. 제 모델에서, 각 패치에는 특정 분포에 따라 1-100 사이의 'honey-here'값이 할당됩니다.거북이 계산시 성능 문제
꿀벌은 꿀이 1 인 꽃에서 꿀을 수집 할 수있는 것으로 시작하여 그 대신 벌꿀 1 단위를받습니다. 벌이 벌꿀 = 2 인 꽃을 '타켓팅'하기 전에 벌꿀 = 1 인 총 꽃의 X %를 점유해야합니다 (예 : 꽃가루에 벌이 있음). 예를 들어 벌이 80 % 즉, 변수 꿀 = 1 인 총 10 개의 꽃이있는 경우 꿀벌은 꿀 2 개가있는 꽃을보고/타겟팅하기 전에 해당 꽃 8 개를 차지해야합니다. 각 꿀벌이 개별적으로 행동하기 때문에 % 점유율 값은 변화.
점유율 계산에 성능 문제가 있습니다. 이상적으로 계산은 거북 프로 시저 내에서 업데이트되므로 루프 내의 각 거북이에 적용해야합니다. 저는 여기에 현재 각 꿀벌 행동을 허용하기 전에 현재 %의 점유율을 설정하는 데 필요한 변수의 값 찾아야 내용은 다음과 같습니다 확인하기 위해 확인 후,
ask bees
[
;; set up variable based on ratio of number of turtles occupying target patch size against total number target patch size
;; note -- don't do this in one step to avoid divide by 0
let patch-count-current (count patches with [honey-here = bee-honey-target-size])
;; don't want number of bees, want number of unique patches
let patch-target-occupy count patches with [ (count bees-here > 0) and (honey-here = bee-honey-target-size) ]
...
을 나중에 코드를 패치를-카운트 현재 ISN을 't 0, patch-target-occupy/patch-count-current를 통해 % 점유율을 찾았습니다.
이것은 내 프로세서 성능에서 매우 비싼 히트입니다. 특히 내 모델에서 기하 급수적 인 꿀벌의 수가 늘어남에 따라.
루프의 각 반복마다 많은 프로세서가 필요하지 않은 더 좋은 방법이 있습니까?
감사합니다.
-dp
이해하고 동의합니다. 내 시뮬레이션에서, 모든 거북이를 업데이트하기 위해 거북이 과정에서이 계산을 실행할 수있는 방법이 있는지 궁금하고 생각했습니다. 그러나 현재 나는이 계산을 그룹 프로 시저로 옮기기 위해 위의 방법과 비슷한 방법을 사용했습니다. 내 프로세서가 처리 할 수있는 유일한 방법입니다. 감사! – thedavidprice