線形計画法シミュレーター 戻る
数理・統計

線形計画法(グラフィカル解法)シミュレーター

2変数LP問題の実行可能領域・最適頂点・目的関数等高線をリアルタイム描画。シンプレックス法の逐次ステップと感度分析も可視化。

問題設定
プリセット
目的関数
Z = 3x₁ + 5x₂
係数 c₁
係数 c₂
制約条件(最大5つ)
計算結果
最適 x₁*
最適 x₂*
目的値 Z*
拘束制約数
Lp
シンプレックス法のステップがここに表示されます...
感度分析:制約1のRHS b₁ 変化に対する目的値
理論・主要公式

標準形:$\text{max}\; \mathbf{c}^\top\mathbf{x}$ s.t. $A\mathbf{x}\leq \mathbf{b}$,$\mathbf{x}\geq 0$

最適解は実行可能領域の頂点(基底実行可能解)の一つ。

シンプレックス:隣接頂点への移動で目的値を改善。

影の価格(シャドウプライス)$\lambda_i = \partial Z^* / \partial b_i$

線形計画法(グラフィカル解法)とは

🙋
線形計画法って、図で解くって聞いたんですけど、どういうことですか?
🎓
大まかに言うと、2つの製品を作る生産計画で、利益を最大にしたい時に使う方法だよ。このシミュレーターで言うと、まず「制約」の線が引かれて囲まれた領域(実行可能領域)ができる。その中で、上のスライダーで変えられる「係数 c₁, c₂」で決まる目的関数の直線を一番上にずらしていき、領域に最後に触れる点が答え(最適解)になるんだ。
🙋
え、スライダーを動かすと直線の向きが変わるんですね!でも、領域の角(頂点)に必ず答えがあるのはなぜですか?
🎓
いいところに気づいたね。目的関数の直線を平行に動かして値を上げていく時、最初にぶつかるのは多角形の領域の辺か角だよね。でも、もし辺の真ん中でぶつかっても、その辺の両端の角のどちらかは同じ目的関数の値か、それ以上になることが数学的に証明されているんだ。だから、角を調べればいい。これが「最適解は頂点にある」という原理で、シンプレックス法の基礎でもあるよ。
🙋
シンプレックス法って、この図の上ではどう動いているんですか?シミュレーターで見られますか?
🎓
見られるよ!シンプレックス法は、今いる頂点から「目的関数が最も良くなる方向」の辺を選んで、隣の頂点にジャンプすることを繰り返すアルゴリズムだ。このシミュレーターの「逐次ステップ表示」を使うと、頂点から頂点へと解が移動していく様子がアニメーションで確認できる。実務では変数が何百もあるので図は描けないけど、この「頂点を辿る」考え方は全く同じなんだ。

よくある質問

追加した制約条件が既存の制約と矛盾している可能性があります。例えば、x1 + x2 ≤ 5 と x1 + x2 ≥ 10 のように、同時に満たせる領域が存在しない場合、実行可能領域は空になります。各制約の係数と右辺値を確認し、矛盾がないか見直してください。
目的関数の等高線が実行可能領域の辺(線分)と平行になると、その辺上のすべての点が最適解となります。これは「代替最適解」と呼ばれ、係数c1, c2の比率が制約式の傾きと一致した場合に発生します。感度分析タブでその影響を確認できます。
非有界問題(目的関数が無限大に発散)または実行不可能(初期解が存在しない)の可能性があります。グラフ上で実行可能領域が閉じているか、すべての変数が非負制約を満たしているかを確認してください。領域が開いている場合は、追加の制約で閉じる必要があります。
目的関数の係数や制約の右辺値を変化させても、現在の最適基底(最適頂点の組み合わせ)が変わらない範囲を示します。例えば、c1の許容増加が2なら、c1を+2まで増やしても同じ頂点が最適解です。これを超えると別の頂点が最適になります。

実世界での応用

生産計画・資源配分:限られた機械の稼働時間、原材料、人材の中で、複数製品をどれだけ生産すれば総利益が最大になるかを決定します。まさにこのシミュレーターのモデルそのもので、制約の右辺値(b)を変えた時の感度分析(RHS ranging)は「あと原料がいくつ増えたらどれだけ利益が増えるか」を現場でよく検討します。

物流・輸送問題:複数の工場から複数の倉庫へ製品を輸送する時、輸送コストを最小化する配送計画を立てます。変数は輸送量、制約は工場の供給能力と倉庫の需要です。線形計画法の典型的な応用分野です。

CAEにおける構造最適化:構造物の重量を最小化しつつ、応力や変位の制約を満たす設計を探す「トポロジー最適化」の初期段階や、その線形近似モデルとして線形計画法が用いられることがあります。材料の有無を0/1で決める問題は整数計画法になりますが、その緩和問題として解かれます。

プロジェクトスケジューリング:各工程に必要な時間とリソース(人員、設備)の制約のもとで、全体の工期を最短化する問題などに応用されます。クリティカルパス法(CPM)のリソース制約付き版などが該当します。

よくある誤解と注意点

このシミュレーターを使い始めるとき、特に実務を意識する場合、いくつか気をつけておきたいポイントがあります。まず、「グラフが描けるのは変数が2つの場合だけ」という根本的な限界を理解しましょう。製品AとBの2種類なら視覚化できますが、実際の生産計画では製品C、D…と変数が増えます。その場合はシンプレックス法などの数値解法に頼る必要があり、このツールで学ぶ「頂点を探す」概念がアルゴリズムの基礎になります。

次に、制約条件の設定における現実性の見落としです。例えば、機械の稼働時間を「x₁ + 2x₂ ≤ 8(時間)」と設定しても、これは連続運転が前提。実際にはセットアップ時間やメンテナンスを考慮しないと、得られた最適解をそのまま実行できません。また、係数(例えば単位利益c₁)を固定値で考えるのも危険で、実際には原材料費の変動で変化します。だからこそ、ツールに備わった感度分析機能で「この係数がどれだけ変われば最適解が変わるか」を確認する癖をつけましょう。

最後に、「非負」以外の制約を見逃さないこと。ツールの標準形は変数が0以上ですが、実問題では「製品Aは最低100個は生産せよ」(x₁ ≥ 100)のような下限制約や、「在庫はちょうど使い切る」(等式制約)が出てきます。これらの制約は、シミュレーターで学んだ基本形に変形(例えば、x₁ ≥ 100 なら、新しい変数 x₁' = x₁ - 100 と置き換えて x₁' ≥ 0 とする)してから解く必要があります。