算法以强力输入函数来找到最大值



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

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

我认为算法应该在开始时使用大的delta步骤来找到大多数峰值,然后用小的delta调整值。此外,我会对一个输入进行粗糙处理,直到找到最佳输出,然后对下一个输入尝试同样的方法,然后再调整第一个输入,以此类推


Update:该函数是一个复杂的算法,用于对市场历史数据进行分析(因此它不仅仅是一个公式(。因此,我要求进行一些bruteforce优化,而不是试图将其作为一个方程来"求解"。

您需要了解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函数。

最新更新