Optimization Toolbox

主な機能

  • 非線形および多目的最適化
  • 非線形最小二乗、データ近似、非線形方程式のためのソルバー
  • 二次計画法および線形計画法
  • 混合整数線形計画法
  • 最適化問題の定義と求解、および求解の進行状況をモニタリングするための最適化アプリ
  • Parallel Computing Toolbox™ による制約付き非線形ソルバーの高速化
Using a mixed-integer linear programming problem to determine the best way to supply sales locations from warehouses and factories.
混合整数線形計画法による倉庫や工場から販売場所への最適な供給方法の決定。

最適化問題の定義と解決

最適化問題の定義

最適化手法は、最適な結果が得られる一連の設計パラメーターを求めるために使用されます。最適化問題には 2 つの主要なコンポーネントがあります。

目的関数は、最小化または最大化する目標の量を計算します。制約は、設計パラメーターの取りうる値を制限するために追加することができます。

最適化を使用した数学的モデリング、パート 1
蒸気と発電所の例をとって、問題の記述を、最適化を使用して解くことのできる数学的プログラムに変換します。

最適化を使用した数学的モデリング、パート 2
蒸気と発電所の例をとって、Optimization Toolbox™ のソルバーを使用して線型問題を解きます。

最適化アプリの使用

Optimization Toolbox の関数やソルバーのオプションには、プログラムによってアクセスすることも最適化アプリからアクセスすることもできます。

最適化アプリを使用すると、一般的な最適化のタスクが簡単になります。次の操作を実行できます。

  • ソルバーの選択と最適化問題の定義
  • 最適化オプションと、選択したソルバーに対するこれらのオプションの既定値の設定と検討
  • 問題の実行と中間結果および最終結果の可視化
  • オプションのクイック レファレンス ウィンドウで、ソルバーに特定のドキュメンテーションを表示
  • MATLAB® ワークスペースと最適化アプリの間で問題の定義、アルゴリズム オプションおよび結果のインポートとエクスポート
  • 作業をキャプチャし、タスクを自動化するための、MATLAB コードの自動生成
  • Global Optimization Toolbox ソルバーへのアクセス

最適化グラフィカル ユーザー インターフェイスの紹介
最適化問題を設定して実行し、中間結果と最終結果を可視化します。

ソルバーの選択

Optimization Toolbox にはさまざまな種類の目的関数と制約のための異なるソルバーが含まれています。最適化決定テーブルが最適化問題に対して、最適なソルバーを選ぶことに役立ちます。

オプションの設定

Solver オプションを使用して最適化プロセスの調整や変更を行ったり、ソルバーの進行状況を可視化したりできます。オプションの設定は、プログラムによって行うことも最適化アプリから行うこともできます。

最適化のオプションの設定
ソルバーの調整および最適化の進行状況のモニタリングのために、Optimization Toolbox™ の optimoptions を使用してオプションを設定する

非線形最適化

Optimization Toolbox は、MATLAB において非線形計画法の問題の解決に広く使用されている最適化アルゴリズムを提供します。このツールボックスには、制約なしと制約ありの非線形最適化のためのソルバーと、最小二乗最適化のためのソルバーが含まれています。

制約のない非線形最適化

Optimization Toolbox では、次の 3 つのアルゴリズムを使用して、制約のない非線形最小化の問題を解決できます。

  • 擬似 Newton アルゴリズム: 二次元と三次元の混在する直線探索法と、ヘッセ行列の近似を向上する Broyden-Fletcher-Goldfarb-Shanno (BFGS) 方程式を使用。
  • Nelder-Mead アルゴリズム (または、滑降シンプレックス法): 直接探索アルゴリズムで、関数値のみを使用し (導関数を必要としない)、滑らかでない目的関数を処理。Global Optimization Toolbox: 非線形最適化のために、追加の導関数を使用しない最適化アルゴリズムを提供。
  • 信頼領域アルゴリズム: 制約のない非線形問題に使用され、スパース性や構造を利用できる大規模な問題で特に便利。
Unconstrained nonlinear programming used to search an engine performance map for peak efficiency.
最高の効率性を得るためにエンジン性能マップを探索するという制約のない非線形最適化。

