c# - 暴力破解函数输入以找到最大值的算法

标签 c# algorithm math brute-force

<分区>

有一个像CalculateProfit(decimal a, decimal b, float c, TimeSpan d)这样的函数,它的每个输入参数都有minimum, maximuminitial value 设置。

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

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


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

最佳答案

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

然后你需要研究一种算法来解决它,有限体积法和谱法是Simulation中最常用的。

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

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

关于c# - 暴力破解函数输入以找到最大值的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53584796/

相关文章:

c# - 动态应用程序的 MS SQL 表结构

algorithm - 在基于类(class)中心的模糊化算法中如何计算决策属性的类(class)中心?

algorithm - 确定两个类是否线性可分(在二维算法上)

sql - 计算通话时长的数学公式

c# - 在 visual studio c# 上启用 tls

c# - C# 的正态性测试?

java - 如何在java中找到具有相同键的多个记录中的最小值?

python - 你能对 Django 查询集中的聚合值做额外的数学运算吗

c# - 如何以编程方式创建适用于 XP、Vista 和 Windows 7 的文件关联

c++ - 算法:计算单词列表频率的更好方法