オペレーションズリサーチの基礎アルゴリズムを体系的に学習する実践とまとめ

導入

あっという間に12月になり、2023年も終わろうとしています。

私の彼女は最近、仕事の後は時間が経つのがとても早いとよく言います。実際、私もそう思います。年齢を重ねるほど、35歳の危機について心配するようになります。したがって、人々は学び続け、改善し続ける必要があります。具体的には、勤務時間外に、毎年少しずつ自分自身を成長させることができます。

2023年の年初に、私は自分自身の成長のための一連の目標を設定しましたが、その1つはシステム化でした。ここでの体系化には主に 2 つの項目が含まれており、1 つ目は基礎オペレーション リサーチ アルゴリズムの体系化、2 つ目は機械学習アルゴリズムの体系化です。年末になると、一年の仕事の総括をする時期になります。

この記事では、今年の最初の項目 (オペレーションズ リサーチの基本アルゴリズム) の実践と概要を共有することに焦点を当て、その後の記事では別の内容について説明します。

以下のテキストを参照してください。

ターゲットデザイン

科学的かつ体系的にアプローチするには、さまざまな専門書のカタログを参照し、自分の認識を組み合わせて個人的なデザインを作成する必要があると個人的には思います。 たとえば、書籍「オペレーション リサーチ」(清華大学出版局) は線形計画問題から直接始まりますが、線形計画問題を解くためのシンプレックス法は私にとってすでに問題となっています。紹介とはみなされません。

下の写真は、私が今年の初めに自分自身に設定した体系的な学習目標を示しています。

学習プロセスは単純なものから複雑なものへと進むべきだと私は信じています。最も単純なオペレーション リサーチ問題は 1 次元の制約のない問題である必要があり、これに基づいて問題の次元を拡大し、さまざまな種類の制約を追加できます。これらの内容は、年初の私の体系的な学習目標において、非線形計画モジュールとして分類されました。そういえば「非線形計画法」というモジュールのタイトルはあまり正確ではありませんが、他に良いものが思い浮かばなかったので、このまま使い続けます。

上記の普遍性の高い基本的なアルゴリズム体系を理解した上で、実際のビジネスで広く研究されている問題の一種である線形・整数計画法とそれに対応する解法アルゴリズムを学ぶのが適していると思います。

非線形計画法、線形計画法、整数計画法に加えて、インテリジェントな最適化アルゴリズムを学ぶ主な理由は、これらのアルゴリズムを改善する試みにおいて、反復方向と反復ステップ サイズの設計が非常に芸術的であると感じるためです。 strict は数学的に証明されていますが、実際には非常に効果的な手段であることが証明されています。

目標練習

ほとんどのアルゴリズムでは、研究を 2 週間で完了するというあらかじめ設定された目標を設定し、最終評価では残り 19 週間になるようにしました。

残りの時間に関しては、私が自分で立てた計画は比較的緩やかです。私は仕事と勉強は人生のためにあるべきだと常々感じており、もし葛藤があるなら、幸せな人生経験を第一にすべきであると考えています。だから、最初から自分にあまりプレッシャーをかけたくなくて、ダラダラとゲームをしたり、動画を見たり、あるいはただ退屈していて、少し疲れていると感じても、あまり罪悪感を感じないようにしていました。

実はこれが事実で、完成という観点から見ると、前回の記事は VNS で、11 月 12 日に完成しましたが、12 月 31 日まであと 6 週間しか残っていないので、年の半ばで約 13 週間を無駄にしてしまったことになります。時間。

私のアルゴリズム学習の完了の定義は、アルゴリズムのコンテンツに対応する記事を書くことです。記事には少なくとも 2 つのモジュールが含まれている必要があります。

1 つ目は、独自のロジックを使用してアルゴリズムの原理を明確に説明することです。私自身に対する要件は、アルゴリズムを初めて使用する人でも理解できる内容にすることです。将来、実際に人々を教えたり教育したりする機会があれば、これは私の貴重な財産になるはずです。

2 つ目は、アルゴリズム プロセス全体を実装する独自のコードを作成することです。私自身の要件は、Python と Java でそれぞれプログラミングして、アルゴリズムの原理を本当に理解しているかどうかを確認し、同時にコーディング能力を向上させることです。