制約付きの非線形最適化

制約付き非線形最適化問題は、線形または非線形の目的関数で構成されており、線形または非線形の制約を付けることができます。Optimization Toolbox では、次の 4 つのアルゴリズムを使用して、これらの問題を解決できます。

  • 内点法アルゴリズム: 一般的な非線形最適化に使用。スパース性や構造をもつ大規模な問題に特に便利で、ユーザー定義の目的や、制約関数の評価エラーも許容されます。このアルゴリズムは障壁関数に基づいており、オプションにより最適化の実行中にすべての繰り返しが境界に対しして厳密に適合するように保つことができます。
  • SQPアルゴリズム: 一般的な非線形最適化に使用。すべての繰り返しで境界が守られ、ユーザー定義の目的や、制約関数の評価エラーも許容されます。
  • active-setアルゴリズム: 一般的な非線形最適化に使用。
  • 信頼領域 Reflective 法 アルゴリズム: 上下限制約を持つ問題や、線型等式にのみ使用。大規模な問題に特に便利です。

内点法アルゴリズムと信頼領域 Reflective アルゴリズムでは、異なるアプローチを使用してヘッセ行列を推測できます。

内点法アルゴリズムでは、以下を使用してヘッセ行列を推測できます。

  • BFGS (密)
  • Limited memory BFGS (大規模な問題用)
  • ヘッシアン乗算関数
  • 実際のヘッシアン (スパースまたは密)
  • スパースな構造に関する知識を必要としない、有限差分勾配

信頼領域 Revlective  法アルゴリズムでは、以下を使用できます。

  • スパースな構造のヘッシアンの有限差分勾配
  • 実際のヘッシアン (スパースまたは密)
  • ヘッシアン乗算関数

また、内点法アルゴリズムと信頼領域 Revlective 法アルゴリズムでは、ヘッセ行列を明示的に作成しなくても、関数でヘッセとベクトルの積を計算できます。

Constrained nonlinear programming used to design an optimal suspension system.
最適なサスペンション システムの設計のための、制約付き非線形最適化。

線形計画法および二次計画法

Optimization Toolbox は、大規模な線形計画法および二次計画法の問題を解くことができます。

線形計画法

線形計画法の問題では、境界や、線形等式および線形不等式による制約にしたがって、線型の目的関数の最小化または最大化を行います。線形計画法は、金融、エネルギー、オペレーションズ リサーチなどの分野において、変数間の関係を線形で表すことができる場合に使用されます。

Optimization Toolbox には、線形計画法の問題を解くための 3 つのアルゴリズムが用意されています。

  • シンプレックス アルゴリズム: 線型計画に対し、頂点の解の候補を生成およびテストする体系的な方法です。シンプレックス アルゴリズムは、線型計画法で最も広く使われているアルゴリズムです。
  • 内点法アルゴリズム: 線型計画法の問題の解決に使用される、Primal-Dual Predictor-Corrector アルゴリズムに基づいています。内点法は、構造をもつか、またはスパース行列を使用して定義できる、大規模な問題で特に便利です。
  • active-set アルゴリズム: 解が求められるまで、アクティブなセット (局所的にアクティブな制約のサブセット) に対し、各繰り返しで目的が最小に抑えられます。
Linear programming used in the design of a plant for generating steam and electrical power.
蒸気と電力を生成するプラントの設計で使用された線型計画法。

二次計画法

二次計画法の問題では、境界や、線形等式および線形不等式による制約にしたがって、多変量二次関数を最小に抑えます。二次計画法は、金融のポートフォリオ最適化、電力会社の発電の最適化、工学分野の設計の最適化などの用途に使用されています。

Optimization Toolbox には、二次計画法を解決するために、次の 3 つのアルゴリズムが用意されています。

  • 内点凸法アルゴリズム: 任意の制約の組み合わせで、凸の問題を解決。
  • 信頼領域 Reflective 法 アルゴリズム: 上下限制約を持つ問題や、線型等式の制約をもつ問題を解決。
  • active-setアルゴリズム: 任意の制約の組み合わせで問題を解決。

