NETLOGO:有没有更好的方法从CSV? 我一直在Netlogo建立一个ABM,该ABM接收了一堆GIS数据(例如,郊区中心,靠近CBD,购物中心,道路等),并计算了四个代理类别的实用程序(DP = Deplive ...

问题描述 投票:0回答:1
CSV扩展文档


ITSrepo

以获取我的轴承,但我发现最有用的是

我已经为负载重量功能编写了以下代码,但来自我的Python背景,看起来非常效率低下。有什么建议吗? extensions [ csv ] globals [ data dp-weight li-weight mi-weight hi-weight dpu-suburb dpu-neigbhour dpu-bu dpu-cbd dpu-mall dpu-markets dpu-road dpu-density dpu-schools dpu-attractive dpu-health dpu-random dpu-water liu-suburb liu-neigbhour liu-bu liu-cbd liu-mall liu-markets liu-road liu-density liu-schools liu-attractive liu-health liu-random liu-water miu-suburb miu-neigbhour miu-bu miu-cbd miu-mall miu-markets miu-road miu-density miu-schools miu-attractive miu-health miu-random miu-water hiu-suburb hiu-neigbhour hiu-bu hiu-cbd hiu-mall hiu-markets hiu-road hiu-density hiu-schools hiu-attractive hiu-health hiu-random hiu-water dp-w-list li-w-list mi-w-list hi-w-list ] to setup clear-all file-close-all ;; Close any files open from last run file-open "../data/interim/weights.csv" ;; a csv formated with a header row and column and integers for the weights set [dp-w-list li-w-list mi-w-list hi-w-list] [[][][][]] reset-ticks end to go load-weights show hiu-water tick end to load-weights ;; code based on https://github.com/NetLogo/models/blob/master/Code%20Examples/Extensions%20Examples/csv/CSV%20Example.nlogo file-close-all ;; Close any open files file-open "../data/interim/weights.csv" set data csv:from-file "../data/interim/weights.csv" set dp-weight item 1 data ;; I skip the first row as it contains only the headers set li-weight item 2 data set mi-weight item 3 data set hi-weight item 4 data let i 0 repeat length dp-weight [ let w item i dp-weight if i > 0 [set dp-w-list lput w dp-w-list] ;; I skip the first column, as it contains the line header (e.g., 'dp') set i i + 1 ] set i 0 repeat length li-weight [ let w item i li-weight if i > 0 [set li-w-list lput w li-w-list] set i i + 1 ] set i 0 repeat length mi-weight [ let w item i mi-weight if i > 0 [set mi-w-list lput w mi-w-list] set i i + 1 ] set i 0 repeat length hi-weight [ let w item i hi-weight if i > 0 [set hi-w-list lput w hi-w-list] set i i + 1 ] set [ dpu-suburb dpu-neigbhour dpu-bu dpu-cbd dpu-mall dpu-markets dpu-road dpu-density dpu-schools dpu-attractive dpu-health dpu-random dpu-water ] dp-w-list set [ liu-suburb liu-neigbhour liu-bu liu-cbd liu-mall liu-markets liu-road liu-density liu-schools liu-attractive liu-health liu-random liu-water ] li-w-list set [ miu-suburb miu-neigbhour miu-bu miu-cbd miu-mall miu-markets miu-road miu-density miu-schools miu-attractive miu-health miu-random miu-water ] mi-w-list set [ hiu-suburb hiu-neigbhour hiu-bu hiu-cbd hiu-mall hiu-markets hiu-road hiu-density hiu-schools hiu-attractive hiu-health hiu-random hiu-water ] hi-w-list file-close ;; Close any open files end 您可以使用Netlogo的列表操纵,并使您的代码更加简洁,效率。 我们可以将权重列表直接分配给全局变量列表。 并使用foreach迭代CSV数据的行和列,消除了对手动索引的需求和重复的foreach
loops。

repeat
python csv netlogo
1个回答
0
投票
是列表的列表,其中每个内部列表包含对应于特定代理类的全局变量。 外部通过

global-lists

(来自CSV的行)和
foreach
同时迭代。 thr Inner
weight-lists
循环通过每个
global-lists
及其相应的
foreach

变量迭代,使用
weight
.

。将权重分配给全局变量。

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.