20代SE 忘備録

普段自分が考えたことや学んだことを忘れないように書いていきます。

EXCEL ソルバーによる線形計画法の解き方

EXCEL ソルバーによる線形計画法の解き方

 今まで、線形計画法について調べてみましたが、EXCELソルバーによる解き方を調べてみました。残念ながらExcel2007しかもっていないので、Excel2007での説明になります。

 

sy0807j.hatenablog.com

まず、Excelのオプション-アドインよりソルバーアドインを追加してください。

 

f:id:SY0807J:20160403103542j:plain

f:id:SY0807J:20160403103559j:plain

これで、データタブよりソルバーが追加されました。

 

f:id:SY0807J:20160403103812j:plain

 

 

さて、以下で紹介した問題を例にしてExcelソルバーの使い方を解説します。

 

sy0807j.hatenablog.com

 

f:id:SY0807J:20160403104154j:plain

まずは、Excelに以下のように入力します。

黄色のセルはそれぞれ左からx1,x2,x3の値を表します。ここのセルの値を変化させて解を見つけていきます。

 

f:id:SY0807J:20160403104750j:plain

 

また目的関数の値を式として入力します。

f:id:SY0807J:20160403105057j:plain

そして制約式も入力します。

f:id:SY0807J:20160403105523j:plain

f:id:SY0807J:20160403110103j:plain

f:id:SY0807J:20160403110132j:plain

ここで、ソルバーを起動します。そして目的関数を制約条件を入力します。

またオプションにて「線形モデルで計算」にチェックを必ず入れてください。

そして実行します。

f:id:SY0807J:20160403110657j:plain

結果として(x1,x2,x3) =(10.29412,36.02941,18.38235)という最適解が得られ、そのときの目的関数の値は-300となります。

 

 

 

 

 

線形計画法について調べてみた(代数による方法)-2

線形計画法について調べてみた(代数による方法)-2

 前回に引き続き、代数による線形計画法の解き方について具体例を用いて考えていきます。 今回は前回よりもう少し抽象的なことも考えていきます。

sy0807j.hatenablog.com

 

今回は以下の問題を例にして、考えていきます。

f:id:SY0807J:20160325235949j:plain

ところで、一般的に最適化問題は関数が最大もしくは最小となる解を求める問題ですが、どちらの場合でも統一的に考えれるように最大化問題は目的関数の符号を反転させて最小化問題にしましょう。すなわち以下の問題を解きます。

f:id:SY0807J:20160326082937j:plain

また、前回のブログでも書いたように最適解を探す際には、制約条件を満たしつつ変数の値を変えていきます。不等式ではわかりづらいため等式に変形して扱うことにします。つまり

f:id:SY0807J:20160326083709j:plain

ここで変数はすべて非負とします。また不等式を等式にするために投入したs1,s2,s3をスラック変数と呼びます。

また以下のようにおきます。

f:id:SY0807J:20160326101230j:plain

そうすると対象の問題は以下のようになります。

このように標準的な形に線形計画問題を記述することができました。

f:id:SY0807J:20160326095323j:plain

さて、では今回対象の問題を解いていきましょう。

まず、制約式①~③を満たす解として(x1,x2,x3,s1,s2,s3) = (0,0,0,200,250,300)が容易にわかります。ここから目的関数をより小さくすることができるかどうか調べましょう。

目的関数の係数ベクトルcをみると、x1,x2,x3の符号が負です。したがって、これらを大きくすると目的関数はより小さくなります。またもっとも係数が小さいx2の値から大きくしていきましょう。このとき、x1,x3は0なので、制約①~③を満たすようにを大きくすると最大50まで大きくすることができます。このとき目的関数は

 

f:id:SY0807J:20160326191952j:plain

となります。

ここで目的関数をみるとx2を減らして、x1,x3を増やすことでより目的関数を小さくできそうです。x2を50まで大きくしましたが、これは制約式②によるものなので、この式を満たしつつ目的関数の値を変化させることを考えます。式②を使って、式④からx2を消すと

z = 5x1+6/5x3+6/5s2-300となります。また、x2が50のとき、x1 = 0、x3 = 0、s2 = 0であり、それらの変数の係数が正であるため、これ以上目的関数の値を小さくできないため、(x1, x2, x3)=(0,50,0)が最適解であり、このときの目的関数の値は-300となります。

 

 

 

