如何选择列表中具有最高价值的项目

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

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

为了更好地说明:列表的示例为(item 4, item3, item2, item1)。我想要的是:具有质量#的项目4,具有质量#的项目3,依此类推。创建列表项时,它们具有质量参数(由乌龟拥有):(quality random-float 1)。然后,我应该有以下内容:item4 0.2, item3 1, item2 0.2, item1 0.5。我要选择的是质量最高的项目,即质量等于item31

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

ask one-of turtles
     [
      ifelse empty? mylist
        [
          set quality random-float 1
          ...
        ]
     ]

我不知道这是在Netlogo中将属性分配给列表项的正确方法。

选择项目的步骤是:

  1. 选择一只乌龟
  2. 检查其列表不为空
  3. 选择列表中质量最高的项目

基于它们,我将编写如下:

let mylist [ item4 item3 item2 item1 item0 item6] 
let max-value max mylist 
let max-index position max mylist 

问题是我不确定我选择的是最高质量的物品,因为我不确定完全正确地为物品指定了质量。

希望您能帮助我。谢谢

netlogo
1个回答
0
投票

考虑到您有一个将所有项目属性(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

您可以使用以下用伪代码编写的算法,并将其转换为用于选择具有最高价值的项目的语言。

伪代码:

// Lets assume your array of items is called "arr_items"
// Lets also assume indexing start from 0
index_max  = 0 // first index
for i = 0 to length(arr_items) - 1: // loop though all items
    // if the current ith item have ItemValue bigger than index_max's items ItemValue 
    if arr_items[item_max].ItemValue > arr_items[i].ItemValue then 
        index_max = i // then change index_max to be i
return index_max  // return the index of the item with the highest value
© www.soinside.com 2019 - 2024. All rights reserved.