お勧め書籍
記事のリクエスト−投票受付中
アクセスカウンタ
964723

0067 :昨日
0002 :今日
トップ  >  OpenOffice.org 3.0 の新機能  >  ソルバー機能を比較する(その2)
第1部に続いて「ソルバー」機能について解説します。

「ソルバー」というのは、最適値を求めるのを支援するツールです。「ゴールシーク」と似ていますが、「複数の‘変化させるセル’の組合せ」を求めることができます。そのとき、さまざまな制約条件を設定することができます。
ここでは、Calc3.0の新機能「ソルバー」について、2部構成で解説しています。

第1部では、Excelの「ソルバー」や、Calcの旧バージョンで拡張機能として提供されていた「ソルバー」と、機能構成を比較しました。 ( → 第1部へ )

第2部では、実際にソルバー機能を使ってCalcとExcelで同じ問題を解いてみましょう。

では、まず比較用のサンプルとして作成したファイルを説明します。

画面01は、700MBのCD-ROMに、データを効率よく収録するための組み合わせを探索しています。

「データを収録するのに必要なCD-ROMの枚数」

画面01(クリックで拡大)
テスト用のサンプルファイル(Calc)




収録しなくてはならないデータは、450MB×10個、280MB×15個、210MB×30
個、120MB×45個の、全部で100個のデータがあるものと設定しています。

画面02
保存データのサイズと個数




(注)この設定内容は、どのようなものでも良いのですが、簡単に分かってしまう設定では意味がありません(たとえば350MBのデータが5個だけなら、700MBのCD-ROMが何枚必要かはすぐに分かってしまいますよね)。その点を考慮して、適当に設定しました。

さて、どのように組み合わせれば、CD-ROMの枚数を最小にできるでしょうか。この問題の内容をまとめてみましょう。

 ・CD-ROMの枚数を最小化するので最小化問題です。
 ・ファイルは分割して収録することはできないものとします。したがって、整数問題です。
 ・制約条件は、
   (1)CD-ROMの容量
   (2)すべてのデータを収録

これを計算するために、可能な組み合わせてを探って、一覧表にしてみました。
「組合せA」から「組合せJ」まで、10種類の組合せが考えられます。

画面03(クリックで拡大)
考えられる組合せパターン




できるだけ効率よく収録するのですから、ここにあげた組合せだけを考えれば良いことになります。
1枚のCD-ROMに収録するデータのMB数は、SUMPRODUCT関数を使って計算できます(数式バー参照)。数式を右方向にコピーすることを考慮して絶対参照と相対参照を組み合わせています。

仮に、すべてのパターンを5枚ずつ作成したとして、どのくらいのデータを収録できるかを計算してみましょう。(黄色の部分)

画面04




収録できるデータの個数も、SUMPRODUCT関数を使って計算できます(数式バー参照)。こちらも数式を下方向にコピーすることを考慮して、絶対参照と相対参照を組み合わせています。

組合せを工夫することで、CD-ROMの枚数は、50枚よりもだいぶ減らすことができそうです。

合計欄を作成したら、準備完了です。実際にソルバー機能を使って見ましょう。

画面05
(冒頭の画面01と同じものです)




Calc3.0の「ツール」−「ソルバー」コマンドでダイアログを表示して、次のように設定します。
「ターゲットセル」と「最小化」を設定します。
「変化させるセル」の範囲を設定し、「制約条件」を指定します。

画面06





続いて、「オプション」ボタンをクリックして、「変数を整数と設定」および「変数を負の値でないと想定」をチェックします。

画面07




ダイアログでの設定が完了したら、「解決」ボタンをクリックすると、結果が表示されます。

画面08




組合せを工夫することで、30枚のCD-ROMで全データを収録できることが分かります。
D4:D7を見ると、まったく無駄がでないで、効率よく収録できていることが分かります。



では、同じ問題をExcelのソルバーで解き比べてみましょう。
設定条件は、まったく同じです。

画面09(Excel)




「データ」−「分析」−「ソルバー」コマンドで、ダイアログを表示して次のように設定します。

画面10




第1部でも触れたのですが、Excelの場合には「追加」ボタンをクリックして「制約条件の追加」ダイアログで条件を設定します。また、整数条件もこの方法で制約条件として設定する必要があります。

画面11




「オプション」ダイアログでは、「非負数を仮定する」チェックボックスを選択します。「線形モデルで計算」もオンにしておきましょう。(これによって計算を高速化することができます)

画面12




「実行」ボタンをクリックすると結果が表示されます。

画面13





このExcelのソルバーの結果を、Calcと比べてみましょう。必要なCD-ROMの枚数はどちらも30枚で同じですが、組み合わせる内容の部分は違っています。

それというのも、ソルバーは、繰り返し計算によって解を探り、一定の条件に達したときに結果を表示するからです。
したがって、表示される結果はさまざまです。また、表示された結果が絶対に正しいという保証はありません。初期値を変更すると、さらによい結果が得られることも、しばしばあります。

このモデルを使って、いろいろな条件で、また初期値を変化させて、何度かテストしてみたところ、次のような結果でした。

・全体的にExcelよりもCalcの方が高速に解を見つけることができる。
・Excelが解を見つけることができなかったケースがある。その場合も、Calcでは解を見つけることができた。


画面14
Excelが、既定時間内に解を見つけることができなかったケース
(Calcでは、すぐに解を見つけることができた)




上記は、たまたま今回のモデルでの結果かもしれませんが、参考にしてください。


−−−−−
下のボタンをクリックしてもらえると、筆者の励みになります。よろしくお願いします。


プリンタ用画面
投票数:353 平均点:6.80
前
ソルバー機能を比較する(その1)
カテゴリートップ
OpenOffice.org 3.0 の新機能
(c) 2003-2008 Mikihiko Matsui All Rights Reserved.
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Theme Desinged by OCEAN-NET