首页 > 解决方案 > Pagmo2 Pygmo2 热启动功能

问题描述

我正在试验Pygmo,发现它对于设置全局优化任务非常方便。但是,如果我的计算机上没有更多 CPU 内核 (>32),那就太好了。我想尽可能地保持成本效益,并考虑在谷歌云实例上使用 AWS 现货实例或抢占式 VM 实例。因为实例可以随时关闭,所以我需要一些热启动功能。我在 API 中找到了一个archipelago::save函数,但不明白这个函数是否可以用来保存优化器的状态。是否可以热启动 Pygmo/Pagmo2 ?

标签: pythonpygmo

解决方案


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也可以从文件中写入和读取。


推荐阅读