15
2006 年度 筒井ゼミ卒業論文 『配送計画問題プログラムの機能拡張』 平成18年1月24日 5102132 土田 裕一 5102184 藤崎 裕也

『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

2006 年度 筒井ゼミ卒業論文

『配送計画問題プログラムの機能拡張』

平成18年1月24日

5102132 土田 裕一

5102184 藤崎 裕也

Page 2: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

目次

1.はじめに

2.遺伝的アルゴリズム

2.1 遺伝的計算とは

2.2 J-GAUSS とは

3.配送計画問題とは(従来のシステムの解析)

4 配送計画問題の機能拡張

4.1.機能拡張の概要

4.2.具体的な方法

5.結果

6 むすび

7.参考文献・付録(完成したプログラム)

要旨

遺伝的アルゴリズムを利用した、配送計画問題プログラムに障害物という新たな概念を

追加することで、より複雑な処理ができるようプログラム改良をしようとするものであ

る。

Page 3: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

1. はじめに 本論文では、所属研究室で開発されている遺伝的アルゴリズムのパッケージである

J-GAUSS を利用した、配送計画問題プログラム(卒業生製作)に機能を追加した経過、

方法、結果について述べたものである。

配送計画問題プログラムは、配送センターから出発したトラックが、設定された不特定

多数の各家(guest)を回る時、各トラックの走行距離が最短になるよう、また各トラック

の走行距離をできるだけ同じにするよう計算するプログラムである。

本プログラムは既にそれで完成されたものであるが、配送ルートを決める上で、障害と

なるべきものが設定されておらず、ただ単に各家と家の間の最短ルートを求めるだけであ

った。そこで、配送ルート上に何らかの障害物を設定し、その障害物を迂回するルートを

算出するプログラムを製作してみようとしたのが、本プログラムを製作するに至った経緯

である。

開発は、既に卒業生が製作された DistributionGuiTop.java という java を用いてプログ

ラミングされているファイルに、コードを追加して機能を拡張する。追加した機能は、プ

ログラムの操作者が自由に設定できる、棒状の障害物である。具体的に追加した機能は、

(1)障害物を引くためのボタン(2)障害物を画面上から削除するボタン(3)障害物の描画(4)ル

ート上に障害物があると判定された場合、最短の迂回ルートを求める計算式。の 4 つであ

る。

以下、本論文では、2 章で遺伝的アルゴリズム(GA)と、GA の理論を用い java で開発

された J-GAUSS の説明を行い、3 章で本論文で扱う配送計画問題プログラムの概要、4

章で機能拡張した部分の具体的な内容とその方法について述べ、5 章で機能拡張によって

得られた結果を述べる。

2. 遺伝的アルゴリズムとは 2-1.遺伝的アルゴリズムとは

本節では本論文の準備として遺伝的アルゴリズムについて述べる。

遺伝的アルゴリズム(Genetic Algorithm:GA)とは、生物進化をコンピューター上で仮

想生物を使いシミュレートし、その結果をヒントに探索、適応手段を模索する手法であ

る。

そもそも生物進化では、環境に適応できた優れた個体のみ交叉により子孫を残し、劣っ

Page 4: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

た生物は消滅する自然淘汰が行われる。その中で、両親の遺伝子情報を受け継ぎつつも、

親とは少し異なった子の個体、また突然変異により異なった個体が出現する。それらが更

に交叉を重ね、新たな子孫を残していく。これが生物進化の一つのメカニズムと考えられ

られている。

遺伝的アルゴリズムは、従来の数理的処理では解くことが困難であった問題を、環境に

適応していく生物個体に解を見立てて、交叉、突然変異を行わせ、優れた個体、つまり、

より良い解を得ようとするものである。図1に最も単純な遺伝的アルゴリズム(単純 GA)

の大まかな流れを示す。対象問題の構造に深く立ち入らない特徴を持っており、解法を知

られていない、または解法は分かっているが計算に膨大な時間を要する問題を解くのに適