線形計画法について調べてみた(代数による方法)

線形計画法について調べてみた2

 

 さて、前回は図解法による線形計画問題について載せましたが、変数が多くなってくるとこの方法では手に負えません。そこで代数による方法を考えてみましょう。

 

sy0807j.hatenablog.com

 

まず問題は前回と同じで以下のようにな

っているとします。

 

f:id:SY0807J:20160321142103p:plain

 

 ここで制約条件①~④までを満たす、x1, x2の組み合わせとして(x1, x2) = (0, 0)の組み合わせがあることがわかります。このとき、目的関数の値は0です。ここから目的関数を増加させていきましょう。目的関数の係数が10と7なので、とりあえず係数が大きいx1を大きくすることで目的関数を大きくしましょう。

さて、x1を大きくするという方針は決まりましたが、制約条件①、②があるので大きくできる値には限りがあります。制約条件①をみるとx1 = 90が最大、制約条件②をみるとx1 = 40(120÷3)であることがわかります。制約条件①、②は同時に満たす必要があるため、x1= 40がとりうる最大のx1であることが分かります。(このとき制約条件②よりx2 = 0)

このときの状況は下記のようになります。

 

f:id:SY0807J:20160321142703j:plain

さて目的関数⑤をさらに大きくするにはどうすればいいでしょうか。

⑤式よりパターンとしては3パターン考えられます。

1. x1→増、x→増

2. x1→増、x→減

3. x1→減、x→増

 しかしながら②'よりx1はこれ以上大きくできないため、パターン3、つまりx1を減らしつつ、x2を増やして式⑤を大きくすることを考えましょう。

ここで、②'にはもう余裕がないため、②’を満たしつつx1を減らして、x2を増やすことを考えます。そうするとそれぞれの係数が3と5なので、x1を1減らすとx2は3/5増やせることがわかります。このとき目的関数は -10 + 7 × 3/5 = -29/5 < 0 より減少してしまうことがわかります。(x1を1減らしてもx2は最大3/5までしか増やせないです。)

したがって、これ以上目的関数を大きくすることはできないので(x1, x2) = (40, 0)が最適解であることがわかります。

 

次回はまた別の問題を例にしてもう少し具体例を扱ってみます。

 

 

 

 

 

2016年3月19日(土) 昼食 カルボナーラ

2016年3月19日(土) 昼食 カルボナーラ

 

 だんだんと暖かくなってきた休日、ついグダグダしてしまい、気づいたらお昼でした。(^^;)

午前中はモンハンをやって、漫画読んでゴロゴロして。。。なんていうまるでダメ人間まるだしな生活してました。まあ、平日一生懸命働くんだからたまにはいいですよね。

 

 そんなグダグダな日のお昼ご飯は以下のようになってます。うーん、やはり野菜がないのがいまいちですよねぇ。晩御飯はちゃんと野菜をとるようにしなければ!!

 

【メニュー】

 ・カルボナーラ

 

 【価格】

 カルボナーラ

 → パスタ(30円)+ レトルトソース(100円)+ベーコン (50円)

 Total 180円

 

 そういえば、午後からは掃除をしようかなと思います。暖かくなってくると掃除をしたくなりますよね。あ、逆か。寒いとしたくないんですよね。そもそも動きたくないですし。しかし暖かくなってくると掃除をして、部屋も気持ちもスッキリさせたいです。やっぱり部屋が汚いと気持ちも暗くなるし、リフレッシュするには掃除はとてもいいと思います。趣味は何ですか?休日は何してるんですか?と聞かれたら自信をもって、趣味は掃除です。休日は掃除してます!!なんて答えたいです。今もっている掃除機が割かし大きいので、もっとコンパクトな掃除機がほしいです。

 

 

 

 

線形計画法について調べてみた1

線形計画法について調べてみた1

 線形計画法とはシステム工学、Industrial Engineering(IE)、Operations Research(OR)等で広く使われている手法で、ある条件(線形式で与えられる)のもと、ある目的(こちらも線形式で与えられる)が最大もしくは最小となるような変数値を求めるものです。

なお、上記のような問題を線形計画問題と呼びます。またこの手法は1947年にDantzigにより考案されてから、様々な分野で広く使われています。

 

 さっそくですが、高校の教科書にも出てくるような、簡単な線形計画問題を見てみましょう。また生産条件は表1のようになっているとします。

