我是Netlogo的新成員,我遇到了一些問題。如何編碼值和列表之間的和?
當我檢查代碼一切正常,但是當我運行模擬時發生錯誤。
這裏是我的代碼:
breed [ factories factory ]
breed [ customers customer ]
breed [ warehouses warehouse ]
Factories-own [
orders
stock_f
kilograms-of-products
]
Customers-own [
stock_c
demand
kilograms-of-products
]
Warehouses-own [
orders
stock_w
kilograms-of-product
]
to setup
clear-all
reset-ticks
ask patches [ set pcolor white]
create-Factories 1 [
setxy -12 -5
set size 3
set color red
set label (word "Factory" [who] of self " ")
set shape "house"
set stock_f 77482.1
]
create-warehouses 1 [
setxy 0 0
set size 3
set color blue
set label (word "warehouse" [who] of self " ")
set shape "house"
set stock_w 108
set orders [ 86.34 70.43 5000.89 148.22 54.39 3055.76 0.66 1.69 7.2 4553.56 40.6 116.53 6130.37 5.18 2698.57 79.55 2405.85 41.3 11.41 36.5 7877.06 18.93 14.99 4041.12 10.3 728.16 59.68 4703.43 50.93 93.16 31.5 3689.66 21.6 9.8 83.48 1.18 121.02 5441.62 796.53 162.29 6874.33 97.29 2749.3 1.48 47.13 5056.77 2163.82 1406.06 12.6 4753.59 257.46 1374.46 186.37 ]
]
create-customers 1 [
setxy random 30 - 0 random 30 - 15
set size 1
set color green
set shape "box"
set stock_c 0
set demand [ 13.8 29.9 58.3 18.5 0.8 6.6 12.1 14.1 8.7 56 3.3 0.1 9.5 11.7 0.2 6.7 10.5 16 3.6 94.1 5.2 69.1 7.2 29 15.8 7.7 20.2 21 39.8 83.2 10.6 48.6 25.1 13.1 66.1 16.7 85 27.5 7.5 31.5 9.4 16 2.6 5.8 5.5 134.8 108.7 159 49 0.4 90.6 25.2 2.6 1.7 56.1 49.5 21.4 10.6 3.9 1.4 35.7 10.7 62.9 49.5 ]
]
ask customers [ create-link-with turtle 1 ]
ask turtle 1 [ create-link-with turtle 0 ]
end
to go
send-products
buy-products
if count customers with [ not empty? demand] = 0
[stop]
tick
end
to send-products
ask turtles with [ breed = factories ] [
let i 0
while [ i < length(orders)] [
ask turtle (item i orders) [
set stock_f (stock_f - item i orders)
set i i + 1]
set i 0
while [i < length(orders)]
[if last (item i orders) = ticks
[set orders replace-item i orders [0 0]]
set i i + 1]]
let list1 []
set list1 lput (stock_f - item i orders) list1
show list1
]
ask turtles with [breed = warehouses] [
let x 0
while [ x < length(orders)] [
ask turtle (item x orders) [
set stock_w (stock_w + item x orders)
set x x + 1]
set x 0
while [x < length(orders)]
[if last (item x orders) = ticks
[set orders replace-item x orders [0 0]]
set x x + 1]]
let list2 []
set list2 lput (stock_w + item x orders) list2
show list2
]
end
to buy-products
;Customers go shopping according to their demand and their stock
ask turtles with [ breed = customers ] [
let a 0
while [ a < length(demand)] [
ask turtle (item a demand) [
set stock_c (stock_c + item a demand)
set stock_w (stock_w - item a demand)
set a a + 1]
set a 0
while [ a < length(demand)]
[if last (item a demand) = ticks
[ set demand replace-item a demand [0 0]]
set a a + 1]]
let list3 []
set list3 lput (stock_c + item a demand) list3
show list3
let list4 []
set list4 lput (stock_w - item a demand) list4
show list4
]
end
爲什麼length(orders)
也不行?這是一個問題,因爲烏龜自己的[訂單]?或者我必須將訂單定義爲清單?我怎麼做? 如果我有不同訂單的n-costumers,代碼是否可以工作?
我想在我的代碼中做的是創建一個產品流程,從工廠到倉庫,最後到客戶。
請幫幫我。
請看看的要求準則有關設置[最小的,完整的,和可覈查的示例](HTTPS提示:// stackoverflow.com/help/mcve)。避免使用圖片來顯示代碼(或錯誤 - 只需粘貼);相反,粘貼你的代碼並使用「代碼示例」按鈕。你可以在你設置'訂單'的地方加入代碼嗎?看起來您在將訂單定義爲列表之前調用了「send-products」,但這只是猜測而沒有看到其他代碼。 –