どうも、子供の教育費のシミュレーションをソルバーでやっていた主婦です。
月々いくらあったら私立中学に行かせられるのかなとか・・・自転車操業前提だとどうなのかなとか、そんな生々しい条件の数々をソルバーに淡々と計算させていました。
そんな間違ったソルバーの活用方法はともかくとして、アドインソフトって何なの?ソルバーどこにあるの?ソルバーって何やってんの?というもっと根本的な、それでいて一見すると分かりづらいところを説明できたらなぁと思って記事を書いています。
数学苦手マンが頑張って難しい言葉を使わずに「なんとなくわかった気がする」を目指します。
▼PICK UP!▼
ソルバーとは何か?簡単ザックリ説明ソルバーについて
ソルバーアドインとは
ソルバーとはMicrosoft OfficeのExcelについている最適化分析ツールです。
最適化分析ツール・・・小難しいイメージの言葉ですが、簡単に言うと「条件が色々あって手計算では難しい問題の答えを出してくれる」という感じ。
なんでそんな難しいことがExcelに出来るかというと、それはパソコンの演算能力を使って「こっちはどうかな?」「あっちの数値はどうかな?」ととにかく計算回数をこなしてやってくれるからです。
で、このソルバーですが「アドイン」と呼ばれるものです。
アドインとはソフトに対して後から拡張できるツールのようなもの。
ソルバーはExcelに標準で付いている拡張パックのようなものなのです。
いやいや、拡張パックって普通お金かかるやん?って思われますが、ソルバーアドインはExcelさえあれば無償、いつもは見えないだけなのでスイッチをONにしてあげれば使うことが出来る拡張機能となっています。
そのスイッチはどこにあるの?というところから見ていきたいと思います。
ソルバーのアドイン追加方法
※私が使っているのはちょっと古くて、Excel2007なので見た目や色雰囲気が若干違うかもしれませんが、基本的なボタン配置などは変わっていないと思いますので「同じ文字が書いてある部分」を探してみてください
まず、ソルバーが現時点でOFFになっていることを確認します。
データのタブの一番右、グループ化のさらに右にソルバーが出てくるようになるので、まずここにソルバーが出ていないことを確認してください(すでにソルバーが出ている場合にはもう使うことができます)
ファイルのタブを押すと今開いているエクセルファイルの情報が出てきますね。
その中で左の列の下から二番目「オプション」を選択します。
すると「Excelのオプション」というウィンドウが出てきます。
このウィンドウの左の列下から二番目に「アドイン」というところがあるので選択。
ここに、現在アクティブ(=ON状態)のアドインとアクティブでない(=OFF状態)のアドインが表示されます。
・・・と、並んでいるのは実はどうでもよくって(笑)、一番下の管理という部分に『Excelアドイン』とあるプルダウンと『設定』というボタンがあります。
プルダウンの中には
●COMアドイン
●操作
●XML拡張パック
●使用できないアイテム
等が並びますが、必ず『Excelアドイン』に合わせて「設定」ボタンをクリック。
すると「アドイン」という小さいウィンドウが出てきて、使えるアドインの種類が選べます。
この中で「ソルバーアドイン」にチェックボックスを入れて、OKで確定
するとこのように
データのタブにソルバーが出てきて使えるようになります。
これで準備はOKです。
ソルバーの使い方
ぶっちゃけますと、くどくどした説明を読むよりもやってみた方が速いブツだと感じています。
なのでもしよければ一緒に問題を一つ解いてみてください。
今の計算がそのままできるExcelのシートのダウンロードする
※良識の範囲内でご利用ください。再配布などはお控えください。
ただ、数学苦手マンが作っているのでもし間違いなどありましたらご一報いただければと思います。
A~E商品のそれぞれの価格は以下の通りです
A商品:12万円
B商品:30万円
C商品:46万円
D商品:75万円
E商品:98万円
予算1000万円を使い切るようにそれぞれの商品を買うとき、合計個数が最大になるように買うにはそれぞれ何個ずつ買えばいい?
ただし条件は以下の通り
①A商品とB商品は大人の事情で同じ個数買わなければならない
②大人の事情で全ての商品は1個以上買わなければならない
さて、シートはこのようになります。
数字を手入力する部分と、計算式を当てはめる部分とがあります。
これをソルバーにお願いする際には(データタブのソルバーを押して)
このように代入しています。
仕入れ個数の部分の数字を変化させて、合計個数が最大になるところを探してもらうわけです。
しかしこれだと、合計金額がいくらでも大きくなってしまいますし、Excelは人間じゃないので商品を0.5個とかで買ってきかねません。
また、条件①②も付け加えなければなりません。
そのため、ソルバーのパラメータのウィンドウの中央にある「制約条件の対象」を使ってそのあたりの条件付けをしていきます。
まずは今回の問題に必要な条件の確認。
②商品は1個以上 → C2~C6≧1
③商品は整数 → C2~C6=整数
④1000万円ピッタリ使い切る → C7=C9
これらを制約条件として付けくわえていきます。
追加を押すと制約条件を入力するウィンドウが出てきます。
条件①A商品とB商品は同じ個数→C2=C3
それぞれのセルを参照して、真ん中のプルダウンで「=」を選びます。
そして追加ボタンをポチると入力していた内容が消えますが、これは反映された証拠なので大丈夫、続けて他の条件も入力していきます。
条件②商品は1個以上→C2~C6≧1
左側のセルだけC2~C6のセルを参照しています。
右側の制約条件のところの「1」は手入力。
真ん中のプルダウンは「≧以上」を表わす「>=」を選びます。
ソルバーでは
以下・≦ → <=
と表します。
「未満<」と「より大きい>」は使えないので注意してください。
入力出来たら追加でさらに続けて入力。
条件③商品は整数→C2~C6=整数
左側はC2~C6をセル参照、真ん中のプルダウンで整数integerを表わす「int」を選ぶと、自動で右の制約条件に「整数」と入力されます。
条件④1000万円ピッタリ使い切る→C7=C9
C7セルとC9セルをそれぞれ参照して=でつなぎます。
ただしC9セルに入っているのは「1000」という手入力した数値なので、ここで右側の制約条件のセルに「1000」と入力しても何ら変わりはありません。
最後にOKを押すと元の画面に戻ってきます。
全て入力されていることを確認したら
最後にサマーウォーズ並みに「よろしくおねがいしまあああああああすッ!」と叫びながら解決ボタンをぽちっと押してください。※お気持ちだけで十分です
するとソルバーの結果が出てくるので
OKをクリックすると数字が確定されます(ちなみに確定してから戻るを使って元の状態に戻せないので、もし戻したい場合には変更セルの数値を他の場所にコピペしておく)
ちゃんとすべての条件をクリアした数値が出てきていると思います。
ということでめでたしめでたし。
ソルバーって何やってるの?
・・・・ってやってはもらったけど、一体ソルバーって何やってるの???
画面の左下で素早く数字が動いたかと思ったら何のことか分からないうちに答えが出てきてしまった・・・・と、私も最初は思っていました。
イメージとして、ソルバーのシートはこんな感じになっています。
人間が計算していくと、この「何個だといいんだろう?」を何度も何度もやらなければいけません。
イメージとしてはこんな感じに・・・
コレを手で計算して比較して行くのは大変→じゃあパソコンにお願いしましょう!ということで動かしているのがソルバーです。
ちなみに今回の問題も、一瞬ですがざっと350回ぐらい?やっているようにちらりと見えました(もっと複雑なものだと、回数が止まる前に見えるんですが簡単だと見えずに終わってしまう)
ソルバーは間違えることがある!
こんな風に全部計算しているのかぁと分かったところで、実はこれだけ計算していてもソルバーは間違えることがあります。
というのも、この何度も数字を入れて確かめるのをただやみくもにやっているわけではなく「今回はこの数値でやってみよう」「こっちの方が大きくなりそうだな」「小さくなったからこの数値じゃないな」という風にある程度数字が目的の値に近づくように代入を試みています。
それはまるで目隠しをして山に登るかのようで・・・
足元の感覚で「こっちの方が高そうだ・・・」「こっちは低いからこっちじゃないな?」というように一歩ずつ(計算一回ずつ)頂上を目指します。
・・・・が、もし万が一、山がいくつも小さな頂上を持っていて、間違った頂上の方が近くにあったら?
こんな風に、「こっち高いぞー高いぞーココが頂上だ!」って思ったところが、実は頂上だけどちょっと違った!なんてことがあります。
これを回避するためには、初期値を色んな種類で試してみる必要があります。
つまり山を登り始める地点を色々変えて試してみるということです。
今回の問題だと商品の個数の部分です。
すると別のもっといい解が見つかったり、複数解だったりすることが判明するかもしれません。
色々な初期値(結構極端な物でも構わないと思います)を試してみてください。
最後に
数学が苦手なのに統計学の研究室に入ってしまいソルバーを使っていたのですが、分からないから分からないなりに難しい言葉を極力排してザックリと解説しようとするとこうなりました。
正確なところをいくとアルゴリズムとか、本当の意味ではちょっと間違っている部分もあるかもしれませんがあくまでザックリとした理解です。
こういった部分を理解しなくてもソルバーは使えます。
ですが、理解しておくと数式を複雑化させたり、パラメータを増やしてみたりと色々な応用が利くので、もしよければ頭の隅に留め置いてもらえたら嬉しいです。
スポンサーリンク
コメント