しており、適応度を与えられると、生物進化の力により比較的簡単に問題を解く、最適化

手法としての有効性を評価されている。

.

図1生物進化モデルを基本とした最も単純な GA の流れ

以下、遺伝的アルゴリズムの応用例について,文献 2)より引用した表1)をあげる。

表 1 GA の応用例

Page 5: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

.

LSIのレイアウト設計ニューラルネットワークの合成通信網の動的予測ルーティング

設計問題・計画 ジェットエンジンの設計エアコン制御機の設計ハードウェア進化購入計画問題通信ネットワークの設計レンズ系の設計エレベータ群管理

制御問題 ガス・パイプライン制御プロセス制御配電系統の損失最小化制御ジョブショップスケジューリング

スケジューリング問題各種工程スケジューリング組合わせ最適化問題製品投入スケジューリング

バス仕業ダイヤ作成巡回セールスマン問題DNA配列のシグナルパターンの抽出DNAの配座解析分子系統樹作成

その他 画像解析・復元概念形成問題戦略獲得問題故障診断蛋白質の構造推定

2.2J-GAUSS とは J-GAUSS とは、所属研究室で遺伝的アルゴリズムの研究用に作られた、GAUSS

(Genetic Algorithm Using Stategic operationS)を JAVA によって再開発したものであ

る。

もともとGAUSSはC言語で記述されたもので、UNIX上で動かす事を前提に作成され

たソフトである。C 言語は、高速で動くというメリットがあるが、(1)メモリ管理をすべ

てユーザの責任で行わなければならない(2)オブジェクト指向でない(3)ウインドウズや

MAC などでは、新たにコンパイラを用意しなければならない(4)グラフィカルユーザーイ

ンタフェースを実現するのが困難である。といった問題点があった。このため、教育用に

遺伝的アルゴリズムを学習するのには不向きであった。

そこで、Windows や MAC、UNIX、LINUX など、機種に依存することなく実行、開

発ができる JAVA という言語を使い、GAUSS の基本的機能を再開発したのが J-GAUSS

である。

JAVA で再開発を行うことによって、先に述べた JAVA のマルチプラットホームという

恩恵のほかに、オブジェクト指向型の言語なので、継承を利用することができ、各種機能

Page 6: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

の組み込みなども容易になった。

3. 配送計画問題プログラムとは 配送計画問題プログラムとは、先の遺伝的アルゴリズムを基に設計された J-GAUSS を

利用したプログラムである。

一人のセールスマンが最短経路で、各都市を巡回する経路を見つけ出す『TSP』という

プログラムがあるが、配送計画問題は、このプログラムと基本的な考えは同じである。し

かし、配送計画問題では各都市を回る車が複数台存在し、各配送車の経路の総距離が短く

なるように、かつ経路の長さが同じになるように計算しており、TSP よりも考え方は少

し複雑になる。

配送計画問題プログラムは、GUI により全てのパラメータやオブジェクトの設置、プ

ログラムの作動がマウスにより操作できる。また、コマンドプロンプトからの java コマ

ンドに加えて、java アプレットによって HTML ファイルから起動させることができる。

配送車ごとの走行距離や、合計走行距離はグラフの表示により視覚的に認識することが

可能である。

4.配送計画問題の機能拡張 4-1.機能拡張の概要

配送計画問題(Distribution Planning System)の機能拡張として、まず第一に、プロ

グラムを使用している人物によって長さを調節できる棒状の障害物(Wall)の配置を行え

るようにした。具体的な操作方法としては、Wall のチェックボックスを選択、始点とな

る位置をクリックし次に終点となる位置をクリックする。これにより二点間に障害物とし

て棒状の壁が配置される様子を図 2 に示す。

第二に、WallDelete のチェックボックスを選択することにより、設置した障害物を消

去することができる。これにより、障害物の配置を変更することが可能である。