Optimization in MATLAB: An Introduction to Quadratic Programming
この Web セミナーでは、MATLAB で最適化問題を解く方法について、二次の最適化問題の例と MATLAB のシンボリック数学ツールを用いて説明します。

内点凸法アルゴリズムと信頼領域 Reflective 法アルゴリズムは両方とも、大規模でスパースな問題を処理できます。また内点凸法アルゴリズムには、最適化された線型代数内部ルーチンと新しい presolve モジュールが組み込まれており、スピード、数値的な安定性、および不可能な解の検出が向上しています。

Quadratic programming used to perform a returns-based style analysis for three mutual funds.
二次計画法を使用して、3 つの投資信託の収益ベースの分析を実行。

混合整数線形計画法

混合整数線形計画法は、線形計画法の問題を、最適解の一部またはすべての変数は整数でなければならないという追加の制約で拡張したものです。

一部の最適化問題では、変数は小数の値をとることができません。たとえば、ある変数が購入する株式の数を表す場合、この変数は整数の値しかとることができません。同様に変数が発電機のオン/オフの状態を表す場合、この変数はバイナリ値 (0 または 1) のみをとることができます。混合整数線形計画法の問題では、これらの変数が最適解において整数のみをとることができるまたは 0 と正の整数のみをとることができるという制約を追加することにより、この動作をモデル化できます。

Mixed-Integer Linear Programming in MATLAB 34:08
Learn how to use the new optimization solver for mixed-integer linear programming in Release 2014a. This new solver enables you to solve optimization problems in which some or all of the variables are constrained to take on integer values. 

Optimization Toolbox では、混合整数線形計画法の問題を次のアルゴリズムを使用して解きます。

  • 整数計画法の前処理を実行し、実行可能領域を狭める
  • 切断平面を適用して実行可能領域を狭める
  • ヒューリスティックな手法により整数の実行可能解を探す
  • 一連の線形計画法緩和問題を解く分岐限定法アルゴリズムにより、これより良い実行可能解がないことを検証する
Using an integer programming problem to determine which investments should be made.
整数計画法問題を使用してどの投資を行うべきか決定する。

配布

Optimization Toolbox ソルバーを MATLAB Compiler™ と共に使用することで、MATLAB を保有していないユーザーと共有可能な意思決定支援ツールを作成できます。これらのスタンドアロン アプリケーションは、任意の数のエンド ユーザーに無償で配布できます。また、MATLAB Builder™ 製品を使用することにより、MATLAB の最適化アルゴリズムを Java® や .NET などの他の言語と統合することもできます。

多目的最適化

多目的最適化は、一連の制約に従う多目的関数の最小化に関係しています。Optimization Toolbox には、次の 2 つの形式の多目的最適化問題を解決する関数が用意されています。

  • 目標達成の問題: 線形または非線形のベクトル関数の値を引き下げて、目標ベクトルで与えられた目標値を達成。目標間の相対的な重要性は、重み付けベクトルを使用して指定されます。目標達成の問題では、線形や非線形の制約を使用することもできます。
  • 最小最大の問題: 多変量関数のセットにおける最悪の場合の値を最小限に抑制。線形や非線形の制約が使用されることもあります。

Optimization Toolbox では、両方の種類の多目的問題を標準の制約付き最適化問題に変換してから、active-set の手法を使用して解決します。

Global Optimization Toolbox は、滑らかでない問題のために、もう 1 つの多目的ソルバーを提供します。

Multiobjective optimization used to design a low-pass filter.
ローパス フィルターの設計に使用された多目的最適化。

非線形最小二乗、データ近似、および非線形の方程式

Optimization Toolbox では、線形と非線形の最小二乗問題、データ近似の問題および非線形方程式を解くことができます。

線形と非線形の最小二乗最適化

このツールボックスでは、次の 2 つのアルゴリズムを使用して、制約付き線形最小二乗の問題を解決することができます。

  • active-set アルゴリズムを使用して、境界と線形の不等式または等式をもつ問題を解きます。
  • 信頼領域 Reflective 法アルゴリズムを使用して、境界制約のみをもつ大規模な問題を解きます。

