List 如何在Netlogo中获得列表的所有可能组合(列表中没有值重复&使用Netlogo)

List 如何在Netlogo中获得列表的所有可能组合(列表中没有值重复&使用Netlogo),list,combinations,permutation,netlogo,List,Combinations,Permutation,Netlogo,我正在努力编写一个Netlogo程序,它可以让我从列表中找到所有组合。下面是我想模拟的一个例子 我有五个代理的列表:[agent1,agent2,agent3,agent4,agent5]我想知道如何获得所有可能的组合,并且这些组合必须具有固定的大小(例如,如果大小=3,那么组合场景应该是[agent1,agent2,agent3],[agent1,agent2,agent4],[agent1,agent2,agent5],[agent1,agent3,agent4] 通过这种方式,我将能够从每

我正在努力编写一个Netlogo程序,它可以让我从列表中找到所有组合。下面是我想模拟的一个例子

我有五个代理的列表:[agent1,agent2,agent3,agent4,agent5]我想知道如何获得所有可能的组合,并且这些组合必须具有固定的大小(例如,如果大小=3,那么组合场景应该是[agent1,agent2,agent3],[agent1,agent2,agent4],[agent1,agent2,agent5],[agent1,agent3,agent4]

通过这种方式,我将能够从每个独特的组合中计算出成本效益,其中3个代理可以相互作用以确定成本,并且我将能够找到最佳组合(即,能够共同工作以提供最低成本的3个最佳代理)

我需要一个大规模生产的方式在Netlogo建模环境中做这项工作,以便以后我可以更改参数,如大小和代理总数。感谢代码演示

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