蛮力函数输入以找到最大值的算法

时间:2018-12-02 21:28:46

标签: c# algorithm math brute-force

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

其输出是平滑的但不是线性的,它具有多个峰和谷。我想蛮力地输入它,找到最大可能的输出。如何在不尝试每种可能组合的情况下优化此效果?也许某种二进制搜索?

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


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

1 个答案:

答案 0 :(得分: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函数。