日本財団 図書館


4. シミュレーション内容
4.1 概要
 今回は,Fig. 5に示すサンプルデータを用いて10個のブロックを2種の固定定盤上に配置するシミュレーションを行った。ブロックの形状は3次元的であるがここでは平面への投影形状を考える。
 前章の手順に従ってC言語でプログラムを作成した。Fig. 6にプログラムのフローチャートを示す。今回のプログラムにおいては解を早く収束させる事よりも解の精度を上げる事を重要視したため,冷却係数はαの値を1に近づけ温度の減少を非常に小さくした。初期温度は,プログラムを繰り返し実行することにより,初期状態で解の良し悪しに拘らず高確率で採用される温度を試行錯誤的に求め,これを採用した。終了温度は,計算回数の上限をl00,000回に設定した。これは今回用いたコンピュータ(CPU Celeron400MHz,メモリ128MB)で計算を行った場合に,比較的短時間でサンプルを収集できるためである(2〜3分)。また,計算途中で解が0になった場合は一旦計算を終了し,計算結果を出力するようにした。今回のプログラムでは,推移係数によるマルコフ連鎖の増加は行わなかった。これは,プログラムを作成しサンプルを収集する中で試行錯誤的に求めた。
 
4.2 目的関数と制約条件
 これまでなされた板取り問題などでは,通常,板の残材(空きスペース)を最小化するという目的関数がとられてきた。定盤上それぞれのブロックが重なることができない場合や定盤エリアからはみ出すことのできない場合はこれでもよいが,実際の現場では,ブロック形状が3次元的であるため,投影の形状では一部重なったり,ブロックが定盤からはみ出ていたりする場面も存在する。そのため,決められた定盤の中にブロックを収めるのを第一目標とするが,どうしても無理な場合は,ブロックの重なりと,はみ出しを考慮に入れた最適化ができるように考え,今回はFig. 7に示す2種類の重なりに対しペナルティを考慮に入れ最適化を行った
 
Fig. 7 Penalty
 
目的関数は
ペナルティ1+ペナルティ2→最小化  (3)
ペナルティ1: ブロックと定盤の重なり
ペナルティ2: ブロック同士の重なり
制約条件は
ペナルティ1,ペナルティ2≧0  (4)
 
4.3 ブロックの重複判定
 一般にブロックは複雑な形状をしているが,本研究では組立定盤上のブロック配置を二次元問題として考える。定盤上に任意形状のブロックを配置する際,まず,2つのブロックが重なり合うかどうかを判定し認識させる必要がある。そこで,Fig. 8に示すような2つのブロックP,Qが重なり合うかどうかを判定する。
 判定方法は以下の手順で行う。
(1)ブロックを凸多角形の二次元図形として考え,それぞれの座標を入力する。
(2)2つのブロックの辺を時計回りに辿るベクトルで表現する。
(3)Fig. 8で示される図形Pを形成する各ベクトル式(5)に対し,図形Qの各頂点(xi,yi)の判別式(6)を計算する。
ei: aix + biy + Ci = O  (5)
Hij: aixj + biyj + ci  (6)
(4)多角形Pの少なくとも一つの辺からみて,多角形Qの全頂点がHij>0の関係であれば,二つの多角形は互いに独立であるという条件14)に基づき2つの図形が重なり合うかどうかを判定する。
 
Fig. 8 Defined block


前ページ 目次へ 次ページ





日本財団図書館は、日本財団が運営しています。

  • 日本財団 THE NIPPON FOUNDATION