我有一个2 * 2的矩阵,称为orders:
0 0
0 0
创建者:
set orders matrix:from-row-list [[0 0] [0 0]]
,我想将其更改为3 * 2矩阵:
0 0
0 0
10 50
如何执行此操作? (我想您必须创建一个也称为订单的新矩阵来覆盖现有订单,但是我无法弄清楚语法。)
答案 0 :(得分:2)
最简单的方法可能是先将矩阵转换为列表,然后将新行添加到列表,然后再将其转换回矩阵。不是很优雅,但是下面的报告功能应该可以解决问题:
extensions [ matrix ]
to-report matrix-add-row [matrix row-added]
let temp-list matrix:to-row-list matrix ;; converts the matrix to a list
set temp-list lput row-added temp-list ;; the new row is added to the list
report matrix:from-row-list temp-list ;; converts the list back to a matrix
end
to test
let orders matrix:from-row-list [[0 0] [0 0]]
show orders
show matrix-add-row orders [ 10 50 ]
end
这将使您返回:
observer> test
observer: {{matrix: [ [ 0 0 ][ 0 0 ] ]}}
observer: {{matrix: [ [ 0 0 ][ 0 0 ][ 10 50 ] ]}}
当然,您必须确保矩阵和添加的行的尺寸匹配。
答案 1 :(得分:0)
以防万一这对别人有帮助,最后我要做的是使用一个新的代理品种“订单”代替矩阵,每个订单乌龟本质上就是矩阵中的一行。我告诉订单要和拥有它的海龟坐在同一块地上,这很容易,因为该模型中的海龟不会移动。优点是我可以使用矩阵所没有的各种处理可能性。当然,如果您这样做并且行的顺序很重要,则需要包括某种管理方式(类似于orders-own [index]
可以做到)。