我有我要在模型中考虑的每只海龟的清单。我想选择一个列表项目,特别是质量最高的项目。质量是[0,1]范围内的参数。我的问题涉及如何为每个项目分配参数,然后选择参数值最高的项目。
为了更好地说明:列表的示例为(item 4, item3, item2, item1)
。我想要的是:具有质量#的项目4,具有质量#的项目3,依此类推。创建列表项时,它们具有质量参数(由乌龟拥有):(quality random-float 1)
。然后,我应该有以下内容:item4 0.2, item3 1, item2 0.2, item1 0.5
。我要选择的是质量最高的项目,即质量等于item3
的1
。
为了分配参数,我考虑了:
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
您可以使用以下用伪代码编写的算法,并将其转换为用于选择具有最高价值的项目的语言。
伪代码:
// 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