【问题标题】:Using Python to find a global maximum from array of variables and functional values使用 Python 从变量和函数值数组中查找全局最大值
【发布时间】:2017-11-30 23:49:33
【问题描述】:

就我的问题而言,我有一个数据集,其函数依赖于 4 个变量。数据集采用数组形式,其行有 5 列,其中 0、1、2、3 列是输入值,第 4 列包含输出。我想找到由输入值定义的流形的全局最大值的位置和值。特别是,这个数据集有几个不感兴趣的局部最大值。

我是使用 python 的新手,这让事情变得有点困难,特别是因为当使用像 scipy 这样的库时,有必要在抛出随机值和开始搜索最小值/最大值之前定义一个函数形式。如果有人对我可以使用的库或特定技术有想法,我将不胜感激。

【问题讨论】:

  • 你能告诉我们你到目前为止做了什么吗?它是一个 numpy 数组吗?
  • 什么是“歧管”?你只是想要第 4 列的全局最大值吗?
  • @RodrigoDorantes-Gilardi 是的,它是一个 numpy 数组。说实话很难开始,因为我不知道函数形式。具体来说,鉴于我不知道这种形式,我无法围绕如何抛出猜测值等以使通常的最大化技术起作用。
  • @PaulH 我所说的流形是指,给定足够多的 (x,y) 和 f(x,y) 值(作为 3D 示例),输入变量定义了某种飞机。在这里,我有 4 个输入变量,它们在 5D 空间中定义某种函数,我需要它的全局最大值和最大值的位置。
  • numpy.argmax

标签: python function scipy mathematical-optimization maximize


【解决方案1】:

考虑到dataset 是一个形状为 (n, 4) 的 numpy ndarray,

import numpy as np
global_maxima = dataset[np.argmax(dataset[:,-1])][:-1]

会给你前三列的全局最大值,如果我理解得很好,那就是你的输入列。如果您想要全局最小值,请将 np.argmax 替换为 np.argmin

【讨论】:

  • 嗨@Rodrigo!这只会返回在这些列中看到的坐标的最大值。正如之前的评论中提到的,我正在寻找的是一个最大化例程,它会吐出对应于函数全局最大值位置的 4 个坐标。
  • 是的!这是快速且有意义的,因为它输出的值最大程度地满足了我的交叉检查。我仍然想知道是否可以构建一些优化技术(沿着 SGD 或类似的方法)来提取全局最大值的坐标,提供多元函数的 n 维坐标集。或者这只是矫枉过正?我应该重新构建我最初的问题以使其更清楚吗?
猜你喜欢
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 2021-01-24
  • 1970-01-01
  • 2010-09-18
  • 2019-02-28
相关资源
最近更新 更多