連続最適化アルゴリズムの一種です。進化戦略に基づいて、目的関数を最小化する点を計算するために使用されます。(derivative-freeである)多峰性の関数やノイズの乗った目的関数に対してもロバストである並列性が高いなどが挙げられます。Wikipediaこのアルゴリズムは以下の論文で提案されたそうです。各イテレーションで多数のサンプリング点を保持し、これらを進化計算の要領で更新していくことで最適解を発見します。進化計算の観点からは、イテレーションがgenerationに対応し、サンプリング点群がpopulationに対応しています。あるpopulationは前のgenerationのpopulationから計算される共分散行列を元に生成されます。二次元の目的関数に対しCMA-ESを適用した様子を表した図。Benazera氏によって公開されています。ライセンスはLGPLv3です。C++11で書かれています。Python向けのバインディングもあります。Xでlibcmaesを動かす下記のページに従います。GitHubます必要な依存ライブラリをbrewでインストールします。eigen続いて下記コマンドを実行します。与えたパスの配下に以下のフォルダが生成されます。[XXX]/include[XXX]/lib[XXX]/binあとは通常のライブラリと使用方法は同じです。bin以下にはテストコードが含まれています。以下のように使います。cmasols.run_status();}実行結果は以下の通りです。9.51658e-08ここでは10次元の関数を最適化するのに、反復回数として133回、時間として28ms必要だったことを示しています。CMA-ESか最近読んだ論文でCMA-ESが使われているのを見て気になったので調べました。Derivative-freeなアルゴリズムは使い易いため、今後の自身の研究でも活躍する機会があるかもしれません。17:21最適化計算アルゴリズムCMA-ESのライブラリlibcmaesを使ってみる広告を非表示にする関連記事2020-02-01線形代数ライブラリEigenの遅延評価についてEigenはC++で書かれた線形代数ライブラリである。特徴の一つと...2018-09-08オイラー角による回転行列の表現まとめ免責・注意:本記事は、その正しさを一切保証しない。(1)月別アーカイブはてなブログをはじめよう!yuki-koyamaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。