6日目 8日目

7日目

目標

課題


課題 17

ゴールシークを理解する

課題16で作成した表を用いて、毎月の支払額を12万円とするために、必要な自己資金を データ分析機能(ゴールシーク)を用いて求めよ。 課題16の表の「自己資金」以外の赤字は既定値とする。


ゴールシークとは

一変数関数の目標値を与えて、該当する変数値を求める機能である。 数学的には方程式を解くことに対応するが、解析的に解くわけではなく、数値的に求めるため、幾つかの注意が必要である。 幾つかの例題を考える。


例題 1

周囲の長さが250cm であるような、正方形の1辺の長さを求めよ。

  1. 準備

    右のような表を作成する。 ライトブルーのセルには、式を代入すること。 本例題の場合は、正方形の全周と1辺の長さの関係であるから、 内容は "=B2*4" である。

      A B C
    1 正方形の1辺と全周の関係
    2 1辺の長さ 5 cm
    3 全周 20 cm
  2. 標準ツールバーの「ツール(T)」→「ゴールシーク(G)」を起動する。 あらかじめ数式の入っているセルをアクティブにしておくと、入力を減らすことができる。

    goal seak 1
  3. 条件の入力

    数式入力セルには、目標値を得たい「式」が入力されているセルを、 目標値にはその値を、変化させるセルには「式」から参照されている変数のセル(B2)を 代入する。(マウスで選択すると絶対参照で「$B$2」と代入される。)

    goal seak step 2
  4. 解の探索

    「OK」を押すと、解の探索が始まり、答が得られると、元のセルの値が変更される。

    goal seak step 3
  5. 結果の判断
    「OK」を選択すると、求められた答えで確定し、「キャンセル」を選択すると、「ゴールシーク」起動前の値に戻る。

例題 2

面積が144cm2であるような、正方形の1辺の長さを求めよ。

代入される式が変更されるだけで、行うことは例題 1の場合と同様である。


例題 3

ある直角三角形がある。 直角をはさむ2辺の和は 19cm であり、面積は 42cm2である。 直角をはさむ2辺の長さを求めよ。

例題 1), 2) と異なり、少し工夫が必要である。

問題文より、底辺を a, 高さを b, 面積を S とすると、

a+b=19
S=a×b÷2

の二式が成立するので、b を消去して、S=a(19-a)/2 とした上で、例題 1), 2) と同様に解けばよい。

式の変形等の作業を行わず、エクセルのセル参照機能を有効に用いることを考えた場合は、 次のような手順を取ることになる。

  1. 次のような表を作成し、ブルーのセルに適切に式を設定する。

      A B C
    9 直角三角形
    10 底辺 1 cm
    11 高さ "=19-B10" cm
    12 面積 "=B10*B11/2" cm
  2. ゴールシークを起動し、数式入力セルに「B12」、目標値に「42」、 変化させるセルに「B10」を指定する。

底辺の値として、小さな値(たとえば 1)を指定した場合と、大きな値(たとえば 18)を指定した場合の 結果の違いを観察せよ。


「ゴールシーク」は、数学的には

y = f(x)

という関係があるとき、y0 を与えることにより

x0 = f-1(y0)

を求めることに相当するが、幾つかの制約があるので注意する必要がある。


課題 18

ソルバー

課題 16 で作成した表にソルバーを適用することで、次の値を求めよ。

  1. 自己資金が 1000万円以下、毎月の支払額が 10万円以下の条件で購入できる最高額
  2. 3500万円の物件を購入し、毎月の支払額が 12万円としたときに必要な自己資金(課題 17と同じである)

ソルバーとは

多変数関数の目標値を与えて、該当する変数値を求める機能である。 課題17で学習した「ゴールシーク」は、 独立変数が一つにしか対応していなかったのに対し、「ソルバー」は 複数の独立変数を変化させることで、最適値を求めることができる。

さらに、最適値を求める際に、さまざまな制約条件を課すことができる点も異なる。

なお、「ゴールシーク」と同様、数値的に求める(内部での実現方法は異なる)ので、 注意が必要である。

注意

「ソルバー」は標準ではインストールされていないので、「ツール」メニューに 「ソルバー」メニューがない場合は、「ツール」→「アドイン」を選択し、 ソルバーアドインを登録する必要がある。

アドイン

練習問題 1

つるかめ算

鶴とカメがいて、頭の合計と足の合計からそれぞれ何羽(匹)いるかを求める問題として有名。 原形は今から1800年ほど前の、中国 漢・晋の時代の《孫子算経》の中に見いだせる。 元々の文章である次の問題に答えよ。

「今有雉兎同籠 上有三十五頭 下有九十四足 問雉兎各幾何」
(いま、キジとウサギが同じ籠に入っている。上には35の頭があり、下には94の足がある。 キジとウサギはそれぞれ何羽いるか?)

