c# - 蛮力函数输入的算法以找到最大值
问题描述
有一个函数like CalculateProfit(decimal a, decimal b, float c, TimeSpan d)
,它的每个输入参数都有minimum
,maximum
和initial value
设置。
它的输出是平滑的但不是线性的,它有多个峰值和下降。我想暴力破解它的输入并找到最大可能的输出。如何在不尝试每种可能组合的情况下进行优化?也许某种二进制搜索?
我认为该算法应该在开始时使用大增量步骤来找到大多数峰值,然后使用小增量调整值。此外,我会暴力破解一个输入,直到找到最佳输出,然后对下一个输入尝试相同的输入,然后返回调整第一个输入,依此类推。
更新:该函数是一种复杂的算法,可以对市场历史数据进行分析(因此它不仅仅是一个公式)。因此,我要求进行一些蛮力优化,而不是试图将其“解决”为方程式。
解决方案
您需要阅读 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 函数。
推荐阅读
- python - 代码正在慢慢地加速python代码
- prerender - React-snap 的样式损坏问题
- android - 升级 Gradle 插件后,XML 资源名称在发布版本中发生更改
- javascript - 带有节点 SQLite 的变量名
- search - 在完全二叉树中搜索节点(最佳方式)
- c# - 为什么 PostgreSQL varchar(n) 函数参数类型被覆盖为字符变化类型?
- postgresql - postgresql:将具有匹配列字段的值对象传递给插入命令
- typescript - 如果不是全部使用,是否有必要在接口中描述对象的所有字段?
- elasticsearch - 使用 Nest ElasticSearch 在多个索引中搜索时进行源过滤
- html - 模态标题背景颜色