根据项目的属性排序列表,然后选择第一个项目

问题描述 投票:0回答:1

我想对按属性递减排序的乌龟项目列表进行排序(从最高值到最低值),选择具有最高值的项目(已排序列表的第一项;它可能不是最近添加的,而是以前添加的)步骤),并将其添加到列表顶部。我在做

ask one-of agents [
      let sorted_list sort-on [values] items
]

对列表中的项目进行排序。 values[0,1]范围内定义。但是,我不知道如何选择具有最高值的项目并将其添加到列表的顶部。

此外,座席如何记住他已经从列表中选择了哪个项目,以便不再选择两次(如果再次选择座席?)]

希望您能帮我这个忙。

netlogo
1个回答
0
投票

要按值降序对一组项目进行排序,您需要一个减号,如下所示:

ask one-of agents [
      let sorted_list sort-on [(- values)] items
      let best-choice first sorted_list
]

或者您可以按升序排序,然后选择最后一项而不是第一项。

ask one-of agents [
      let sorted_list sort-on [ values] items
      let best-choice last sorted_list
]

我不明白您对“ top”的意思。

将其添加到列表的顶部。

[我想您可能是说有一个不同的项目列表,例如“ item-list”,您想将最佳选择推到该列表的front上。您可以这样做:

set item-list fput best-choice item-list

此外,代理人如何记住他已经选择了哪个项目从列表中选择两次以免再次选择相同的地址(如果代理是再次选择)?

只需给代理一个变量,最近选择,然后将其设置为选择后立即选择最佳。或者,如果您想回顾每个选择代理ever的项目,给他们变量all-my-choices,并且在那里保留一份清单。将其初始化为[]并选择最佳选择在您选择最佳选择时。

祝您好运-您和Val都在努力解决的问题似乎是一个非常复杂的问题!

© www.soinside.com 2019 - 2024. All rights reserved.