从多维数组 (ndarray) 返回最大值

弗拉兹

所以我有以下代码:

import numpy
import nash

pool_of_games = [[[0,2,1,3,3,2,1,0],"PdPd","PrisonerDilemma"], 
[[0,3,1,2,2,3,1,0],"ShSh","StagHunt"],
[[1,2,3,0,3,2,1,0],"ChCh","Chicken"],
[[2,1,0,3,3,1,0,2],"BaBa","Battle"]]

def RandomStrategySelection343(pool_of_games):   
    gci = 0   
    fitness_list = []
    nash_pool = [] 
    for game in range (0, len(pool_of_games)):    
        pr1 = pool_of_games[game][0][:2]   
        pr2 = pool_of_games[game][0][2:4]
        pc1 = pool_of_games[game][0][4:6]
        pc2 = pool_of_games[game][0][6:]
        p1_strategy_vector = [pr1, pr2]
        p2_strategy_vector = [pc1, pc2]
        game_matrix = nash.Game(p1_strategy_vector,p2_strategy_vector)
        print(game_matrix)
        nash_array = game_matrix.support_enumeration()
        nash_list = list(nash_array)
        print("NL",nash_list)
        for s1,s2 in nash_list:
            row_utility = ((numpy.dot(numpy.dot(s1,p1_strategy_vector),s2)))
            print(row_utility)
            col_utility = (numpy.dot(numpy.dot(s1,p2_strategy_vector),s2))
            print(col_utility)
            fitness = row_utility + col_utility
            print ("FS",fitness)
        maxfit = fitness.max()
        print ("MX", maxfit)

我在numpy.dot这里使用该函数来获取两个相同大小的矩阵(由 nash 函数创建)的乘积。我相信这个函数返回数据的 ndarray 中的数据。我接下来要做的是总结它们。

例如,该函数的(部分)输出是:

Row player:
[[2 1]
 [0 3]]

Column player:
[[3 1]
 [0 2]]
NL [(array([ 1.,  0.]), array([ 1.,  0.])), (array([ 0.,  1.]), array([ 0.,  1.])), (array([ 0.5,  0.5]), array([ 0.5,  0.5]))]
2.0
3.0
FS 5.0
3.0
2.0
FS 5.0
1.5
1.5
FS 3.0
MX 3.0

如您所见,结果和总和计算正确,但MAXIMUM值 (MX) 不是。这将是这部分代码的主要结果。

有谁知道我在这里做错了什么?

用户6655984

fitness不是一个数组,它是一个你在循环中分配的标量。首先它被分配了 5;然后是 5,然后fitness是 3。循环结束时是 3。单个数字 3 的最大值当然是 3。以下是找到最大适应度的正确方法:

  maxfit = -np.inf   # negative infinity to initialize
  for s1,s2 in nash_list:
        row_utility = ((numpy.dot(numpy.dot(s1,p1_strategy_vector),s2)))
        col_utility = (numpy.dot(numpy.dot(s1,p2_strategy_vector),s2))
        fitness = row_utility + col_utility
        maxfit = max(fitness, maxfit)
  print(maxfit)

重点是maxfit在循环内更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在多维数组中找到最大值并返回父键

来自分类Dev

多维数组的逐元素最大值

来自分类Dev

多维数组javascript的最大值

来自分类Dev

找到最大值及其索引以移动numpy ndarray的子数组的Python方法是什么?

来自分类Dev

返回数组中最大值的索引

来自分类Dev

返回数组javascript的最大值

来自分类Dev

返回数组中最大值的索引

来自分类Dev

javascript-在多维数组中获取最大值

来自分类Dev

获取多维数组中每列的最大值

来自分类Dev

从多维关联数组的最大值中检索键

来自分类Dev

如何在多维数组中找到最大值

来自分类Dev

使用Javascript从多维数组获取最大值

来自分类Dev

来自函数的C分段错误,返回数组的最大值

来自分类Dev

从数组中返回具有最大值的对象

来自分类Dev

用最大值限制遍历数组并返回

来自分类Dev

如何从角度数组对象返回最大值

来自分类Dev

如何返回数组中最大值的位置

来自分类Dev

返回数组索引k处的整数最大值

来自分类Dev

用Javascript返回数组中的最大值

来自分类Dev

如何使用python从数组中返回最大值索引?

来自分类Dev

返回二维数组中行的最大值

来自分类Dev

在 ndarray 中提取最大值(带有附近的值)

来自分类Dev

从多维数组返回值

来自分类Dev

ndarray每行中的N个最大值

来自分类Dev

返回多维数组的函数

来自分类Dev

Julia:获取沿特定轴的多维数组的范围(最小值/最大值)

来自分类Dev

在JavaScript多维数组中查找每个x值的最大值

来自分类Dev

合并多维数组的值

来自分类Dev

更新多维数组的值?