我需要优化一个函数,但我无法获取其导数、海森矩阵或雅可比矩阵(因此标题中有“黑盒”一词)。假设我的函数看起来像这样:
def my_fun(some_int, some_other_int, some_string):
return float(some_int + some_other_int + len(some_string))
请注意,我仅执行强制类型转换以显示该函数返回浮点数。
搜索空间/约束/边界(或您称之为什么)将是:
some_int = [1..10] # int interval
some_other_int = [1, 2, 3] # int discrete
some_string = ["methodA", "methodB", "methodC"] #discrete
我应该如何在Python中表述问题?这是我目前所搜索到的:
- Scipy 优化器 似乎不接受适用于我的情况下的Nelder-Mead Simplex(或Powell方法)的约束条件
- PyOpt...好吧,我无法避免使用多元目标函数
- 还有Pyswarm。有人知道如何在Pyswarm中实现吗?
有什么想法吗?