OpenCV 4.5.3(日本語機械翻訳)
クラス | 列挙型 | 関数
Optimization Algorithms

クラス

class cv::MinProblemSolver
すべてのソルバーの基本インターフェース[【詳解】(英語]
class cv::DownhillSolver
このクラスは、関数の非線形非制約最小化を実行するために使用されます。[【詳解】(英語]
class cv::ConjGradSolver
このクラスは,勾配が既知の関数の非線形非制約最小化を行うために使用されます.[【詳解】(英語]

列挙型

enum cv::SolveLPResult { cv::SOLVELP_UNBOUNDED = -2 , cv::SOLVELP_UNFEASIBLE = -1 , cv::SOLVELP_SINGLE = 0 , cv::SOLVELP_MULTI = 1 }
のリターンコードはcv::solveLP()関数[【詳解】(英語]

関数

CV_EXPORTS_W int cv::solveLP (InputArray Func, InputArray Constr, OutputArray z)
与えられた(非整数)線形計画問題をシンプレックス法(SimplexAlgorithm(シンプレックス法)を用いて、与えられた(非整数の)線形計画問題を解きます。[【詳解】(英語]

詳解

The algorithms in this section minimize or maximize function value within specified constraints or without any constraints.

列挙型詳解

SolveLPResult

のリターンコードはcv::solveLP()関数

列挙値
solvelp_unbounded

問題がunboundedである(ターゲット関数が任意の高い値を達成できる)。

SOLVELP_UNFEASIBLE

問題が実行不可能である(課せられた制約をすべて満たす点が存在しない)

SOLVELP_SINGLE

対象関数の最大値が1つしかない

SOLVELP_MULTI

対象となる関数に複数の最大値が存在する - 任意のものが返される

関数詳解

solveLP()

CV_EXPORTS_W int cv::solveLP ( InputArray Func,
InputArray Constr,
OutputArray z
)

与えられた(非整数)線形計画問題をシンプレックス法(SimplexAlgorithm(シンプレックス法)を用いて、与えられた(非整数の)線形計画問題を解きます。

ここでいう「線形計画問題」(略してLP問題)とは、次のように定式化できる。

\[\mbox{Maximize } c\cdot x\\ \mbox{Subject to:}\\ Ax\leq b\\ x\geq 0\]

ここで$c$は固定1-by-n行ベクター$A$は固定m-by-nの行列である。$b$は固定m-by-1列ベクトルと$x$は任意のn-by-1は制約条件を満たす任意の列ベクトルです。

シンプレックス・アルゴリズムは、この種の問題を効率的に処理するために設計された数多くのアルゴリズムの1つである。理論的には最適ではありませんが(上のように書かれた問題を多項式時間で解くことができるアルゴリズムは存在しますが、シンプレックス法はいくつかの特別なケースでは指数時間に縮退します)、よく研究されており、実装も簡単で、実際の目的にもよく機能することが示されています。

具体的な実装方法は、ほぼそのままの形でアルゴリズム入門 第3版T. H. Cormen, C. E. Leiserson, R. L. Rivest and Clifford Stein著)からほぼそのまま引用しています。特に、ブランドの法則http://en.wikipedia.org/wiki/Bland%27s_ruleは循環を防ぐために使用されます。

引数
Func この行ベクトルは$c$は,LP 問題の定式化における 32ビットまたは64ビットの浮動小数点数を含むべきである.便宜上,列ベクトルも提出することができますが,後者の場合は,次のものに対応するものと理解されます。$c^T$.
Constr m-by-n+1行列で,その右端の列は,上の定式化における$b$に,残りの列は$A$. また,32ビットまたは64ビットの浮動小数点数が必要です.
z 解答は,ここでは列ベクターとして返されます.$c$これは,上の式では これには,64ビットの浮動小数点数が入ります.
戻り値
1つのcv::SolveLPResult