2014-04-21 2 views
2

How can I increase speed up simulation of my least-cost path model에서부터 나는 큰 공간 규모에서 실행되는 최소 비용 경로 모델의 속도를 높이는 방법을 찾으려고합니다. 내 풍경은 100km² (1000 패치 × 1 패치, 1 패치 = 1 픽셀) 정도입니다.큰 공간 범위에서 최소 비용 경로 모델을 향상시키는 방법

당분간 내 코드는 작동하는 것처럼 보이지만 매우 느리게 실행됩니다. 최소 코드 경로를 그리려면 몇 시간이 걸립니다. 문제는 내 모델이 100 일 동안 2 분의 이산 시간 간격에 따라 전개되고 내 풍경에 1000 마리의 늑대가 있다는 것입니다. 각 늑대와 각 시간 단계에서, 내 모델은 늑대가있는 다각형과 늑대 주변 3km에있는 모든 다각형 사이에 최소 비용의 경로를 만들어야합니다.

새로운 버전의 NW-extension을 사용했으며 최소 비용 경로를 다시 그리지 않도록 이미 계산 된 모든 비용을 저장하여 모델을 최적화하려고했습니다. 불행히도 내 코드가 너무 느리고 속도를 높일 방법을 모르겠습니다. 여기에 하나의 최소 비용 경로의 비용을 계산하려면 코드가 당신의 도움을

to-report path-cost-between-polygons [ID-polygon-1 ID-polygon-2] 
let path-cost -1 

;; Define polygon edges 
ask patches with [ID-polygon != ID-polygon-1] [ 
ask neighbors with [ID-polygon = ID-polygon-1] [ 
ask nodes-here [ 
set color red ] ] ] 

ask patches with [ID-polygon != ID-polygon-2] [ 
ask neighbors with [ID-polygon = ID-polygon-2] [ 
ask nodes-here [ 
set color red ] ] ] 

;; Calculate path cost 
foreach sort ((nodes-on patches with [ID-polygon = ID-polygon-1]) with [color = red]) [ 
let node-on-polygon-1 ? 
foreach sort ((nodes-on patches with [ID-polygon = ID-polygon-2]) with [color = red]) [ 
let node-on-polygon-2 ? 

ask node-on-polygon-1 [ 
    let cost nw:weighted-distance-to node-on-polygon-2 "link-cost" 
    if path-cost = -1 or cost < path-cost [ 
    set path-cost cost ] ] ] ] 

;; Save path cost between polygons 
set list-ID-polygons lput (list ID-polygon-1 ID-polygon-2) list-ID-polygons 
set list-path-costs-between-polygons lput path-cost list-path-costs-between-polygons 

ask nodes with [color = red] [ set color white] 

report path-cost 
end 

감사합니다 아주 많이 (필요하다면, 내가 누군가에게 더 많은 코드를 제공 할 수 있습니다).

답변

2

저는 현재 훨씬 더 빨라질 NW 확장의 새로운 버전을 개발 중입니다. 안타깝게도 가중 경로의 경우 NetLogo 5.0.6이 출시 될 때까지는 사용할 수 없습니다.

그 전까지는 최소 비용의 경로 코드를 코딩 할 수있었습니다. A*은 귀하의 상황에 완벽 할 것입니다. 구현은 다소 까다 롭지만 실행 가능할 것입니다. 시간이 있다면, 나는 그것을 총에주고 여기에 게시 할 것입니다.

+0

Bryan 대단히 감사합니다. 몇 달 동안이 소프트웨어로 작업 할 때 Netlogo와 같은 알고리즘을 코딩 할 수 있을지 모르겠습니다. 어떤 경우든지, 귀하의 도움은 저에게 매우 귀중 할 것입니다. – Marine

관련 문제