SSブログ

Mac用プロットライブラリ-15「線形計画問題の行列表現」 [考え中 - プロットライブラリ]

くそー、まだ梅雨じゃないのに雨が降ってなんにもできない。
自転車はもちろん、しばらく布団を外に干してない。
土日ぐらい気を利かして晴れろよ、ばかやろー。

ということで暇なので、プロットのはみ出し問題を解決するための線形計画法のお勉強の続き。

行列表現と標準形

標準形に変形した結果、問題はN(>n)個の変数に対するM(>m)個の等式の条件とすべての変数に対する非負制約のもとでの評価関数の最小化と言う問題になる。

この標準形に変形された問題を、行列のかっこうに書き直すと
0528eq11.png

の制約のもとで
0531eq13.png

を最小にするxを求める、ということになる。ここでa.bはベクトルabの内積である。

こう書くと連立1次方程式みたいだけどスラック変数のせいで条件式の数だけ変数が増えているので式-11は変数の数の方が方程式の数より多い不定の方程式になっている。

スラック変数を含めた変数の数がN個で、条件式の数がM個であるとする。ということは行列AはN>MのM×N行列(横長)ということになる。

従ってこれは、N次元空間内の式-11で決まるM次元部分空間の内部で、少なくともN-M個の座標(変数)が0になっていて残りは正の点(これはもとの問題のn次元空間内の凸多角形の頂点にそのまま対応する)のうちから評価関数を最小にするものを選ぶ、という問題になる。

そう考えると、直感的には何となく
  1. M次元部分空間の内部で、少なくともN-M個の座標(変数)が0になっている点をなんでもいいから見つける
  2. 0でない変数を0にして(そのとき0だった変数は0でなくなる)評価関数が小さくなるものを探す
  3. そうやって0の変数を入れ替えて評価関数が最小のものを探す
としたらいいかな、と言う気がしてくる。どうやらこれがシンプレックス法の考え方らしい。

シンプレックス法のための前準備

この問題に対してまず、Aの独立な列(縦方向)ベクトルをM個取り出して、それを行列Aの前の方に並べ余った縦ベクトルをその後ろに並べた行列を作る。条件式にひとつづつスラック変数が含まれている(少なくともM個あってその要素は0ではない)ので、これは常に可能である。もちろん、それに従ってベクトルxcも要素の順番を入れ替えて番号を振り直しておく。つまり順番を入れ替えたあとの行列Aを、
0531eq14.png
と分解する。

さらに、ここで解ベクトルも二つに分解する。
0528eq15.png
さらに評価関数の係数cも同様に
0528eq16.png
とすると、評価関数zは
0531eq17.png
と分解できる。 また、それぞれ分解したベクトルの0でない成分を抜き出した短いベクトルを
0528eq19.png
と書くとxUとcUはM次元ベクトル、xVとcVはN-M次元ベクトルであるが 式-18の評価関数zは
0531eq23.png
と書ける。 また、このUの0でないM×M小行列をBとする。つまり
0531eq25.png
ついでにVの0でない(N-M)×M小行列をNとしておく。つまりこれも
0531eq26.png
ごちゃごちゃと書いてきたが、ようするにこれらの小行列と短いベクトルを使えば式-11は
0531eq27.png
の条件の下で
0531eq30.png
を最小にする問題に変形できる。 これだけだとなーんにも変わっとらんがな、と思うけど実はこの変形は役に立つ。 長くなったので続きは別稿にしよう。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。