第三に、最も重要な拡張機能として、障害物を迂回した上での、最短距離を結ぶ配送

ルートの検索を可能にした。配達先(guest)と配達センター(center)のチェックボック

スを選択し、それらを配置し、その上で障害物を配置、START ボタンをクリックしプロ

グラムを起動させると、従来では GA によって各配達先の最短距離を探索する処理を行う

が、その際、障害物を迂回しつつ、配達先と配達先、配達先と配達センターを最短距離を

Page 7: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

結ぶルートを探索、発見する機能を追加した様子を図 3 に示す。

図 2 障害物の配置

図 3 障害物を設置した状態での実行結果の一例

4.2 具体的な機能拡張の方法 現在ある配送計画問題プログラムに障害物を設定するということで、初めは池のような

Page 8: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

不定物を画像として読み込もう計画したが、計算の簡略化のため本論文では、ユーザーが

自由に設置できるライン(以下 Wall)を障害物とした。

まず、Wall を描画するプログラムを書き、さらに、ユーザーが Wall を引くためのボタ

ン、そして Wall を消して値をクリアするボタンを設置した。Wall は、始点と終点をマウ

スでクリックすることによって引かれる。ここで引かれた Wall のポイント、始点の x 座

標 y 座標をそれぞれ、x1Wall、y1Wall とし、終点の x 座標 y 座標を、x2Wall、y2Wall

という変数として設定し、加えて後に計算するときに必要になるため、どちらが値として

大きいかを判定し、大きいほうを TMP_MAX、小さいほうを TMP_MIN と X と Y それ

ぞれに設定した。

こうして引かれた、配送ルート上に Wall があるかどうかの判定と、ルート上に Wall

があった場合、Wall の上を通らないよう、始点側に避けて通るか、終点側に避けて通る

か、どちらを通った場合のほうが短いルートになるか、計算をプログラム上で行い、結果

に反映する。

図4 始点側を通った場合の実行結果

Page 9: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

図5 終点側を通った場合の実行結果

まず、配送ルート上に Wall があるかどうかの判定をする。これには、それぞれの線を

一次関数として扱い、連立方程式を使い、配送ルートのラインと障害物の Wall の交点を

求め、その交点が Wall 上にあった場合、ルートと Wall が交わると判断し、Wall 上にな

かった場合はルートと Wall は交わらないと判断する。

計算式は以下の通りである。

交点は

の連立方程式の解である

A=(Y1-Y2)/(X1-X2) B=(Y2*Y1-X2*Y1)/(X1-X2) a=(y1-y2)/(x1-x2) b=(y2*y1-x2*y1)/(x1-x2) 交点の座標は

X 座標=(B-b)/(a-A) Y 座標=(a*B-A*b)/(a-A)

以上の計算をし、ルートと Wall の交点を求める。そして、その交点のポイントが、以下

の図のように、Wall 上にあるかどうかを判定し、無いのならそのままルートを計算し、

あるのなら、始点側を通るか終点側を通るかの判定に移る。

図 6 交点が WALL 上にあるかどうかの判定

Page 10: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

図 6 の場合は交点があるので、始点側か終点側かの計算に移る。

図 7 WALL の始点側と終点側のルート

始点側と終点側のどちらを通るのが短いのかの判定は、Guest(ルートのラインの始点)

とラインの始点側までの距離+始点側と Guest(ルートラインの終点)までの距離の和と、

Guest(ルートのラインの始点)とラインの終点側までの距離+ラインの終点側と Guest

(ルートラインの終点)までの距離の和を比べ、短い方にラインを引くという処理をして

いる。

例えば、始点側の GuestXX[i]と YY[i]と Wall の始点側の距離は、上図の通り、三平方

の定理を利用し縦軸は Wall の始点側の X座標-GuestXX[i]を引いた物の 2乗と、横軸の距

離、Wall の始点側の Y 座標-GuestYY[i]を引いた物を 2 乗したものの和の平方根というこ

とになる。

