Any optimization alogrithm 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 single slide with free parameters relating to the annealing schedule. Such an implementation however, neglects necessarily 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面向对象编程将其"提升"为统一框架。通过实例证明,采用清晰、可互操作、可复现的编程库,可快速迭代访问模拟退火变体,其扩展性可成为数据驱动优化库的最佳实践蓝图或设计模式。