Any optimization algorithm programming interface can be seen as a black-box function with additional free parameters. In this spirit, simulated annealing (SA) can be implemented in pseudo-code within the dimensions of a single slide with free parameters relating to the annealing schedule. Such an implementation, however, necessarily neglects much of the structure necessary to take advantage of advances in computing resources and algorithmic breakthroughs. Simulated annealing is often introduced in myriad disciplines, from discrete examples like the Traveling Salesman Problem (TSP) to molecular cluster potential energy exploration or even explorations of a protein's configurational space. Theoretical guarantees also demand a stricter structure in terms of statistical quantities, which cannot simply be left to the user. We will introduce several standard paradigms and demonstrate how these can be "lifted" into a unified framework using object-oriented programming in Python. We demonstrate how clean, interoperable, reproducible programming libraries can be used to access and rapidly iterate on variants of Simulated Annealing in a manner which can be extended to serve as a best practices blueprint or design pattern for a data-driven optimization library.
翻译:任何优化算法的编程接口均可视为带有额外自由参数的黑箱函数。基于此,模拟退火(SA)算法可在单页幻灯片的伪代码中实现,其自由参数与退火调度相关。然而,这种实现必然忽略了充分利用计算资源进步和算法突破所需的大部分结构。模拟退火算法常被引入诸多学科领域,从旅行商问题(TSP)等离散示例,到分子簇势能探索乃至蛋白质构型空间的探索。理论保证还要求从统计量角度建立更严谨的结构,这不能简单交由用户处理。我们将介绍若干标准范式,并展示如何通过Python面向对象编程将其"提升"为统一框架。我们论证了如何利用干净、可互操作、可复现的编程库访问并快速迭代模拟退火的变体,同时这种方式可扩展为数据驱动优化库的最佳实践蓝图或设计模式。