PAGMO の Batch Fitness Evaluation を重い単一目的差分進化問題でどのように活用すればよいか理解できません。
プロセスを高速化するために、BFE の形でマルチスレッドを使用したいと考えています。
コード:
int main()
{
// Construct a pagmo::problem from our example problem.
problem p{problemClass{}};
p.fitness({ 1, 2, 3, 4, 5, 6 });
// Algorithm
algorithm algo{de(100, 0.5, 0.7, 6u, 0.01, 0, pagmo::random_device::next())};
//populate
population pop{p, 10};
//evolve population
//pop = algo.evolve(pop);
//BFE
bfe b;
b.operator()(p, <set of vectors (how to generate this?)>);
std::cout << "The population: \n" << b;
}
上記は私が試した BFE の実装ですが、期待どおりに正しく動作していません。
私はPythonの実装を見てきましたが、それは基本的にbfeをアルゴリズムに適用しているだけです。
C++ のドキュメントに従って、問題とベクトルのリストを提供します。これは私には少し混乱します。
- BFE はどのアルゴリズムが使用されることになっているのかをどのように知るのでしょうか?
- BFE に渡す一連のベクトルを生成するにはどうすればよいですか?