我正在努力编写一个Netlogo程序,可以让我从列表中找到所有组合。以下是我想要建模的一个例子。
我有一个五个代理列表:[agent1,agent2,agent3,agent4,agent5]我想知道如何获得所有可能的组合,组合必须是固定大小(例如,如果size = 3,那么组合场景应该是[agent1,agent2,agent3],[agent1,agent2,agent4],[agent1,agent2,agent5],[agent1,agent3,agent4],..........
以这种方式,我将能够从每个独特的组合中计算出成本绩效,其中3个代理可以相互交互以确定成本,并且我将能够找到最佳组合(即最好的3个代理商)谁可以共同努力以实现最低成本。)我需要一种批量生产方式在Netlogo建模环境中完成这项工作,以便稍后我可以更改参数,例如大小和代理总数。感谢代码演示!
答案 0 :(得分:2)
to-report comb [_m _s]
if (_m = 0) [ report [[]] ]
if (_s = []) [ report [] ]
let _rest butfirst _s
let _lista map [? -> fput item 0 _s ?] comb (_m - 1) _rest
let _listb comb _m _rest
report (sentence _lista _listb)
end