c++ - 没有目标函数的进化算法

标签 c++ matlab mathematical-optimization evolutionary-algorithm

我目前正在尝试为我的程序寻找合适的参数(大约 16 个参数,程序的执行大约需要一分钟)。进化算法似乎是个好主意,我想看看它们的表现。

不幸的是,我没有很好的适应度函数,因为我的目标函数的方差非常高(我不能经常运行它,除非等到 2016 年)。但是,我可以计算出哪一组参数更好(相互测试两个配置)。您知道是否存在仅使用该信息的进化算法?还有其他更合适的优化技术吗?对于这个项目,我使用 C++ 和 MATLAB。

//更新:非常感谢您的回答。两者看起来都很有希望,但我需要几天时间来评估它们。抱歉耽搁了。

最佳答案

如果您的成对测试给出了正确的总排序,即如果 a >= b,并且 b >= c 意味着 a >= c,并且 some other conditions .那么也许您可以即时构建排名目标,并使用 CMA-ES优化它。 CMA-ES是一种进化算法,对函数值的保序变换和输入的保角变换具有不变性。此外,因为它是二阶方法,与其他无导数搜索启发式算法相比,它的收敛速度非常快,尤其是在像遗传算法这样的随机搜索需要永远进行的高维问题中。

关于c++ - 没有目标函数的进化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33330808/

相关文章:

matlab - 如何在 MATLAB 中使用 polyfitn 查找系数?

matlab - 注释某些行时 Matlab 中的单元格数组串联错误

julia - 优化 : InexactError: Int64(0. 01) 使用 IPNewton 时

logic - 通用编程逻辑

c++ - 如何将多维数组传递给 C 和 C++ 中的函数

c++ - 在 C++ 中将数组作为对象返回

matlab - Matlab:使用“ismember”的代码性能问题

python - 带有距离和行驶时间的图表 : find most km's in 24 hours (with constraints)

c++ - 运行时发生奇怪的崩溃

c++ - 奇怪的方法行为