【問題】 ある2種類の製品P1,P2はそれぞれ2種類の原料M1,M2から作られるものとする。P1とP2の生産条件が以下のようになっているとき、利益を最大にするにはP1と P2はそれぞれいくら生産すればよいか。

 

f:id:SY0807J:20160313215136j:plain

 この表の見方としては、製品P1を1トン作るのにM1が1トン、M2が3トンが必要で、その利益が10万円となります。また、製品P2を1トン作るのにM1を5トン、M2が5トン必要で、その利益が7万円となります。なお製品P1の生産量をx1トン、P2の生産量をx2トンとすると、表1の生産条件は以下のようになります。

f:id:SY0807J:20160313123919j:plain

 ここで利益を最大にするようP1の生産量とP2の生産量を決めることになりますが、利益が大きいP1ばかりを作ると、原料M2が余ってしまいます。したがって、P1のみを作ればいいわけではないことが分かります。

また、上記制約条件を満たす領域は下図で与えられます。この領域内にて、目的関数が

最大になる点を探します。探し方としては10x1 + 7x2 = k(一定)として,

kを変化させつつ、kが最大となる点を探します。ちなみに今回の場合は、②式とx軸の交点(x1,x2) = (40,0)において目的関数の値が最大となります。f:id:SY0807J:20160313122638j:plain

 しかしながら、製品の種類が3つ、4つと増えた場合はどうでしょうか。この作図法では求められません。実際の問題、例えば石油化学プラントにて月の生産計画を立てる際には数千もの変数を扱わなければなりません。では変数が増えた場合はどのように解くのでしょうか。次回に続きます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2016年3月12日 朝食

2016年3月12日 朝食

 やっと1週間が過ぎました。仕事をしていると週末は、やっと1週間終わったっていう感覚になりますよね。過ぎてみればあっという間なんですが。

 僕は休日のコーヒータイムが好きです。何か本当にリラックスしたっていう感じになります。平日もコーヒーや紅茶を飲むんですが、そこまでリラックスしたっていう感じはしないです。やはり仕事をしていると気が張っているからでしょう。

 コーヒーといえば、一度ベトナムコーヒーというのを飲んでみたいです。この前ネットでベトナムに旅行に行った方が写真をアップしてましたが、暑い国で屋台のベトナムコーヒーを飲むなんて憧れてしまいます。

 ところで、話は変わりますが、そんなベトナムコーヒーに憧れる僕の朝食は以下のようになっています。全然コーヒーの要素もベトナムの要素もないですね。というより僕はこの鮭茶漬けメニューが多すぎですかね?さらっと食べれるのでどうしてもつくってしまいます。まあ、僕はすぐ飽きちゃうんでまた「自分の定番」メニューを見つけないとなぁって思います。

 

【メニュー】

 ・鮭茶漬け

【価格】

 ・鮭(60円) + お茶漬けのもと(40円)+ ごはん(30円) + ねぎ(30円)

 

 Total 160円

愉楽の園を読んで

愉楽の園を読んで

 僕は宮本輝さんの本が好きで、特に気に入っているのが「愉楽の園」というタイのバンコクを舞台にした小説です。彼の小説を読み始めるとどんどん続きが気になってしまい、あっという間に読み終わってしまいました。この本では恋愛、人間愛、生死、欲望というような様々なテーマがあるように思います。したがって、話も混沌として進んでいくような気がしますが、舞台がタイということもありその混沌さが心地よく感じます。またこの小説そのものがタイの雰囲気(ジメジメして暑く、混沌とした感じ)をよく表現できていると思います。

 

 ただ読んでいてよくつかめなかったのが、恵子の心の動きです。もちろん様々なところで心が揺れるのを表しているのですが、なぜあのように心が動いていったのかは最後まで読んでも理解できなかったです。いや、きっと読みが浅いんだとは思うんですが。

またこの本ではサスペンスを中心に様々な人が関係していますが、このような話の作り込みはさすが宮本輝さんです。ドキドキ、ワクワクしながら読み進めつつも、あちこちにちりばめられたテーマ(さきほど述べたような)があり、自分も小説の中へと入り込んでしまいました。

 

 まだまだよくつかみきれていないところもありますし、そもそも話が面白いのでまた読み返してみようと思います。面白い作品っていうのは何度も読み返したくなる本だと思います。