我有几个java类,它们实现了一个非常复杂(非线性)的业务逻辑。基本上用户提供了几个(数字)输入参数,应用程序计算标量。
我想对输入数据进行参数扫描,也就是说我想知道哪些参数值创建了最大输出值。
最简单,最耗时的方法是使用" small"创建一些简单的循环。步骤输入参数,并不断检查输出参数。
但正如我所说,这需要相当长的时间;这个问题有几种数学解决方案(例如牛顿法)。
我的问题是;是否有任何免费/开源的JAVA库提供此参数扫描功能?
谢谢, krisy
答案 0 :(得分:0)
您可以为此调整OptaPlanner。在SimpleScoreCalculator
中调用业务逻辑,并将返回的标量包装在Score
实例中。
请确保至少使用6.1.0.Beta2
支持IntValueRange
和DoubleValueRange
。
对于优化算法:如果变量很少,整数和小范围,“分支和绑定”可以工作,保证您的最佳解决方案(但比Brute Force快得多)。
否则,您需要使用有限选择构造启发式,然后使用自定义Move
实现进行本地搜索。