如何最小化仅使用整数输入的实函数
How to minimize a real function with only integer input
哪些优化算法适用于整数输入、浮点输出?
一个想法只是使用 Brent 搜索,但构建了一种方法,该方法对两个最近的点进行插值以伪造实数输入而不是整数输入。
我的第二个想法是,这似乎是一个普遍的需求,scipy 中一定已经有一些东西可以做到这一点 and/or 更适合它的算法?
Bisect 当然适用于此,但对于大量输入,它的收敛时间可以改进。像布伦特优化这样的混合体会更好。
https://docs.scipy.org/doc/scipy/reference/optimize.html
例子
a = []
for i in range(10):
a.append(i-5+.8)
# a = [-4.2, -3.2, -2.2, -1.2, -0.19999999999999996, 0.8, 1.8, 2.8, 3.8, 4.8]
# How to find a[x] such that a is as close to 0 as possible? x = 4, a = -0.2
用比二分法更好的方法求根对于整数搜索没有意义space,因为它已经非常非常快了。例如,一万亿个值在不到 33 步内收敛。
(参见上面 AirSquid 的评论)
哪些优化算法适用于整数输入、浮点输出?
一个想法只是使用 Brent 搜索,但构建了一种方法,该方法对两个最近的点进行插值以伪造实数输入而不是整数输入。
我的第二个想法是,这似乎是一个普遍的需求,scipy 中一定已经有一些东西可以做到这一点 and/or 更适合它的算法?
Bisect 当然适用于此,但对于大量输入,它的收敛时间可以改进。像布伦特优化这样的混合体会更好。
https://docs.scipy.org/doc/scipy/reference/optimize.html
例子
a = []
for i in range(10):
a.append(i-5+.8)
# a = [-4.2, -3.2, -2.2, -1.2, -0.19999999999999996, 0.8, 1.8, 2.8, 3.8, 4.8]
# How to find a[x] such that a is as close to 0 as possible? x = 4, a = -0.2
用比二分法更好的方法求根对于整数搜索没有意义space,因为它已经非常非常快了。例如,一万亿个值在不到 33 步内收敛。
(参见上面 AirSquid 的评论)