最適化ソフトウェアの一覧
![]() |
最適化ソフトウェアの一覧(さいてきかソフトウェアのいちらん)では、数理最適化で扱える最適化問題に対して用いられるソフトウェアの一覧が記載されている。
入力の集合を出力値へと変換する場合に関数 f によって記述されることを考える。最適化とは許容される入力の集合からある規則に従って値を選択し、そのときの関数の値を計算し、その中で得られた最良値を記録することによって、利用可能な選択肢の中から最適な解を生成・選択する過程を指す。多くの実世界の問題や理論的な問題をモデル化において最適化を行うことがができる。具体例としては入力がモーターの設計パラメータで、出力が消費電力である。また、入力がビジネス上での選択で、出力がそれらによって得られる利益の例が挙げられる。
(最小化の)最適化問題では以下のように表される:
連続最適化において集合 A は実数空間 Rn の部分集合であり、かつその要素が必ず満たさなければならない(等式・不等式の)制約条件が与えられる場合がある。一方、組合せ最適化において集合 A はバイナリ値、順列、または整数値からなる集合などの離散空間の部分集合として与えられる。
最適化ソフトウェアを利用する際、関数 f はプログラミング言語によって適切に定義し、コンパイル・実行時に最適化ソフトウェアで f が認識される必要がある。最適化ソフトウェアでは A の入力値を提供し、関数 f が記述しているソフトウェアモジュールによって f(x) の値、あるいは(導関数といった)関数に関する追加の情報を提供する。
このようにして求めたい情報を明確に求めることができる。複数の相異なる最適化ソフトウェアモジュールによって同一の関数 f に対しての出力を比較することや、特定の最適化ソフトウェアにおいて異なる関数 f での解の挙動を確認することが容易に可能である。
以下の表は一般的に知られているライセンス・ビジネスごとに分類された最適化ソフトウェアの一覧である。
無償・オープンソースソフトウェア
[編集]アプリケーション
[編集]名称 | ライセンス | 説明 |
---|---|---|
ADMB | BSD | 自動微分を用いた非線形計画法フレームワーク |
ASCEND | GPL | 化学プロセスモデリング用の数理モデリングツール |
CUTEr | GPL | 最適化および線形代数ソルバに対する検証環境 |
GNU Octave | GPL | 数値計算に重きが置かれた高水準言語利用可能なソフトウェアパッケージMATLABとの互換性がある。 |
Scilab | CeCILL | 高水準数値指向プログラミング言語による数値最適化フレームワークを備えたクロスプラットフォームの数値計算パッケージ |
ソフトウェアライブラリ
[編集]名称 | ライセンス | 説明 |
---|---|---|
ALGLIB | GPL | C++、C#による自動微分を用いたデュアルライセンス(GPL/商用)最適化ライブラリ(線形計画法、二次計画法、非線形計画法)。 |
COIN-OR | EPL 1.0 | 整数計画法、線形計画法、非線形計画法 |
Dlib | BSL‑1.0 | C++による無制約/箱型制約付き非線形/二次最適化ライブラリ |
Gekko | MIT | Pythonによる機械学習および混合整数・微分代数方程式系の最適化ソフトウェア |
GLPK | GPL | C言語APIで提供される。GNU Linear Programming Kitの略 |
HiGHS optimizationソルバ | MIT | 線形計画法(LP)、混合整数計画法(MIP)、凸二次計画法(QP)[1] |
IPOPT | EPL(旧ライセンス:CPL) | C++ (公式にはFortran、C言語での提供)による(勾配を求める必要がある)連続方程式系を解くための大規模非線形最適化ソフトウェア。COIN-ORの一部分の機能として提供[2] |
MINUIT(現: MINUIT2) | LGPL | CERNにより開発された無制約最適化ソフトウェア |
OpenMDAO | Apache License | Pythonによる複合領域設計最適化フレームワーク。NASAグレンリサーチセンターの主導により開発され、NASAラングレー研究所がサポートを行っている |
SCIP | Apache License | 混合整数計画法(MIP)および混合整数非線形計画法(MINLP)用ソルバ |
SciPy | BSD | いくつかの最適化問題に対応したPythonによる汎用数値計算パッケージ |
プロプライエタリソフトウェア
[編集]- AIMMS – GUI building facilities内の機能として提供される最適化モデリングシステム
- ALGLIB – C++、C#インターフェースによる制約付き二次・非線形最適化のための(GPL/商用)デュアルライセンスライブラリ
- Altair HyperStudy – 実験計画法、複合領域設計最適化の最適化ソフトウェア
- AMPL – 大規模な線形、混合整数、非線形最適化に対するモデリング言語
- ANTIGONE – 決定論的大域的最適化のMINLPソルバ
- APMonitor – MATLAB、Python、Juliaで利用可能な大規模な非線形、混合整数、微分代数方程式系の最適化に対するモデリング言語
- Artelys Knitro – 連続、混合整数計画問題に対応した大規模非線形最適化ソフトウェア
- ASTOS – AeroSpace Trajectory optimization Softwareの略
- BARON – 非線形代数・混合整数非線形計画問題に対する最適化ソフトウェア
- COMSOL Multiphysics – 有限要素解析・ソルバおよびマルチフィジックスシミュレーションソフトウェアのクロスプラットフォーム
- CPLEX – 線形、凸二次計画問題のような連続・整数変数に対応したソルバ
- FEATool Multiphysics – MATLABによるFEA GUIツールボックス
- FICO Xpress – 線形、凸二次計画問題のような連続・整数変数に対応したソルバ
- FortMP – 線形計画法・凸二次計画法
- FortSP – 確率計画法
- GAMS – 汎用代数モデリングシステム
- Gurobi Optimizer – 線形、凸二次計画問題のような連続・整数変数に対応したソルバ
- HEEDS MDO – SHERPA、ハイブリッド適応型最適化アルゴリズムを用いた複合領域設計最適化ソフトウェア
- IMSL Numerical Libraries – 線形、凸二次、非線形、疎な二次最適化。線形計画問題に対するアルゴリズムの実装ではC、Java、C#、.NET、Fortran、Pythonが使用されている。
- IOSO – (自己組織化に基づく非直接的最適化による)多目的、多次元非線形最適化
- Kimeme – 多目的最適化・複合領域設計最適化に対するオープンプラットフォーム
- LINDO – (線形、双方向、離散最適化といった)線形、整数、非線形、確率計画法あるいは大域的最適化に対するソフトウェアExcelのアドインとしてLINDOによる線形、整数、非線形最適化をサポートしている。
- LIONソルバ – 学習およびインテリジェント最適化によるデータマイニング、解析、モデリング、リアクティブ型ビジネスインテリジェンスアプローチ統合ソフトウェア
- modeFRONTIER – サードパーティ製のエンジニアリングツールとのシームレスな連携を提供し、設計シミュレーションプロセスの自動化と分析的意思決定を支援する多目的および複合領域最適化用統合プラットフォーム
- Maple – 制約付き/無制約の線形、凸二次、非線形、連続、整数最適化を対応。アドオンにより大域的最適化にも対応する
- MATLAB – Optimization Toolboxによる線形、整数、凸二次、非線形計画問題を解くプラットフォーム。複数の局所解および微分可能でない最適化問題をモデリングにより最適化あるいは推定する
- MIDACO – 進化的計算を用いた単一/多目的最適化のための計量ソフトウェアツール。C/C++、Fortranにより実装され、Excel、VBA、Java、Python、Matlab、Octave、R、C#、Juliaで利用可能\
- Mathematica – 制約付き/無制約の大規模多変数、線形、凸二次、非線形、連続、整数最適化に対応
- ModelCenter – 統合、自動化、設計最適化用のグラフィカル環境
- MOSEK – 線形、凸二次、錐、凸非線形、連続、整数計画問題の最適化ツール
- NAG – 線形、凸二次、非線形、(線形・非線形関数の)最小二乗法、(線形・疎な線形、非線形の)制約あるいは無制約最適化に対応している。連続・整数計画問題の局所あるいは大域的最適解を求めることができる。
- NMath – 線形、凸二次、非線形計画問題に対応
- Octeract Engine – 決定論的大域的最適化によるMINLPソルバ
- OptimJ – Javaベースのモデリング言語。プレミアム版ではMosekやCPLEXソルバを利用することができる。
- Optimus platform – Noesis Solutionsにより開発されたプロセス統合、設計最適化プラットフォーム
- optiSLang – CAEベース解析、最適化、ロバスト性評価に対するソフトウェアソリューション
- OptiY - 不確実性、信頼性、ロバスト性、感度解析、データマイニング、メタモデリングのための最適化戦略および確率的アルゴリズムを提供する設計環境ツール
- OptiStruct – 概念設計サイジング、構造最適化
- OptQuest – 離散事象シミュレーションソフトウェアと併せて実装されているシミュレーションベース最適化に対するメタヒューリスティックベースの最適化プラグイン
- PottersWheel – 常微分方程式によるパラメータ推定(学術版は無償でMATLAB toolboxにおいて利用可能)
- pSeven - DATADVANCEにより開発されたエンジニアリングシミュレーション・分析・多分野最適化・データマイニングの自動化のためのソフトウェアプラットフォーム
- SAS – SASにより開発された(統計、予測、機械学習、最適化などによる)ビジネスインテリジェンス、顧客インテリジェンス、データ管理、リスク管理などの応用解析に適したソフトウェア
- SmartDO – 計算機援用工学(CAE)に特化した大域的な多分野融合最適設計用ソフトウェア。直接大域探索アプローチを実装
- SNOPT – 大規模最適化問題
- The Unscrambler – 製品製剤、プロセス最適化ソフトウェア
- TOMLAB – MATLABによる大域的最適化、整数計画法、最小二乗法、線型計画法、凸二次計画法、無制約最適化問題に対するソフトウェア。TOMLABはCPLEX、SNOPT、KNITRO、MIDACOに挙げられるソルバに対応している
- VisSim – 力学系におけるシミュレーションと最適化に特化した視覚的ブロック図言語
- WORHP – 連続非線形最適化に対する大規模スパースソルバ
学術用途のフリーライセンス
[編集]- AIMMS
- AMPL
- APMonitor – Python・MATLABでの統合により学術・商用ライセンスが無償で使用可能。
- ASTOS
- CPLEX
- Couenne – Eclipse Publicライセンス下で利用可能な混合整数非線形計画問題のための決定論的大域的最適化によるオープンソースソルバ
- FICO Xpress
- Galahad library
- Gekko
- Gurobi Optimizer - 学術用途ではフリーライセンスが提供されている
- LIONソルバ
- MIDACO – 進化的計算に基づいた数値最適化用ソフトウェアパッケージ
- MINTO – 分枝限定法を用いた整数計画法ソルバ。個人用はフリーウェア
- MOSEK – 大規模最適化ソフトウェア。線形、凸二次、錐、非凸二次、連続、整数計画問題に対するソルバ。
- OptimJ – Javaをベースとしたモデリング言語。GNU Linear Programming KitあるいはLP、MPS形式で記述された線型計画問題を解くためツールとしての無償版が提供されている。
- PottersWheel – 常微分方程式によるパラメータ推定(学術用途では無償でMATLAB toolbox内で利用可能)
- Pyomo - 最適化モデルの定式化のためのPythonソフトウェアパッケージ
- UFO - 数値最適化に対するフォートランパッケージ
- WORHP
脚注
[編集]- ^ Hall, Julian (2020-09-21). HiGHS: High-performance open-source software for linear optimization. Edinburgh, United Kingdom: エディンバラ大学 2022年2月27日閲覧。
- ^ “Projects”. COIN-OR: Computational Infrastructure for Operations Research (2014年10月8日). 2021年3月10日閲覧。