このツールボックスでは、次の 2 つのアルゴリズムを使用して、非線形最小二乗の問題を解決することができます。

  • 信頼領域 Reflective 法アルゴリズム: 信頼領域の手法を使用して、Levenberg-Marquardt アルゴリズムを実装。制約のない問題と、上下限制約を持つ問題に使用。
  • Levenberg-Marquardt アルゴリズム: 標準的な Levenberg-Marquardt 手法を実装。制約のない問題に使用。
Fitting a transcendental equation using nonlinear least squares.
非線形最小二乗を使用した超越方程式の近似。

データ近似

このツールボックスには、データ近似の問題に対応する特別のインターフェイスが提供されており、データ ポイントのセットを最もよく近似する非線形関数ファミリのメンバーを検索することができます。このツールボックスでは、非線形最小二乗の問題に使用されるアルゴリズムを使用して、データ近似の問題を解決します。

Fitting a nonlinear exponential equation using least-squares curve fitting.
最小二乗曲線近似を使用した、非線形指数方程式の近似。

非線形方程式の解決

Optimization Toolbox では、未知の要素と同じ数の方程式が存在する連立非線形方程式を解決するために、Dogleg 信頼領域アルゴリズムが実装されます。またこのツールボックスでは、信頼領域 Reflective 法アルゴリズムおよび Levenberg-Marquardt アルゴリズムを使用して、この問題を解決することもできます。

Solving an n-dimensional Rosenbrock function using the nonlinear equation solver.
非線形方程式ソルバーを使用した、n 次 Rosenbrock 関数の解決。

並列計算および導関数

非線形問題用の Optimization Toolbox ソルバーは、目的関数の最小化または最大化のために勾配に基づいた手法を使用します。目的関数の勾配に関する情報は、ソルバーに有限差分を使用して推測させるか、ユーザーがソルバーに提供します。

並列処理

Optimization Toolbox を Parallel Computing Toolbox と併用すると、並列計算の利点を活用して問題を解くことができます。並列処理を利用して、並列処理の組込みサポートを有効にするか、対象となる最適化問題に対してカスタムの並列処理実装を定義することで、解の探索時間が短縮されます。

Optimization Toolbox の並列計算の組込みサポートでは、制約付き非線形最適化問題、多目的ゴール到達およびミニマックス問題に対し、一部のソルバーで勾配推定のステップを高速化できます。

Accelerating time to solution for an electrostatics problem using the built-in support for parallel computing.
非線形最適化ソルバーで並列計算の組込みサポートを使用して、静電気の問題の解決時間を加速。組込み機能は、目的関数 (中央右) と制約関数 (右下) の オプション (左) を指定して有効にします。解は右上に示されています。

カスタムの並列処理を実装するには、並列処理機能を使用するように、明示的に最適化問題を定義する必要があります。並列処理は目的関数と制約関数のどちらにも適用できます。並列処理を適用すると、目的関数または制約関数の評価に必要な時間が短縮されます。

Accelerating time to solution for a suspension system design.
サスペンション システム設計 (左下と右下) の解決の加速 (右上)。コード内の 1 行を変更して目的関数をカスタマイズすることで、不確実性が生じています (左上)。

並行処理を利用した最適化問題の加速
Parallel Computing Toolbox を活用して、最適化問題にかかる時間を短縮します。

導関数の供給

Optimization Toolbox のソルバーは、有限差分を使用して目的関数の偏導関数を推測することにより非線形関数を最小化します。また、偏導関数の値を計算する関数を定義することもでき、これにより導関数の推測のステップのオーバーヘッドが大幅に減少します。

目的関数の偏導関数の計算は面倒な作業になる場合があります。Symbolic Math Toolbox™ を使用して問題を記号で表現すれば、組み込み関数を使用して目的関数の偏導関数を自動的に計算できます。そして、Optimization Toolbox のソルバーで使用する MATLAB コードを生成できます。

シンボリック導関数を使用した最適化 (技術関連記事)

製品評価版の入手
または製品の購入

MATLAB による最適化入門

Web セミナーを表示する