主な機能

混合整数線形計画法による倉庫や工場から販売場所への最適な供給方法の決定。

最適化問題の定義と求解

最適化手法は、最適な結果が得られる一連の設計パラメーターを求めたり、最適な意思決定をするために使用されます。最適化問題とは、設計または意思決定における問題のモデルです。設計パラメーターまたは意思決定を最適化変数としてモデル化することができます。最適化問題のその他のコンポーネントとして、目的関数や制約 (該当する場合) などがあります。目的関数は、最小化または最大化する目標の量を計算します。制約は、最適化変数が取りうる値を制限します。

最小二乗問題と非線形方程式は、二乗和を最小化することで解かれるため、最適化の問題と言えます。

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

問題ベースの最適化モデリング

問題ベースのワークフローを使用して、最適化変数で構成される式によって目的と制約を定義します。このアプローチは、線形および混合整数線形最適化問題に使用できます。

Solve a linear program with Optimization Toolbox solvers and a problem-based approach, using a steam and electric power plant example.

問題ベースモデリングを使用して、最適な生成スケジュールを決定します。


ソルバーベースの最適化モデリング

ソルバーベーズのワークフローを使用して、目的と制約を定義します。選択したソルバーで必要となる最適化変数に、関数または行列を使用することができます。Optimization Toolbox 内のすべてのソルバーでこの方法を使用できます。

蒸気と発電所の例をとって、Optimization Toolbox™ のソルバーを使用して線型問題を解きます。

ソルバーベースの型モデリングを使用して、最適なポートフォリオを決定します。


ソルバーの選択

Optimization Toolbox にはさまざまな種類の目的関数と制約に対応する複数のソルバーが含まれています。ソルバーベースのアプローチをとる場合、Optimization Decision Table を使用して問題に対する最適なソルバーを選択できます。ソルバー基盤のアプローチにおいて、適切なソルバーが自動的に選択されます。

Optimization Toolbox では、広範にわたる関数が提供されているため、さまざまなタイプの最適化問題を一回の関数呼び出しで解決することができます。これらの関数は、列生成アルゴリズムなどのより複雑な最適化アルゴリズムの作成に使用したり、ロボットのモーション計画のようにアルゴリズムの中の 1 つのステップとして最適化を使用することもできます。

列生成法で在庫削減の問題を解きます。


オプションの設定

Solver オプションを使用して最適化プロセスの調整や変更を行ったり、ソルバーの進行状況を可視化したりできます。


導関数の導出

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

目的関数の偏導関数の計算は手間のかかる作業です。Symbolic Math Toolbox™ を使用して問題を数式で表現すれば、組み込み関数を使用して目的関数の偏導関数を自動的に計算できます。そして、Optimization Toolbox のソルバーで使用する MATLAB コードを生成できます。


配布

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


非線形最適化

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


制約のない非線形最適化

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

  • 準ニュートン アルゴリズム: 2 次元と 3 次元の混在する直線探索法と、ヘッセ行列の近似を向上させる Broyden-Fletcher-Goldfarb-Shanno (BFGS) 方程式を使用。
  • Nelder-Mead アルゴリズム (または、滑降シンプレックス法): 直接探索アルゴリズムで、関数値のみを使用し (導関数を必要としない)、非平滑の目的関数に対応。Global Optimization Toolbox は非線形最適化のために、追加の導関数を使用しない最適化アルゴリズムを提供。
  • 信頼領域アルゴリズム: 制約のない非線形問題に使用され、スパース性や構造を利用できる大規模な問題で特に便利。

最高の効率性を得るためにエンジン性能マップの探索に使用された、制約のない非線形最適化。


制約付きの非線形最適化

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

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

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

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

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

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

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

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

最適なサスペンション システムの設計に使用された、制約付き非線形最適化。


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

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


線形計画法

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

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

  • 双対シンプレックス法 アルゴリズム: シンプレックス アルゴリズムの一種。シンプレックス アルゴリズムは、線形計画に対し、頂点の解の候補を生成およびテストする体系的な方法で、線形計画法で最も広く使われている。
  • 内点法アルゴリズム: 線形計画法の問題の解決に使用される、Primal-Dual Predictor-Corrector アルゴリズムに基づく。内点法は、構造をもつか、またはスパース行列を使用して定義できる、大規模な問題で特に便利。

蒸気と電力を生成するプラントの設計で使用された線形計画法。


二次計画法

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

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

  • 内点凸法アルゴリズム: 任意の制約の組み合わせで、凸の問題を解きます。
  • 信頼領域 Reflective 法アルゴリズム: 上下限制約を持つ問題や、線形等式の制約をもつ問題を解きます。
この Web セミナーでは、MATLAB で最適化問題を解く方法について、二次の最適化問題の例と MATLAB のシンボリック数学ツールを用いて説明します。

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

二次計画法を使用して、3 つの投資信託の収益ベースの分析を実行。


混合整数線形計画法

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

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

Release 2014a で新しく追加された混合整数線形計画法のための最適化ソルバーの使い方をご紹介します。 この新しいソルバーにより、変数の一部もしくは全部が整数値を取る制約を持つ最適化問題を解決することができます。

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

  • 整数計画法の前処理を実行し、実行可能領域を狭める
  • 切断平面を適用して実行可能領域を狭める
  • ヒューリスティックな手法により整数の実行可能解を探す
  • 一連の線形計画法緩和問題を解く分岐限定法アルゴリズムにより、これより良い実行可能解がないことを検証する
MATLAB® の最適化ツールを利用することで、設計を向上させ、よりよいビジネス上の意思決定をすることが可能です。最適化問題の設定と解決のためのベストプラクティスを紹介します。

多目的最適化

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

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

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

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

ローパス フィルターの設計に使用された多目的最適化。

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

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


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

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

  • 内点法アルゴリズム: 境界と線形の不等式または等式をもつ問題の求解に使用。
  • 信頼領域 Reflective 法アルゴリズム: 境界制約のみをもつ大規模な問題の求解に使用。

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

  • 信頼領域 Reflective アルゴリズム: 非線形最小二乗の問題に特化した信頼領域アプローチを実装。制約のない問題と、上下限制約を持つ問題に使用。
  • Levenberg-Marquardt 法アルゴリズム: 制約のない問題に使用。
非線形最小二乗を使用した超越方程式の近似。

データ近似

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

最小二乗曲線近似を使用した、非線形指数方程式の近似。

非線形方程式の解法

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

非線形方程式ソルバーを使用した、n 次 Rosenbrock 関数の解決。

並列処理

Optimization Toolbox を Parallel Computing Toolbox と併用すると、解の探索時に並列計算の利点を活用できます。ソルバーに組み込まれた並列計算のオプションを有効にするか、対象となる最適化問題に対してカスタムの並列計算を設定することで、解の探索時間が短縮されます。

Optimization Toolbox の並列計算の組み込みサポートでは、一般的な非線形最適化問題、非線形最小二乗問題および等式、非線形連立方程式、多目的問題に対し、ソルバーで勾配推定のステップを高速化できます。

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

この Web セミナーでは、2 つの事例を用いて、MATLAB の単一レベルとマルチレベルの最適化問題を高速化するために並列計算を使用する方法について説明します。

非線形最適化ソルバーで並列計算の組み込みサポートを使用して、静電気の問題の計算時間を短縮。組み込み機能は、目的関数 (右上) と制約関数 (右下) の UseParallel オプション (左) を指定して有効にします。解は左に示されています。