具体的な例を下図にて説明する。

図 8 終点側のライン X を求める図

Page 11: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

図9の始点側の Guest から Wall の終点側のポイントまでの距離Xを求めるとする。この

場合、三平方の定理を用いてXを求めるためには、図中のAとBの距離をそれぞれ求めな

ければならない。Aの距離は、X軸なので Wall の終点側の 5 から始点 Guest の 0 を引い

た 5、Bの距離はY軸なので同じくWallの終点側の 10から始点Guestの 0を引いた 10、

となる。これにより、A=5、B=10 という答えが導かれたので、斜辺Xは三平方の定理

によって

X 2=52+102

X=√125

となる。Wall の終点側から Guest の終点側への計算も同じ様にして行い、全ての Guest

と Wall との交点があるかどうかの判断と計算を行う。

以上の処理をした結果、短い側にルートを設定し実際の線の描画をするようになって

いる。

5. 結果 本論文で機能拡張として以下の 4 点を追加した。

(1) 障害物(Wall)を設置するための「Wall」チェックボタンを追加

(2) 障害物(Wall)を消去するための「WallDelete」のチェックボタンを追加

(3) マウスクリックによって任意の場所に障害物(Wall)の設置可能な機能を追加

(4) 障害物(Wall)を迂回しつつ、最適なルートを検索し結果をグラフィカルに反映する

機能を追加

以下に、本論文で追加した機能の実行結果を示す。

Page 12: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

図 9 ルート上に障害物が無い通常の処理

図 10 ルート上に障害物があり、迂回するルート示した処理

Page 13: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

図 11 障害物が複数のルートを遮った場合の迂回したルートの処理

本論文中で解決できなかった不具合として、下記二点の問題がある。

(1)繰り返し本プラグラムの処理を続けると、計算処理中の描画が障害物を反映しなく

なる。図 12 参照。

(2)最短ルートが存在するにも関わらず、障害物の始点、もしくは終点を経由して結ぶ

ルートを選択してしまう。図 13 参照

これらの不具合については、本論文中では原因究明ができておらず、今後の課題であ

る。

図 12 計算中の描画が、障害物を反映していない不具合

Page 14: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

図 13 最短ルートを結ばず、障害物の端点を経由している不具合

6.むすび 今回のプログラム機能追加にあたり、研究に取り掛かる段階で全くと言っていいほど

Java の知識が無かったが、プログラムを書くことにより、以下のような事が得られた。

(1)Java の基本的な構造や、オブジェクト指向の考え方等を学習することができた。

(2)プログラムを作るにあたって、数学的な考え方や論理的な考え方が必要だという事を

身をもって体感し学習することもできた。

(3)プログラムを学んで、作るということにより、プログラムというものがどういった構

造、どういった考えで作られているか学習でき、今後コンピュータを使う上で、仕組みを

理解しているということは、直接的に役立つ事は無くとも理論的に理解できているという

ことは、大いに役立つと思う。

しかし、本研究論文で追加できた機能は、線を避けてルートを探し出すという機能だけ

に留まっており、今後の課題として以下の事があげられる。

(1)四角形や円形の障害物などを数種類選んで設定できるという機能までは追加できてい

ない。

(2)現在のプログラムでは配送ルートは学校のグラウンドのような、何も無い自由な空間

であるが、現実世界の配送ルートのように、道路のような制限があるルート上を最短距離

Page 15: 『配送計画問題プログラムの機能拡張』tsutsui/zemi/2002/pdf/tsuchida.pdf · ジョブショップスケジューリング スケジューリング問題各種工程スケジューリング

で回る、というようなプログラムにできればより実用性があるプログラムになる。これも

本プログラムの今後追加すべき機能である。

7.参考文献、付録 (1)高橋麻奈、『やさしい Java』第 3 版(ソフトバンクパブリッシング)

(2)新世代工学シリーズ『人工知能』、pp85�97、オーム社筒井担当部分 5.3 節より