実際の完成度の観点からは、アルゴリズム関連の記事はすべて合格とみなされます。アルゴリズム原理の説明には大変満足しており、特に友人から心温まるコメントやメッセージをいただくと、とても励まされます。コードの実装に関しては、当初は Python と Java でそれぞれ簡単なアルゴリズムを実装できましたが、中期以降、アルゴリズムの複雑さが増し、能力をやや超えてしまいました。現実を認識した後、私は Java を使用してアルゴリズム プロセスを実装するという目標を削除しました。特に複雑なアルゴリズムの場合は、手動で記述する必要さえありません。

ほら、私にとって自分自身と和解するのはとても簡単です。

記事の概要

このセクションでは、過去 1 年間の基本的なオペレーション リサーチ アルゴリズムに関する関連記事とリンクを要約し、以前のターゲット設計に従って分類しています。

分類 記事とリンク
非線形計画法 - 黄金分割法 Python および Java コードの実装: 1 次元の最適化問題を解くための黄金分割法
非線形計画正接法 Python および Java コードの実装: 1 次元の最適化問題を解決するタンジェント法
非線形計画法 - 座標回転法 Python コードの実装: 多次元最適化問題を解決するための座標回転メソッド
非線形計画法 - 勾配アルゴリズム 勾配アルゴリズムの原則: 最急降下法、ニュートン法、準ニュートン法
準ニュートン法: Python コードの実装
非線形計画法 - 間接法 制約を伴う最適化問題の解決: ラグランジュ乗数法と KKT 条件
非線形計画法直接法 制約のある最適化問題を解く: ペナルティ関数法
線形計画法 - シンプレックス法 線形計画法とシンプレックス法の原理
線形計画法モデル エンジニアリング アプリケーション
線形計画法 - 整数計画法 整数計画問題を解くための切断面法と分枝限定法
少し待って、調和ソルバーで止まらない理由について話しましょう
線形計画法 - 双対問題 線形計画法の二重問題: 理論的導出と実際の応用
インテリジェントな最適化-DE 差分進化アルゴリズムは依然として強力
インテリジェントな最適化-ACO アリのコロニー アルゴリズムを使用して国内 34 都市の TSP を見つけますが、これは最適解とそれほど変わりません。
インテリジェントな最適化-ALNS 本当に優れた適応型大近傍検索アルゴリズム ALNS

体験談まとめ

過去 1 年間のオペレーショナル リサーチ アルゴリズムの学習と理解についての概要は次のとおりです。

まず、これらのアルゴリズムはオペレーション リサーチの基本的な内容です。これらの知識ポイントの研究と要約を通じて、私は多くの利益を得ました。これにより、私の非技術的な背景による基礎知識の予備力の不足をある程度補うことができました。しかし、これはほんの始まりにすぎません。知識が向上するにつれて、より多くの未知のコンテンツが見つかる可能性があります。今後ゆっくりと探索する必要があるコンテンツがまだたくさんあります。

第 2 に、私は学習においてよりアプリケーション指向です。私が将来の長期的なキャリアとしてオペレーションズ リサーチを選択したとき、主に感じたのは、これらのアルゴリズム戦略を実際のシナリオに適用することで大きな達成感が得られるため、理論的な導出に執着しないことです。産業実務で最も一般的に使用されている操作アルゴリズムについて説明し、それらが何であるか、またなぜそうなるのかを理解するためにいくつかの基本的なアルゴリズム原理を補足します。

最後に、これらの知識ポイントを結び付ける方法は、私の現在の知識に基づいています。図の分類は、私が現在実践している体系的な学習の道筋に基づいたものであり、権威あるものではありませんが、誰もが独自の知識体系を構築するための参考として使用できます。

注意

来年のオペレーションズ リサーチと最適化分野の記事のトピックを少しだけ紹介します。可能性が高いのは確率的最適化とロバスト最適化、つまりモデル入力に不確実性がある場合の最適な意思決定です。

具体的な学習経路についてはまだ考えていませんが、もちろん考えたとしても直接公開はしませんが、これと同様の内容になる可能性が高いです。来年末!

最後に、皆さんが小さなことでも粘り強く、ゆっくりと頑張って、皆さんを驚かせてほしいと願っています。

おすすめ

転載: blog.csdn.net/taozibaby/article/details/134913797