2008年10月15日水曜日

OpenOffice Calc の ソルバー機能

オフィススイート「OpenOffice.org 3.0」が正式公開 によると

表計算機能「Calc」では、作業領域が1シートあたり最大1,024列に拡大。連立方程式のように複数の可変要素を含む計算を自動処理するソルバー機能や、複数のユーザによるコラボレーションを可能にするスプレッドシート共有機能、Excel VBAのサポートなどが追加された。

ん? 「ソルバー機能」って何だろう。

 

問題

調べてみると、ソルバー演習 の説明ががわかりやすかった。

お友達の家に行くことになりました。おみやげにケーキを買って行こうと思います。8個入りの箱に、予算2500円で250円のショートケーキと350円のチョコレートケーキを入れて持って行きたいのですが、それぞれ何個にすればいいでしょうか。

(同上より)

予算 2500 円ならケチって 250 円のショートケーキを 8 個で 2000 円で済ませたいところだけれど、そこは見栄もあり、その予算内で高いチョコレートケーキもできるだけ入れたいというのが人情。 ^^;

 

方法

あ~、何かそんな問題ってあったなぁと思いつつ考えてみると、ショートケーキの個数を x 、チョコレートケーキの個数を y として、トータルの購入金額を Z と置くなら、

Z = 250x + 350y

Z は x, y の値によって様々に変わる。

ところで、ケーキは 8 個必要なので、

x + y = 8

予算は 2500 円以内なので、

Z <= 2500

この条件において Z を最大にする x, y の個数は何かという問題だとわかる。

Z を消して、 x, y についての関数をグラフにすると、

081015-011

上の二つの交わるところが丁度求めたい値となる。

 

ソルバー

これを求めることができるのが「ソルバー」機能。上記のサイト の説明を Calc に置き換えて読む。

最初にソルバーを使うための準備。下図のように、ショートケーキ、チョコレートケーキのそれぞれの 1 単位分を入力し、合計をオート Sum を使うなどして求めておく。

次に、メニューより「ツール > ソルバー」を選択。ダイアログが表示されるでので、以下のように 4 つの値を入力。結果の最適化は「最大値」が選ばれていることを確認したら、計算を行わせる。

081015-003

 

結果、最適な値が求められ、そのときの数量が表に記入される。

081015-004

 

求める値が「整数」であってほしいときは、先ほどのソルバーの設定ダイアログの「制約条件」の「関連付け」で、次のように「整数」と条件に加えるとよい。

081015-012