【问题标题】:Algorithms to brute force function inputs to find maximum [closed]蛮力函数输入以找到最大值的算法[关闭]
【发布时间】:2018-12-02 21:28:46
【问题描述】:

有一个类似CalculateProfit(decimal a, decimal b, float c, TimeSpan d)的函数,它的每个输入参数都有minimummaximuminitial value设置。

它的输出是平滑的但不是线性的,它有多个峰值和下降。我想暴力破解它的输入并找到最大可能的输出。如何在不尝试每种可能组合的情况下进行优化?也许某种二进制搜索?

我认为算法应该在开始时使用大增量步骤来找到大多数峰值,然后用小增量调整值。此外,我会暴力破解一个输入,直到找到最佳输出,然后对下一个输入尝试相同的输入,然后返回调整第一个输入,依此类推。


更新:该函数是一种复杂的算法,可以对市场历史数据进行分析(因此它不仅仅是一个公式)。因此,我要求进行一些 bruteforce 优化,而不是试图将其作为方程式“求解”。

【问题讨论】:

  • 你知道CalculateProfit函数以及它是如何提前计算的吗?
  • @YeldarKurmangaliyev,我知道,但它内部是一个复杂的算法,所以最好将其视为黑盒。

标签: c# algorithm math brute-force


【解决方案1】:

您需要阅读有关 2 个或更多变量的偏微分方程求解器的信息。 https://math.oregonstate.edu/home/programs/undergrad/CalculusQuestStudyGuides/vcalc/min_max/min_max.html

那你需要研究一种可以解决它的算法,有限体积法和谱法是模拟中最常用的。

https://en.wikipedia.org/wiki/Numerical_partial_differential_equations

如果您只想解决您的问题,您可以在 Matlab 上找到简单的解决方案。 C# 可以通过一些设置调用 Matlab 函数。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 2017-08-19
  • 2011-11-08
  • 2015-06-22
  • 1970-01-01
相关资源
最近更新 更多