首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在大空间范围内加速最小代价路径模型

如何在大空间范围内加速最小代价路径模型
EN

Stack Overflow用户
提问于 2014-04-22 01:17:11
回答 1查看 209关注 0票数 2

How can I increase speed up simulation of my least-cost path model之后,我试图找到一种方法来加速我的在大空间尺度上运行的最低成本路径模型。我的景观的范围是100 an²(1000个补丁x 1000个补丁,其中1个补丁=1个像素)。

目前,我的代码似乎可以工作,但运行速度非常慢:我的代码需要几个小时才能绘制一条成本最低的路径。问题是,我的模型在100天内按照两分钟的离散时间步长进化,而我的场景中有1000只狼。对于每一只狼,在每个时间步,我的模型必须在有一只狼的多边形(由几个补丁组成)和位于狼周围3公里半径内的所有多边形之间建立最低成本的路径。

我使用了新版本的NW-extension,我试图通过保存已经计算的所有成本来优化我的模型,以避免重新绘制成本最低的路径。不幸的是,我的代码仍然太慢,我不知道如何加速它。下面是我的代码,用于计算一条成本最低的路径的成本(如果需要,我可以向某人提供更多的代码)

代码语言:javascript
复制
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

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-04-22 11:34:11

我目前正在开发一个新版本的NW-extension,它会更快。不幸的是,对于加权路径,它在NetLogo 5.0.6发布之前是不可用的。

在此之前,您可以编写自己的最低成本路径代码。A*将非常适合您的情况。实现起来肯定有些棘手,但却是可行的。如果我有时间,我会把它拍下来贴在这里。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23202199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档