Netlogo 如何选择列表中值最高的项目

Netlogo 如何选择列表中值最高的项目,netlogo,Netlogo,我在模型中考虑的每只海龟都有一个清单。我想从列表中选择一个项目,特别是具有最高质量的项目。质量是范围[0,1]内的参数。 我的问题是如何将参数分配给每个项目,然后选择参数值最高的项目 为了更好地解释:列表的一个例子是项目4、项目3、项目2、项目1。我想要的是:有质量的第4项,有质量的第3项,等等。 当我创建列表项时,它们有一个自己的质量参数:quality random float 1。 那么,我应该有这样的东西: 第40.2项、第31项、第20.2项、第10.5项。 我想选择质量最高的项目,即

我在模型中考虑的每只海龟都有一个清单。我想从列表中选择一个项目,特别是具有最高质量的项目。质量是范围[0,1]内的参数。 我的问题是如何将参数分配给每个项目,然后选择参数值最高的项目

为了更好地解释:列表的一个例子是项目4、项目3、项目2、项目1。我想要的是:有质量的第4项,有质量的第3项,等等。 当我创建列表项时,它们有一个自己的质量参数:quality random float 1。 那么,我应该有这样的东西: 第40.2项、第31项、第20.2项、第10.5项。 我想选择质量最高的项目,即质量等于1的项目3

为了分配参数,我考虑了:

ask one-of turtles
     [
      ifelse empty? mylist
        [
          set quality random-float 1
          ...
        ]
     ]
我不知道这是否是在Netlogo中将属性分配给列表项的正确方法

选择项目的步骤包括:

挑一只乌龟 检查其列表是否为空 选择列表中质量最高的项目 在此基础上,我将写如下:

let mylist [ item4 item3 item2 item1 item0 item6] 
let max-value max mylist 
let max-index position max mylist 
问题是,我不确定我是否选择了质量最高的项目,因为我不完全确定我是否正确地为项目分配了质量


我希望你能帮助我。考虑到您有一个将所有项目属性打包在一起的结构,ItemID、ItemName、…、ItemValue和一个项目数组,谢谢

Item(ItemID, ItemName, ..., ItemValue) // these are the proprieties of our object Item
Item arr_items[NB_ITEMS] //  the array (list) of items you have
您可以使用以下用伪代码编写的算法,并将其转换为用于拾取具有最高值的项的语言

伪代码:


考虑到您有一个将所有项目属性打包在一起的结构,即ItemID、ItemName、…、ItemValue和一个项目数组

Item(ItemID, ItemName, ..., ItemValue) // these are the proprieties of our object Item
Item arr_items[NB_ITEMS] //  the array (list) of items you have
您可以使用以下用伪代码编写的算法,并将其转换为用于拾取具有最高值的项的语言

伪代码:


对asc中的项目进行排序。按值的顺序排列,然后从排序列表中选择第一个元素。谢谢Omarito。但是,列表应该从最近的项目到最旧的项目排序。但是,该列表看起来像[item4 item3…],而不是Quality的值。如果不想对项目列表进行排序,请声明名为index_max的变量,并将其设置为0,指向第一个元素,然后从第二个元素开始循环列表,直到最后一个比较项目[i]的元素。值到项目[index_max]如果它更大,则更新索引_max以指向i。感谢您的建议。如何签入观察员,将哪个质量值分配给列表?现在,我的列表看起来像:[5 7 17 23…],其中5 7 17是添加的项目,而不是指定的质量您可以定义一个结构,让我们称之为Item,它将项目属性打包在一起itemID、itemName、…、itemValue,然后您可以将所有内容放在一个位置,以便您更轻松地访问itemValue。在asc中对项目进行排序。按值的顺序排列,然后从排序列表中选择第一个元素。谢谢Omarito。但是,列表应该从最近的项目到最旧的项目排序。但是,该列表看起来像[item4 item3…],而不是Quality的值。如果不想对项目列表进行排序,请声明名为index_max的变量,并将其设置为0,指向第一个元素,然后从第二个元素开始循环列表,直到最后一个比较项目[i]的元素。值到项目[index_max]如果它更大,则更新索引_max以指向i。感谢您的建议。如何签入观察员,将哪个质量值分配给列表?现在,我的列表看起来像:[5 7 17 23…],其中5 7 17是添加的项目,而不是指定的质量您可以定义一个结构,让我们称之为Item,它将项目属性打包在一起itemID、itemName、…、itemValue,然后您可以将所有内容放在一个位置,以便更轻松地访问itemValue。