Main Content

非線形問題ベースの最適化における整数制約

問題ベースのアプローチを使用して整数制約付き非線形最適化問題を解くには、次のプロセスのいずれかに従います。

整数制約をもつ非線形問題に対する既定のソルバーは ga (Global Optimization Toolbox) です。ga または surrogateopt のいずれかを使用して、関数 solve で問題を解くには、Global Optimization Toolbox ライセンスを保有している必要があります。

外部ソルバーを使用して prob2struct を呼び出す場合は、名前と値の引数 Solver を指定しなければならない場合があります。

メモ

整数制約をもつ非線形問題の場合、Global Optimization Toolbox ライセンスがないときは、Solver 引数を含める必要があります。

Global Optimization Toolbox ライセンスがある場合でも、名前と値の引数 Solver を指定しなければならない場合があります。外部ソルバーは、問題構造体が特定のソルバーに対応する形式であることを前提とします。たとえば、線形制約と整数制約をもつ問題と二次目的関数の場合、外部ソルバーでは、目的関数が式 ½xTHx + fTx の行列 H および f として表現されている必要がある場合があります。これらの行列を取得するには、名前と値の引数 Solver を使用して 'quadprog' ソルバーを指定します。

problem = prob2struct(prob,"Solver","quadprog");

quadprog ソルバーを指定しなかった場合、生成される問題構造体には、行列ではなく目的関数の関数ハンドルが含まれる可能性があります。いずれの場合も、生成された問題構造体には intcon フィールドの整数変数が含まれます。

メモ

整数制約をもつ非線形問題の場合、整数制約を処理できないソルバーを指定すると、prob2struct は生成される構造体をソルバーで解くことができないという警告を発行します。この問題構造体に対してソルバーを呼び出し、問題を解こうとすると、ソルバーで整数制約が無視されます。この場合、解は元の問題に対する解ではなく、整数制約のない問題に対する解となります。

参考

|