研究ノート-Matlabアルゴリズムの記事-動的プログラミング

動的プログラミング

01はじめに

はじめに:動的プログラミングは運用研究の分岐であり、意思決定プロセスの最適化を解決するための数学的な方法です動的計画法は、特定のタイプの問題を解決する方法であり、特別なアルゴリズム(線形計画法はアルゴリズムなど)ではなく、問題を調査する方法です。したがって、標準的な数式や線形計画法のような明確に定義された一連のルールはありませんが、特定の問題を分析して処理する必要があります。したがって、勉強するときは、基本的な概念と方法を正しく理解することに加えて、想像力に富んだモデルを構築し、創造的なスキルを使ってそれらを解決する必要があります。

例:最短ルートの問題。下の図はラインネットワークであり、ライン上の数値は2点間の距離(またはコスト)を示します。A からG 最短距離(または最小コスト)のルートを見つけてください

意思決定プロセスの分類:プロセスの時間変数が離散か連続かによって、離散時間決定プロセス連続時間決定プロセスに分けられますプロセスの進化に従って決定または決定されます。確率論は、決定論的決定プロセス(決定論的決定プロセス)と確率論的決定プロセス(確率論的決定プロセス)に分けられます。最も広く使用されているのは、決定論的多段階決定プロセスです。 

 

 

静的計画と比較して、動的計画の利点は次のとおりです。

I )大域的最適解を得ることができます。制約条件によって決定される制約セットは非常に複雑になることが多いため、インデックス関数が比較的単純であっても、非線形計画法では大域的最適解を見つけることは困難です。動的計画法は、プロセス全体を一連の類似のサブ問題に変え、各サブ問題の変数の数を大幅に減らし、制約のセットをはるかに簡単にし、グローバルな最適解を簡単に得ることができます。特に、制約セット、状態遷移、およびインデックス関数を分析形式で与えることができない最適化問題では、各サブプロセスを列挙によって解決できます。制約が多いほど、意思決定の検索範囲が狭くなり、解決が容易になります。このような問題の場合、通常、動的計画法が全体的な最適解を見つける唯一の方法です。

Ii )最適解のファミリーを取得できます。プロセス全体の最適解しか得られない非線形プログラミングとは異なり、動的プログラミングでは、プロセス全体とそれに続くすべてのサブプロセスの各状態に対して最適解のファミリーが得られます。いくつかの実際的な問題は、そのような一連のソリューションを必要としますが、そうでない場合でも、最適な戦略の安定性と状態の最適な値を分析するのに非常に役立ちます。何らかの理由で最適な戦略を実現できない場合は、そのようなソリューションのファミリーを使用して、次善の戦略を見つけることができます。

Iii )経験を活用してソリューションの効率を向上させる能力。実際の問題自体が動的である場合、動的プログラミング手法はプロセスの進化のコンテキストと動的特性を段階的に反映するため、実際の知識と経験を計算に使用して、ソリューションの効率を向上させることができます。たとえば、戦略反復法では、実際の経験がより適切な初期戦略の選択と収束速度の向上に役立ちます。

動的プログラミングの主な欠点は次のとおりです。

I )統一された標準モデルはなく、モデルを構築するための普遍的な方法はなく、問題が動的プログラミングモデルを構築できるかどうかを判断する基準さえありません。このようにして、各タイプの問題を分析し、特定のモデルを構築することができます。より複雑な問題については、状態の選択、決定、状態遷移規則の決定などにおいて、豊富な想像力と柔軟なスキルが必要です。これにより、アプリケーションに制限が生じます。

ii )数値解法で解く場合、次元の呪いがあります

02ケース:最短ルート問題

 

おすすめ

転載: blog.csdn.net/seek97/article/details/108346520