...

線形計画法のグラフ解法ビジュアル化プログラム

by user

on
Category: Documents
13

views

Report

Comments

Transcript

線形計画法のグラフ解法ビジュアル化プログラム
線形計画法のグラフ解法ビジュアル化プログラム
青木 武典
A Visualization Program for Assisting to Learn a Solving Technique for
Linear Programming Problem with 3D Graphics
Takenori Aoki
要約
オペレーションズ・リサーチにおける代表的なモデルである線形計画法は,多変数1次式から
なる複数の制約条件式と1つの目的関数からなる連立方程式系モデルで定式化され,変数の数が
3以下の場合には,モデルの挙動をグラフを用いて説明することができる。本学部のような文系
学部の学生を対象として,このモデルの挙動を説明するのに,変数が2つの場合には,連立方程
式系とそのグラフとの関係を理解させるときに,2 次元の座標平面でグラフの動きを説明するの
に大きな困難はないが,変数が3つの場合に3次元座標空間における1次式が表す図形的性質を
学生に理解させるには,3 次元空間上の図形を黒板に板書するのも,またその動きを説明して学
生に理解させるのも困難である。これらの問題を克服するために3D グラフィック機能を用い
て変数の数が3のときに線形計画法の問題をグラフを用いて解くための教材ソフトを作成したの
で,その機能と教材としての効果について検討した。
1.問題の所在
筆者は本学部の専門教育科目の一環としてオペレーションズ・リサーチ(OR)を担当してい
るが,OR の代表的な手法として線形計画法(Linear Programming: LP)があり,OR の授業の中
で必ず取り上げられる手法である。
LP の解法を授業で取り上げる場合,理系学部の専門教育科目の授業であれば,数理計画法の
範疇の中のひとつのモデルとして LP を取り上げ,具体的な解法としてシンプレックス法や内点
法を紹介し,学生の専門領域に応じて,これらの解法の概要だけに留めるのか,さらに詳細なア
ルゴリズムを説明するのか,というような選択肢があるであろう。
一方,文系学部での授業では,LP が最適化問題に対する典型的な手法のひとつであることを
紹介し,最適化問題は一般に,「○○の制約の下,□□を最大(あるいは最小)にするような△
△を決定せよ」という形式で記述されること 1),○○に「資源と需要」,□□に「利益」,△△に「生
産量」等の言葉をあてはめてみればわかるように,工学分野のみならず,経営・経済領域などの
広い分野に適用できる概念であることを強調しつつ,具体的な解法については,変数が 2 つの場
合について,グラフによる解法の紹介に留めるのが一般的であろう。
―27―
『情報科学研究』第 19 号
2 変数のときのグラフによる解法では,まず,それぞれの制約条件式(の境界)が直線を表わ
すこと,すべての制約条件を重ね合わせると(すなわち,すべての制約条件を満たす領域を図示
すると)xy 座標平面上に凸多角形(これを実行可能領域と呼ぶ)として表わされることを示す。
次に目的関数も傾きが一定の直線として表わせること,目的関数がとる値に応じて,傾きが一定
のまま平行移動することを示し,目的関数の値をいろいろと変えたときに,実行可能領域と目的
関数が表わす直線との関係がどのようになるのかを示しながら,最大値あるいは最小値をとる点
をグラフから求める,という手順をとる。
図1に,制約条件が表わす図形的イメージの例を示す。また,図2に実行可能領域と目的関数
との関係を表わす例を示す。
図1.2 変数の場合の制約条件の表わす図形イメージの例
出典)高井徹雄編著,
『基礎から学ぶ経営科学 文系の論理的な問題解決法』,税務経理協会,2005,p.94
図2.2 変数の場合の実行可能領域と目的関数との関係の例
出典)同上,p.94
グラフによる解法は,すべての制約条件と目的関数のグラフを1つの xy 座標平面上で示すこ
とができ,問題の全体像が図形的イメージとして示されるので,学生の理解を得るには非常に優
『情報科学研究』第 19 号
―28―
れた方法といえる。また,この方法を理解するには,2 変数からなる方程式と xy 座標平面のグ
ラフとの関係,すなわち,2 変数の 1 次式方程式が直線を表わすこと,2つの 1 次方程式が 2 直
線の交点を表わすことさえ知っていれば,理解するのに大きな困難はない。
同様に,変数の数が3つの場合も,xyz 座標空間上のグラフとして図形的イメージを描くこと
ができる。ただし,この場合は 2 次元平面のときにはなかった,いくつかの問題点が現れてくる。
ひとつは,3 次元座標空間に対する学生側の事前の知識,理解の問題である。はたして平均的
な文系大学生が,3 変数1次方程式と 3 次元座標空間との対応をどの程度理解しているだろうか。
3変数 1 次方程式が平面を表わすこと,2つの 1 次方程式が直線(2つの平面の交わり)を表わ
すこと,3つの 1 次方程式が点を表わすことを理解しているだろうか。これらの事前知識がない
場合,これらの点を説明し,理解させながら元々の 3 変数の場合のグラフによる解法を理解させ
るためには,教員側にもそれなりの準備,工夫が必要になる。
ふたつめは,教員側の問題である。2 変数に対するグラフによる解法の場合には,xy 平面を黒
板に書き,その上に直線を引くことは,大きな問題はないが,3 次元空間上の図形を見やすく書
くのは,平面の場合に比べて格段に困難になってくる。また,交点の座標の算出等の計算量も,
2 変数のときに比べて,格段に計算量が増えてくる。
これらの点を考慮しながら,学生の理解を確実に得られるようにするには,それなりの工夫が
必要になるが,ひとつめの学生側の事前の数学的知識に関わる問題点の検討は,稿を改めて次の
機会に詳しく検討させていただくことにして,本稿では以下に,学生の理解を深めるための支援
ソフトを開発したので,その概要を紹介させていただく。
2.教材ソフトの目的と機能
2. 1 開発の動機と目標
既に述べたように,LP 問題に含まれる決定変数が2つの場合は,2 変数の 1 次不等式や 1 次
関数として定式化された制約条件や目的関数は,図形的には 2 次元の xy 座標平面上の直線(不
等式で表された制約条件に対しては,その不等式が満たす領域の境界線)として表されるので,
この図形的意味を理解するには高校初年度(数学Ⅰ)程度の数学の知識があれば十分であり,こ
れらの図形を教室の黒板に板書をしながら説明するのも困難ではない。
一方,決定変数が3つの場合には,制約条件や目標関数は xyz 座標空間上の平面として表され,
それらの交わりは空間上の直線や点として表されるが,これを平面である黒板に「的確に」板書
するのは以下のような困難がある。
・黒板に xyz 座標空間の座標軸を書き,その上に1つの平面や直線を書くことは大して困難で
はないが,複数の平面を同時に書いて,それらの交わりである直線や交点を「的確に」
,す
なわち,相互の位置関係や座標値を正しく書いて,実行可能領域を表す多面体の形を正しく
(そこまで行かなくても,せいぜい「もっともらしく」)書くのは多くの場合,非常に困難で
ある。しかし実行可能領域を表す多面体の形がもっともらしくないと,的確な図形的イメー
ジを受講者に伝えるのは困難である。
・次に,実行可能領域を表す多面体と目的関数を表す平面とがどのような関係にあるのか,
とくに目的関数の値がある特定の値のとき,多面体を平面で切ったときの切り口がどのよ
うな形になるのかを板書で的確に図示するのはさらに困難になる。
―29―
『情報科学研究』第 19 号
・さらに,目的関数の値を変えたときに(すなわち,平面を平行移動したときに)その切り
口がどのように変わっていくのかを的確に図示する必要があるが,これはさらに困難であ
る。
このような困難に対応する方法として,教室にプロジェクター等の提示装置が普及する以前
は,方眼紙等に極力きれいに作図した資料のコピーを受講者に配布したり,パソコンで手軽に使
えるドロー系(すなわち線画用)の描画ソフトが普及した時期には,手書きではなく,これらの
ソフトを利用して作画し,それを PC に接続しているプロジェクターやモニター画面に提示しな
がら説明する,という方法を取ってきた。しかしどちらの方法も紙 1 枚あるいは1画面の資料で
は済まず,それぞれの制約条件がどのような平面を表すのか,それらを組み合わせた実行可能領
域はどのような多面体になるのか,さらに実行可能領域を表す多面体と目的関数の表す平面との
切り口はどのようになるのか,等を順を追って説明していくためには,少なくとも数画面,多い
と 10 画面分以上の資料が必要になる。またそのための準備にも相当の時間が必要であり,さら
にある条件(条件式や目的関数の係数や定数項の値)を変えたらどうなるのか(これは感度分析
を行うときに必要になる)等に対応するためには,さらに相当の準備時間が必要になる。
現在では,インターネットからダウンロードして無料で使える手軽なフリーソフトから,専門
的な数学関数の解析用ソフト,CAD 系のソフト,3D ゲーム作成用のソフトまで,3D グラフィッ
クス系統のソフトウェアは多種多様な既成ソフトが入手できるが,LP 問題を解説的に表示しな
がら手軽に使えるソフトはなかなか見あたらない 2)。そこで,以下のような目標を設定して,自
前で開発することにした。
2. 2 教材ソフトの機能
(1)3 変数の LP 問題を「解説的に」表示しながら,受講者に LP として定式化した方程式群と,
それが 3 次元座標空間でどのように表されるのか,との対応が明確に理解できるような手順と
表示方法を工夫する。ここで「解説的」というのは,それぞれの制約条件式が座標空間上でど
のように表されるのか(具体的なイメージは図 10 を参照されたい)
,制約条件を順次組み合わ
せていくことで,実行可能領域がどのように形成されていくのか(具体的なイメージは図 11
を参照されたい),目的関数は座標空間上でどのように表されるのか,実行可能領域を表す多
面体と目的関数を表すグラグがどのように関係するのか,等を順次あるいは独立に表示するこ
とで,それぞれの方程式とそのグラフとの関係だけでなく,2つの平面の交わりとして表され
る直線,3つの平面の交わりとして表される交点等,連立方程式とそのグラフとの関係が明確
に表示できるような機能を持つことを指している。
(2)元の LP 問題として定式化された制約条件と目的関数とを,そのままの形式で入力するだけ
で,あとはすべての関連情報をプログラム内部で自動的に生成し,必要に応じてその内容を表
示できるようにする。こうすることで,準備に必要な作業時間を極力短くできる。
(3)座標軸回りの回転,拡大縮小表示等,3D グラフィックスの機能も必要最小限のものはひと
とおり装備し,立体画像を視覚的,直感的に理解しやすくする機能をつける。
(4)授業時に説明用の資料として使えるだけでなく,学生が自宅の PC にコピーして,自習用に
も使えるようにする。
『情報科学研究』第 19 号
―30―
2. 3 開発環境・動作環境
プログラムの開発は Microsoft Visual Basic 6.0 の開発環境のもとで行ったので,ソースプログラ
ムの記述は Visual Basic 6.0 の言語仕様に基づいている。通常,授業時にはインタープリタ・モー
ドで稼働しているが,コンパイルして実行形式プログラムとして稼働することも可能である。
OR の授業支援ソフトとしての性格からは,教科書に記載されている例題程度の規模の LP 問
題ならば直接解くことができるソルバーの機能を持っている点や,What If 分析に利用するゴー
ルシーク機能,乱数を利用したモンテカルロ・シミュレーション等,表計算ソフトの MS Excel
は OR に関連したさまざまな問題を扱うのに非常に有効なので,今回のプログラムも Excel の
VBA(マクロプログラム)として開発することが望ましかったが,(その点もあって,Visual
Basic の言語仕様も最新の VB 2007 ではなく,Ver.6.0 を利用したが)VB 6.0 と Excel VBA とでは,
グラフィック機能を利用するための API が大きく異なるため,Excel VBA での実装は今後の課題
とした。
3.教材ソフトの利用手順
このプログラム(以下 LP Viewer と呼ぶ)は,Microsoft Visual Basic 6.0 の開発環境のもとでイ
ンタープリタ・モードで実行するか,あるいはコンパイル後の実行形式プログラムとして単体で
実行する。以下,標準的な操作手順を示す。
(1)元の問題に即した目的関数,制約条件の係数,定数項の値を入力する。
プログラムの実行が開始されると,図3に示す[初期画面]が表示されるので,画面右下の[条
件入力画面]ボタンをクリックして,[パラメータ入力画面](図4)を表示する。
[パラメータ入力画面]では,目的関数の係数,最大化/最小化の指定,制約条件式の係数,
定数項の値,制約条件の不等式の向き(≦か≧)を制約条件式ごとに指定する。
図4に示した例は,元の問題は教科書等では
目的関数:
u = 50x + 150y + 70z → 最大化
制約条件:
3x + 18y + 13 z ≦ 900
(図4の制約条件(4))
9x + 20y +
7z ≦
13
(図4の制約条件(5))
6x + 18y +
5z ≦
7
(図4の制約条件(6))
z ≦ 100
(図4の制約条件(7))
x+
(非負条件)
y+
x
≧
0
(図4の制約条件(1))
≧
0
(図4の制約条件(2))
z ≧
0
(図4の制約条件(3)
)
y
と記述されているものである。
制約条件のうち非負条件は,制約条件群の最後に記述されるが普通であるが,本プログラムで
は非負条件が最初の 3 つの制約条件として,自動的に指定されている(これはプログラム本体の
グラフ表示領域を x 軸,y 軸,z 軸とも正の部分しか表示しないためでもある。)。
制約条件式の数は3つの非負条件も含めて 10 個までである。制約条件式の係数,定数項の値
は上から(間を空けずに)指定する。プログラム内では,1 行すべての係数が 0 の行を見つけた
―31―
『情報科学研究』第 19 号
ところで制約条件式の終了とみなしている。
[パラメータ入力画面]右下の[実行]ボタンを押すと,この画面が消えて,
[初期画面]に戻る。
図3.初期画面
図4.パラメータ入力画面
『情報科学研究』第 19 号
―32―
(2)表示オプションの変更
[パラメータ入力画面]を終了して[初期画面]に戻ると同時に,プログラム内では,[パラ
メータ入力画面]で指定した制約条件の係数,定数項の値に基づいて,2つの制約条件式の交わ
りである直線の方程式,3 つの制約条件式の交わりである交点の座標,どの点,どの線分が実行
可能領域を構成するのか,実行可能領域を構成する平面(シンプレックス法でいう単体(シンプ
レックス))を算出する。(「本物」の問題の場合は,決定変数の数も制約条件式の数も膨大なので,
このような「総当たり」の計算は不可能であるが,本プログラムのように 3 変数で制約条件式の
数も 10 個以内であれば,総当たり計算も一瞬のうちに終了する。)
これらの計算の結果の内,すべての直線のみをグラフ描画画面上に薄い緑色で表示するので,
入力したパラメータに誤りがないかをチェックすることができる。また,計算結果を自動的にファ
イルに出力するので,以降に行う各種表示のための参考資料とすることもできる。(図5参照)
図5.パラメータ入力画面終了後の初期画面
この段階以降,任意の時点で,画面右側にあるグラグ表示のための各種パラメータの値を変更
することができる。
【軸のスケール】項目は,x 軸,y 軸,z 軸それぞれについて,表示する最大値(上限)と軸上
に表示する刻み(スケール)を指定する。指定された刻みに従って,点線の罫線を表示する。(ス
ケールの下限は 0 で固定である。各軸ともマイナス側にグラフを表示することはできるがスケー
ルは表示されない。)
図6に y 軸,z 軸のスケールの最大値を 200 に変更した例を示す。
―33―
『情報科学研究』第 19 号
図6.軸のスケールを変更
【拡大率】項目は,グラフ描画領域に表示するグラフを拡大/縮小して表示する。グラフ描画
領域の大きさは 800 ピクセル× 600 ピクセルで固定であり,標準的な(回転前の)各軸の表示長
さを 300 ピクセル分とし,これを基準として拡大/縮小を行う。
また,[−][+]ボタンのある項目は,このボタンをクリックすると,ボタンの上段にある数
値の分だけ増減させる。
図7に拡大率を 2.25 に変更した例を示す。
図7.拡大率の変更
『情報科学研究』第 19 号
―34―
【軸回りの回転】項目は,右手系の xyz 3次元座標空間に対して,x 軸,y 軸,z 軸をそれぞれ右,
上,手前に伸ばした方向を基準位置(図6参照)として,それぞれの軸の回りに何度回転(単位
は度(°),反時計回りをプラスとする)させるかを指定する。標準値は z 軸回りに−135°,x 軸
回りに−70°としている。この値で xy 平面を地平面とみなしたとき,原点を 20°下方に x 軸,y 軸
を左右均等に見る上空(平行投影なので,論理的には無限遠)に視点があることになる。
図8に x 軸,y 軸,z 軸の回転をすべて 0 に変更したときの例を示す。
図8.軸回りの回転の変更
【原点移動】項目は,座標軸の原点(標準位置は,グラフ描画画面の左右方向の中央(400 ピ
クセル分),上下方向は上から 2/3(400 ピクセル分の位置)の位置をピクセル単位で左右(画面
の x 軸方向)上下(画面の y 軸方向)に移動させる。
図8の状態から,x 方向に−90 ピクセル,y 方向に−50 ピクセルだけ原点を移動した例を図9
に示す。
―35―
『情報科学研究』第 19 号
図9.原点移動
【等高線幅】と【隠線消去】の項目は,今回報告する表示方法の範囲内では使用しない。
また,これらの表示オプション項目は,フォームの右枠をドラッグすることで表示を隠すこと
もできる。
(3)制約条件式の表すグラフ
図5の状態すなわち,[パラメータ入力画面]から目的関数,制約条件の係数,定数項の値を
入力し,その結果をグラフ上で確認が終わると,標準的には,画面上方にある【制約条件の表示】,
【実行可能領域の表示】,【目的関数の表示】へと順次進んでいく。
【制約条件の表示】項目では,[個別]ボタンの右にあるテキストボックスに制約条件式の番
号(番号 1, 2, 3 は非負条件であることに注意。もちろん 1, 2, 3 を指定することも可能であるが)
を指定して[個別ボタン]をクリックすると,指定された制約条件式の表す平面が表示される。
[個別]ボタンをクリックしたときの例を図 10 に示す。
『情報科学研究』第 19 号
―36―
図 10.[個別]ボタンによる制約条件式の表示
この表示方法では,指定された平面の第 1 象限(x, y, z の値がすべてプラス)の部分を青,第
1 象限からはみ出している部分を,最大スケールの 10%程度の幅で赤で塗りつぶすことで平面の
様子を示している。次に他の動作(例えば他の制約条件を個別に,
あるいは[順次]指定で表示)
を指定すると,この表示は消去される。
[順次]ボタンをクリックするとボタンの右側のテキストボックスで指定した順序で,各制約
条件の表す平面を[個別]と同じ要領で表示する。[次]ボタンで次の指定番号の表示に移る。
[重ね合せ]ボタンでは,すでに指定された制約条件の表す平面を残したまま,次に指定され
た制約条件の平面を重ねて表示する。すなわち,テキストボックスで指定された順番に領域を「切
り取って」いくことで,制約条件が増える毎に徐々に実行可能領域が形成されていく様子を表示
する。図 11 に[重ね合せ]の例を示す。[重ね合せ]ボタンをクリックした後,
[次]ボタンをクリッ
クすると順次,制約条件式が「切り取られて」いく様子を表わす。
―37―
『情報科学研究』第 19 号
図 11.[重ね合せ]の例
『情報科学研究』第 19 号
―38―
(4)実行可能領域の表示
[ワイヤフレーム]ボタンをクリックすると,実行可能領域の稜線(ワイヤフレーム)が青色
で表示される。
図 12 に実行可能領域の表示例を示す。
図 12.実行可能領域の表示例
[ワイヤフレーム]ボタンの下にあるチェックボックスにチェックを入れておくと,この後,
実行可能領域のワイヤフレームを常に表示するか,隠線を破線で表示するかどうかを指定できる。
(5)目的関数の表示
目的関数が表わす平面と実行可能領域との関係を表示する。目的関数が表わす平面は,この平
面と座標平面とが交わる稜線を赤い細線で,この平面と実行可能領域とが交わっている場合には,
その切り口を赤く塗りつぶして表示する。
目的関数が表わす平面を指定するには,
① 目的関数が表わす平面が特定の点(例えば特定の実行可能領域の端点等)を通るように設
定する場合は,その点の座標値を指定して,
[座標値]ボタンをクリックする
② 目的関数が特定の値を取る時の状態を表示する場合は,目的関数の値を指定して,
[関数
値]ボタンをクリックする。
のいずれかの方法で指定する。
また,[スライド]ボタンは,ボタンの右側にあるテキストボックスに指定した値の範囲(左
側のテキストボックスが下限,中央が上限,右側が刻み幅)で平面の状態を順次表示する。
図 13 に座標値(20, 20, 20)を指定したときの様子を,図 14 に関数値 6750 を指定したときの
様子を拡大して表示した例を示す。また図 15 は図 14 の状態から座標軸を回転させたときの様子
を示す。
―39―
『情報科学研究』第 19 号
図 13.座標値指定による目的関数の表示
図 14.値指定による目的関数の表示
図 15.座標軸を回転させて表示
『情報科学研究』第 19 号
―40―
4.まとめと今後の課題
前節では,本プログラム(LP Viewer)の基本的な使用方法を紹介したが,ここでは若干の利
用経験を踏まえて,本プログラムの利用効果と今後の課題を概括したい。
以下に列挙するように,本プログラムにはまだいくつかの不具合点があるので,授業等での利
用実績はほんの数回程度であるが,授業で説明資料の一環として利用したところ,学生はこちら
が期待したほど積極的な反応を示さなかった,というのが率直なところである。むしろ「当然」
というような顔つきをしているので,「わかったかな」と問うと「よくわかった」という答えが
ほとんどなので,一応の目的は達成されたと思われる,というのが現状での筆者の自己評価であ
る。多少冷静に考えてみると,ゲームソフト等の高度な3Dグラフィックス処理の施された画面
を見慣れている学生に対して,本プログラム程度の素朴なグラフィックス表示では特に強い反応
を期待するほうが期待過剰というものであろう。
したがって,2変数の場合のグラフによる解法の自然な拡張としての3変数の場合のグラフに
よる解法を説明する道具として,本プログラムは一応の目標を達成していると考えられる。この
点では,制約条件をひとつずつ追加しながら,実行可能領域がどのように形成されていくのかと
か,目的関数の表わす平面を順次平行移動させながら,実行可能領域との共通部分がどのように
変化しながら最適点に到達するのか,というような,黒板での板書や分解写真のような静的なス
ナップショットのつなぎ合わせによる資料ではなかなか表現できない空間図形のイメージを,多
少とも動きのある画面上での変化で表現できる効果は,学生に「直感的に」あるいは「感覚的に」
理解させるには十分目的を達成していると考えられる。
その一方で,それではこれとこれの制約条件が表わす2つの平面の交わりである直線の方程式
はどのように表わされるかとか,この3つの制約条件が表わす3つの平面の交点の座標は何か,
というような問いに対しては,学生の理解ははなはだ曖昧あるいは貧弱といわざるをえない。3
変数 LP 問題の場合,もとの問題で与えられている制約条件式や目的関数はすべて3次元座標空
間上の平面を表わす方程式として与えられ,そこから導かれる3次元空間上の直線の方程式や点
の座標は,必要ならば自分で求めなければならないのであるが,これに必要な代数系での操作と
幾何的な図形との対応に関する数学的な知識,理解が十分ではないためと思われる。この問題は,
元来 LP 問題の解法そのものの問題ではなく,その前提となる数学的知識の問題であるが,この
前提知識が十分でないと,LP 問題の解法に関する知識も曖昧で不十分なものとならざるを得な
い。この問題については稿を改めて検討したいと思うので,ここでは問題点の指摘に留めておき
たい。
本プログラムのもうひとつのまったく別の観点からの効果として,このような説明資料を準備
する立場の教員に対する作業効率の改善効果をここで強調しておきたい。
もちろん第一の効用は,説明資料の準備時間の大幅な短縮である。本稿で例題として使用した,
非負条件以外の制約条件式の数が4本位の場合には,
[パラメータ入力画面]から必要な係数や
定数項の値を入力するのに要する時間はせいぜい数分程度である。あとはほとんどマウスをク
リックするだけの操作で済むので,さまざまなグラフを手書きで作成する場合に比べた場合はも
ちろん,一般のドロー系のソフトを利用してスナップショット的なグラフを複数作成する場合(筆
者の経験では,この作業だけでも一晩仕事である)に比較して大幅な作業時間の短縮が図れるこ
とになる。
―41―
『情報科学研究』第 19 号
もうひとつの効用として,本プログラムを利用して例題作成のための一種の What If 分析がで
きることを挙げたい。本プログラムの使用手順の最初の段階で,[パラメータ入力]画面から目
的関数の係数,制約条件式の係数と定数項の値を入力して[実行]ボタンをクリックすると,こ
れらの制約条件から導出されるすべての交点の座標,すべての線分の方程式をファイルに出力す
る,と述べたが,この情報が資料を準備する教員にとっては非常に重宝するデータであることが
わかった。この機能は,じつは当初はプログラムの動作確認のために付けたものであるが,すべ
ての交点の座標値のリストが簡単に入手できることで,制約条件式や目的関数の係数や定数項の
値を変更したときに,それぞれの交点の座標値がどのように変わるのかを即座に知ることができ
る。この機能を利用すると,授業で使用する新しい例題や練習課題の問題,さらには期末試験の
問題を簡単に作成することができる。教科書に掲載されている例題の多くは途中の計算を簡単に
するために,制約条件式の係数や定数項の値,目的関数の係数の値が整数値で与えられるだけで
なく,交点の座標値もなるべく整数か簡単な分数になるように設定されている。しかし,まった
く新しい例題を作る場合はもちろん,既にある例題の一部を変更して,交点の座標がなるべくき
れいな値になるようにするのは,手計算で行うのは計算量が多く(少なくとも数本から 10 本程
度の3元連立方程式を解く必要があるので)結構大変な作業になるが,この作業に本プログラム
を利用すれば,一切手計算の必要がなく,簡単にさまざまなケースを試すことができる。いわば
期末試験問題作成のための支援プログラムとしても有効であるということである。
本プログラムで採用している「総当たり」式の計算方法は,本来の LP 解法の趣旨からいえば(現
実の問題を解く場合には,変数の数と制約条件の数が非常に多く,交点の総数は天文学的な数に
なり,総当たり式の計算ができないので,効率の良い(計算量のなるべく少ない)アルゴリズム
を考案することが研究領域としての LP 解法開発の趣旨であるから)ナンセンスな方法であるが,
変数の数が3つで制約条件式が数本程度であれば,コンピュータ処理では一瞬ですべての計算が
終わるので,思わぬ所で付加価値を付けたことになる。
最後に,現状での本プログラムが抱えている問題点や,今までの利用経験に照らして改善すべ
き点を以下に列挙して,今後の課題としたい。
(1)現行プログラムの不具合点の除去
現行プログラムには以下のような不具合点があるので,早急な改善が必要である。
・プログラム設計上は,各軸のスケールを座標平面上に格子状の点線で表示するとともに,ス
ケールの刻みの位置に軸の値を表示するようになっているが,現行バージョンでは軸を回
転させると,スケールの刻みの位置と値の表示位置とにズレが生じてしまう。特に値を表
示する文字列が重なってしまうとはなはだ見苦しい表示になってしまうので,本稿に図と
して掲載した例では,値の表示を省略している。
・同様に,平面や直線の方程式,交点の座標をオプションで表示する仕様になっているが(初
期場面の左上方の【制約条件の表示】の下のオプションボタン),この表示がグラフと重なっ
てしまう場合が多い(特に軸を回転させた場合や拡大表示した場合)ので,何らかの対応
が必要である。
(2)機能の改善・拡張
これらは必ずしも不具合点ではないが,本プログラムの使用経験から以下の改善の必要性を認
『情報科学研究』第 19 号
―42―
識している。
・平面,直線,交点に利用者が名前を付けられるようにする。現行プログラムでも,直線の方
程式,交点の座標を算出する時点で,同時にそれらに内部的な名前を自動的に生成してい
るが(上記の不具合と同じ理由で,本稿に掲載した図では,これらの表示を省略している)
,
いつかの交点や直線には(例えば教科書に掲載されている説明図と同じになるように)利
用者が自分で名前を付けられ,グラフ上に適宜その名前を表示できることが望ましい。
・直線,平面を表示するとき,表示色や塗りつぶしの色を利用者が指定できることが望まし
い。現状では,これらの表示は必ずしもアトラクティブではない。特に平面をどのように
表示するのがよいのかは,さらに一考が必要であろう。場合によっては平面にグラデーショ
ンを付けるとか,影をつけるとかの配慮も必要があるかもしれない。
・グラフ画面をプリント出力あるいはファイル出力する機能を付加することが望ましい。本プ
ログラムの基本的な役割は,動きのあるグラフを画面上に表示することであるが,グラフ
部分だけをプリントして学生に配布することも必要になるであろう。(実際,本稿の現行作
成時も,グラフ画面にプリント機能が必要なことを痛感させられた。)。
・本節のはじめの部分で述べたように,学生に 3 次元座標空間での方程式系の理解を促すため
の工夫が必要であると思われる。例えば,特定の交点や直線をマウスでピックすると,そ
の方程式や座標値を「吹き出し式に」表示できれば,視覚的により具体的に,方程式系と
その図形との対応が理解できるようになり,空間図形の数学的意味をより深く理解できる
ものと期待される。
(3)プログラム開発・実行環境の変更
現行プログラムは Microsoft Visual Basic Ver.6.0 の開発環境の下で開発を行ったが,Visual Basic
の標準的な開発プラットフォームはすでに Visual Basic 2007 に移行しつつある。ソースプログラ
ムの変更無しにプラットフォームが移行できれば問題ないが,Ver.6.0 と 2007 とでは,オブジェ
クト指向プログラミング環境の導入や API(アプリケーションプログラムと OS とのインター
フェース)の大幅な変更があり,ソースプログラムの大幅な変更が必要になる。一方,OR 的な
問題解決の道具として Microsoft Excel は,表計算ソフト本来の機能(例えば乱数を利用したモン
テカルロ・シミュレーション等)はもちろん,ソルバー,ゴールシーク等の機能を装備している
ので,非常に有効な道具であり,学生にもぜひ Excel の機能を使いこなせるようになってもらい
たいと考えている。その点では,本プログラムもできれば Excel VBA として Excel と一体化して
稼働することが望ましいが,Excel VBA の言語仕様は(API はもちろん Excel 固有のものが多数
あるが)基本的には Visual Basic Ver.6.0 に準拠しており,今後どちらのプラトフォームを選択す
べきかは,さらに一考を要するところである。
謝辞
本研究は,商学部情報科学研究所共同研究『IT 利用教育の効果と課題』の一部として行われ
たものである。同研究会の山添謙,羽根秀也,木村昌史各先生には活発な議論と貴重な助言を頂
きましたことを感謝いたします。
―43―
『情報科学研究』第 19 号
注
1) この表現は,高井徹雄編著,『基礎から学ぶ経営科学 文系の論理的な問題解決法』,税務経理協会,
2005,p.90 に倣った。
2) 現在,インターネット上には非常に多くのドロー系の3Dグラフィックソフトが,フリーソフトあるい
はシェアウェアとして公開されているが,その多くは,点の座標を指定して線分や多角形を描画するも
の,関数形(陽関数,陰関数,あるいはパラメータ表示等)を指定してその概形を等高線グラフ等で表
示するものがほとんどである。
今回の筆者の目的は,表示する図形は1次式で表わされる図形ばかりであるので,平面,直線(線分),
凸多面体,点と図形としては単純なものばかりであるが,制約条件式を順次追加していったときの平面
の切り口の変化をある程度「動的に」見せたいこと,同様に,実行可能領域として表わされた凸多面体
と目的関数で表わされた平面との切り口を,目的関数の値を順次変えていったときに,切り口がどのよ
うに変化していくのかを,これも「動的に」見せたいことにある。この点からは,手軽な汎用の3D
ソフトでこの目的に合うものは見つからなかった。また Mathematica 等の本格的な数学関数ソフトでは,
パラメータの指定を工夫することで,このような用途に利用することは可能であるようだが,学生自身
も手軽に試してみるには,費用面でも設定の手間の面でも,今回の筆者の目的には合致しないので,3
変数のLP問題をグラフ表示するという目的に特化したソフトを自前で開発することにした。
『情報科学研究』第 19 号
―44―
Fly UP