Pagmo2 Pygmo2热启动功能

时间:2018-12-22 23:13:53

标签: python pygmo

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

1 个答案:

答案 0 :(得分:1)

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