解答例

  1. 準備

    右のような表を作成する。(シート名は solver 1 とせよ) ライトブルーのセルには、式を代入すること。 言わずもがなであるが、ウサギは1羽につき、頭 1, 足 4 であり、 キジは1羽につき頭 1、足 2である。

    表に正しく式を設定すれば、この問題は 「C5 = 35 および D5 = 94 となるような B3 と B4はいくつか?」 と言うことになる。

      A B C D
    1 雉兎算
    2  
    3 ウサギ 1    
    4 キジ 1    
    5 合計      

    ちなみに、本問の場合、「頭」欄は不要かも知れないが、もし問題に出てくる動物が「やまたのおろち」だの、 「ケルベロス」だのに変わった場合は必須である。

  2. 「ツール(T)」→「ソルバー(V)」を起動し、目的セルを C5(クリックで選択すると絶対参照となる)、 目標値を「値 35」、変化させるセルに B3, B4 を設定する。

    solver 1

    「オプション(O)」をクリックすると、解の探索方法の細かな指定ができる。

  3. 制約条件の設定

    目的セルを設定しただけでは、まだ問題は解けない。 上の手順では、まだ足の数が設定されていないので、その条件を指定する必要がある。 そのためには「制約条件」の中の「追加(A)」タブをクリックし、 現れる右のウィンドウで条件を指定する。

    ここで注意するべきことは条件として、任意の式で書けるわけではなく、 ある「セル」の値についての条件を指定するという点である。 実際には、制約条件側に式を書く事も可能であるが、 あらかじめ条件を表現したセルを準備したほうが判りやすいと思われる。(D5 に相当)

    solver step 2


    以下の2つは同値であるが、どちらが判りやすいか?

    1. セル参照欄に「D3」、演算子に「=」、制約条件に「94-D4」と指定
    2. セル参照欄に「D6」、演算子に「=」、制約条件に「94」と指定

    真ん中のリストボックスで選択する「演算子」と制約条件に書くことのできる内容は右の表のようになる。

    演算子 制約条件に書くことのできる内容
    <= 数値、セル番地、式
    = 数値、セル番地、式
    >= 数値、セル番地、式
    区間 「整数」という文字列のみ
    これ以外の場合はエラーとなる
    データ 「バイナリ」という文字列のみ
    これ以外の場合はエラーとなる

    複数の条件を指定する場合は、「追加(A)」を、終了する場合は「OK」をクリックする。

  4. 条件の確認および実行
    制約条件などを確認した上で、「実行(S)」をクリックする

    solver step 3
  5. 解の探索

    「実行(S)」を押すと、解の探索が始まり、答が得られると、 セルに答えが表示される。

    実際にセルに反映させるには「解を記入する(K)」を選択して「OK」を押す。 この操作は元に戻せないので、注意すること。

    「OK」をクリックする前に、「レポート(R)」を選択しておくと、 得られた解についての初期値および最終結果、制約条件の満足度の 解の探索に関するレポートが別シートに作成される。

    solver step 4

練習問題 2

線形計画法

ある工場で、生産している製品の作成工程は大きく3つにわけることができ、 それぞれの工程で100個の製品を作成するのにかかる時間は次の表の通りである。

1人が100個作るのに必要な時間数
工程名 社員 アルバイト
工程1 4 6
工程2 2 6
工程3 8 12

なお、勤務時間は1日8時間、社員の日給は 12,000円、アルバイトの日給は 6,000円である。

現在、7人の社員と36人のアルバイトを次のように配置して、 1日に1,600個の製品を生産しており、人件費は 300,000円/日 となっている。

各工程別配置人員数
工程名 社員 アルバイト 生産能力(個/日)
工程 1 2 9 1,600
工程 2 1 9 1,600
工程 3 4 18 1,600
合計 7 36 1,600

不況のため、アルバイトを減らして人件費の削減を行いたい。 ただし、生産能力は落としたくないし、どの工程にも責任者として社員を最低一人は配置したい。 どのように人員配置を変更すれば良いか?また、その時の一日辺りの人件費はいくらか?

なお、解答には solver 2 というシートを用いよ。

ヒントと注意

右の図のような表を作成すると判りやすい(と思う)。 ライトブルーのセルには式が入力されている。 1日の生産能力は

1日の勤務時間÷100個作るのに必要な時間×100×配置される人数

の和(社員およびアルバイト)である。 目的セルは「総人件費」であり、目標値には「最小値」を選択する。 変化させるセルは、各工程に配置される人数を入力。 制約条件には次のものを指定する。

  1. 各工程の社員数は 1以上
  2. 各工程のアルバイト数は 0以上
  3. 各工程の生産能力は 1600以上。
    (生産能力の合計欄を、関数 MIN で求め、そこが 1600以上とすると正しい答えが出ないので注意。理由は不明。)
  4. 総社員数は 「7」
  5. 人員数は「整数」
solver problem 2 hint

練習問題 3

ニュートン算

ある牧場で、馬を27頭放牧すると、6週間で草が食べ尽くされ、 23頭放牧した場合は 9週間で食べ尽くされるという。 21頭放した場合は何週間で食べ尽くされるか?

ただし、放牧する前に草は生えそろっているものとする。

なお、解答には solver 3 というシートを用いよ。


6日目 表紙 8日目

tacha@tack.fukui-med.ac.jp
$Id: 07.html,v 1.1 2004/05/24 09:16:02 tacha Exp $