python - Pagmo2 Pygmo2 热启动功能
问题描述
我正在试验Pygmo,发现它对于设置全局优化任务非常方便。但是,如果我的计算机上没有更多 CPU 内核 (>32),那就太好了。我想尽可能地保持成本效益,并考虑在谷歌云实例上使用 AWS 现货实例或抢占式 VM 实例。因为实例可以随时关闭,所以我需要一些热启动功能。我在 API 中找到了一个archipelago::save函数,但不明白这个函数是否可以用来保存优化器的状态。是否可以热启动 Pygmo/Pagmo2 ?
解决方案
pagmo 中的所有对象都可以序列化,群岛也可以。在 python 中通过 pickle / dill,在 c++ 中使用 boost::serialization 库。你找到的方法,即archipelago::save
按照boost库的API实现对象pagmo::archipelago的序列化。
a = pagmo::archipelago(my...args);
a.evolve(12);
a.wait();
// Now serialize and deserialize
{
boost::archive::binary_oarchive oarchive(ss);
oarchive << a;
}
b = archipelago{};
{
boost::archive::binary_iarchive iarchive(ss);
iarchive >> b;
}
b.evolve();
像这样的事情是使用序列化来重新开始进化。请注意,ss
也可以从文件中写入和读取。
推荐阅读
- sharepoint - 使用 microsoft graph api 获取共享点日历事件的重复数据?
- node.js - 如何重用 MongoDB 查询
- r - 为向量中的每个元素在数据框中创建行
- c# - 尝试在 Windows Server 2008 R2 中的 IIS 7 中提取自定义错误页面时出现运行时错误
- javascript - 在 Javascript 中替换数组元素会产生意想不到的结果
- java - Java 内存泄漏终结器您的工具包
- python - 在 Cantera 反应器中使用生物质热解动力学
- python - 使用 PySpark 读取 XML
- c# - 如何在 Entity Framework 2 Core 中将空字符串更改为非空 int?
- google-drive-api - 使用 Google Drive 时,如何使用 SDK 授予 Java 应用程序下载二进制文件的权限