JP4723740B2 - 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム - Google Patents

密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム Download PDF

Info

Publication number
JP4723740B2
JP4723740B2 JP2001073141A JP2001073141A JP4723740B2 JP 4723740 B2 JP4723740 B2 JP 4723740B2 JP 2001073141 A JP2001073141 A JP 2001073141A JP 2001073141 A JP2001073141 A JP 2001073141A JP 4723740 B2 JP4723740 B2 JP 4723740B2
Authority
JP
Japan
Prior art keywords
objective function
arrangement
density
elements
placement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001073141A
Other languages
English (en)
Other versions
JP2002279337A (ja
Inventor
文義 笹川
明雄 品川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001073141A priority Critical patent/JP4723740B2/ja
Priority to US09/986,917 priority patent/US6748574B2/en
Publication of JP2002279337A publication Critical patent/JP2002279337A/ja
Application granted granted Critical
Publication of JP4723740B2 publication Critical patent/JP4723740B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/18Network design, e.g. design based on topological or interconnect aspects of utility systems, piping, heating ventilation air conditioning [HVAC] or cabling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level

Description

【0001】
【発明の属する技術分野】
本発明は、例えば大規模集積回路(LSI;large scale integration)等の設計において多数の回路素子の配置を行なう際に用いて好適な、密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラムに関する。
【0002】
【従来の技術】
様々な分野において、多数の要素(配置要素)を一定の条件(配置条件)の下にできるだけ最適な状態で配置する、という問題が知られている。こうした問題は一般に、配置問題,最適配置問題,配置最適化問題,グラフマッピング問題などの名前で呼ばれる(以下の記載では、これらの名称を統一して、便宜的に「配置問題」と呼ぶことにする。なお、この言葉は、後の記載で特に断り書きをして定義付けを行なうまでは、一般的な広い意味で用いるものとする)。
【0003】
例えば、上に挙げたLSI等の設計においては、多数の回路素子(配置要素)を、以下に挙げる条件(配置条件)を満たしながら、できるだけ最適な状態で回路基板上に配置することが要求されるが、これはまさに上記の配置問題に相当する。
・ 各配置要素は一定の大きさおよび形状を有する。
・ 配置要素間の接続関係は予め規定されている。
・ 配置要素は所定の配置領域内に配置される。
【0004】
この他にも、トラックを使った配送ルートの最適化,工場の運営スケジュールの最適化,交通機関におけるダイヤグラムの最適化,看護婦等の勤務スケジュールの最適化,ガントチャート(時間と生産量の関係を表すチャート)の最適化をはかる問題などが、配置問題の例として挙げられる。
そして、このような配置問題に対して要求される解は、配置条件をできるだけ最適な状態で満たす配置要素の配置を表す解、ということになる。こうした解は一般に、配置最適解,最適配置解若しくは単に最適解と呼ばれる(以下の記載では、これらの名称を統一して、便宜的に「最適解」と呼ぶことにする。なお、この言葉も、後の記載で特に断り書きをして定義付けを行なうまでは、一般的な広い意味で用いるものとする)。
【0005】
このような配置問題に対する最適解を求める場合には、配置条件に対する配置解の好ましさを表す目的関数を導入し、この目的関数を使用するのが一般的である。
具体的には、配置条件をより好ましい状態で満たすほど目的関数が小さく(或いは大きく)なるように目的関数を設定する。そして、目的関数を最小(或いは最大)とするような配置解を求め、それを最適解とする。
【0006】
しかし、特に配置要素の数が多く、また配置条件が複雑な場合には、目的関数が高次化・複雑化するために、目的関数を最小(或いは最大)とする解を求めることは、不可能であるか、あるいは膨大な演算時間を要するために現実には困難となってしまう。
このような場合には、逐次改善法によって目的関数の初期配置解を徐々に改善し、改善された配置解を所定の判断基準に基づき随時評価して、判断基準を満たす配置解が得られた時点で、その配置解を目的関数の近似的な最適解とする方法が用いられる(こうした方法を指して「目的関数を最適化する」と呼ぶ場合もある)。こうした最適化のためのアルゴリズムとしては、例えばミンカット法(min−cut法),n要素交換法,自己組織化法等が挙げられる。
【0007】
特に高次かつ複雑な問題に対しては、いわゆる遺伝的アルゴリズム(他にも進化プログラミング等、様々な呼称があり、それぞれ厳密には内容が異なるが、以下の記載では一般的な広い意味で用いるものとする)を用いた手法がよく用いられる。この手法では、配置解を遺伝子として表現した上で、この遺伝子の一次ストリングである染色体を作成し、解候補の集団に対して選択(se1ection),自己複製(reproduction),交叉(crossover) ,突然変異(mutation)等の操作(遺伝オペレーション)を繰り返し施しながら世代を更新していき、所定の判断基準を満たす配置解を表す遺伝子が得られた時点で、その配置解を近似的な最適解とする。
【0008】
こうした手法を使用することにより、目的関数を最小(或いは最大)とする厳密な最適解ではなくとも、実用に充分耐える精度の近似最適解を得ることができる。
なお、以下の記載では、ある配置問題について、最初の手法のように最適解を直接求める場合と、後者2つの手法のように所定の判断基準を満たす配置解を求めてこれを近似的な最適解とする場合とを総称して、「配置問題を解く」或いは「配置問題の最適解を探索する」という言葉で呼ぶことにする。
【0009】
【発明が解決しようとする課題】
ところで、このような配置問題の中には、多数の要素の密度が一様となるように配置を行なう、という条件(密度一様化条件)を含むものがある。以下の記載では、こうした配置問題を「密度一様化配置問題」と呼ぶことにする。
例えば、上述したLSI等の設計の例においても、実際には上に列挙した配置条件に加えて、多数の要素の密度が一様となるように配置を行なう、という条件が要請されることになる。
【0010】
この密度一様化条件は、特に配置要素の数が多く、配置条件が複雑な場合には、極めて困難かつ過酷な条件となる。よって、密度一様化条件を含むすべての配置条件に基づいた目的関数(汎目的関数)を作成すると、目的関数の次数が増大して最適解の探索が困難となってしまう。
そこで従来は、密度一様化条件以外の他の配置条件に基づいて作成した目的関数を用いて最適解の探索を行ない、得られた解に対してさらに密度の疎密を解消するアルゴリズム等を実行することにより、密度一様化配置問題の最適解を探索する手法が採られてきた。こうした従来の疎密解消アルゴリズムの例としては、本発明者らが先に提案した手法(特願平10−258334号,特願2000−90065号)や、REN-SONG TSAY et al.,“PROUD: A SEA-OF-GATES PLACEMENT ALGORITHM”(IEEE DESIGN & TEST OF COMPUTERS, 1988)に記載された手法などが挙げられる。
【0011】
しかしながら、上述の手法によって密度一様化配置問題を解こうとすると、他の配置条件に基づく目的関数の最適化の作業に加えて、疎密解消アルゴリズムの実行に膨大な演算処理が必要となり、最適解の探索に極めて時間がかかってしまう。
近年のLSI設計技術やその他様々な技術の高度化・複雑化に伴い、密度一様化条件の下で最適解の探索が要求されるような配置問題は今後ますます増加し、その内容も一層複雑化していくことが予想される。こうした背景からも、配置要素の数が多く配置条件が複雑な密度一様化配置問題に対しても、より高速かつ効率的に最適解を探索する技術が必要とされている。
【0012】
本発明は、このような課題に鑑み創案されたもので、配置要素の数が多く配置条件が複雑な密度一様化配置問題に対しても、より高速かつ効率的に最適解を探索できるようにした、密度一様化配置問題の最適解探索方法を提供することを目的とするとともに、更には最適解を探索すべくコンピュータを動作させるための密度一様化配置問題の最適解探索プログラムを提供することを目的とする。
【0015】
【課題を解決するための手段】
上述の目的を達成するために、本密度一様化配置問題の最適解探索方法は、複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件(以下、密度一様化条件という)を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、前記密度一様化配置問題に対する最適解を探索する方法であって、処理装置が、前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第1の目的関数に記密度一様化条件を表す第2の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第3の目的関数として作成するために前記第2の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、
前記第1の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第2の目的関数を線形結合した関数を、前記第3の目的関数として作成する目的関数作成ステップと、
記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第3の目的関数の前記第2の目的関数に乗算する所定の係数を変化させることによって、前記第3の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、を実行することを特徴としている。
【0016】
また、前記処理装置が、所定のスケジュールに従って、前記遺伝的アルゴリズム実行ステップによる前記遺伝的アルゴリズムの実行,前記目的関数作成ステップによる新たな前記第3の目的関数の作成,および,前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行を、順次繰り返し実施するのが好ましい。
【0017】
また、前記処理装置が、前記初期配置状態取得ステップにおいて、上記第1の目的関数を最適化する解を求め、これを記初期配置状態とするのが好ましい。
さらに、前記処理装置が、前記目的関数作成ステップにおいて前記複数の要素の前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置を考慮して、前記複数の要素を密度が一様となるように仮想的に配置し、得られた前記複数の要素の仮想的な配置位置と前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置との関係を表す関数を、記第2の目的関数として作成するのが好ましい。
【0018】
さらに、前記処理装置が、前記遺伝的アルゴリズム実行ステップにおいて、前回の前記逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なうのが好ましい。
【0019】
また、前記処理装置が、前記遺伝的アルゴリズム実行ステップにおいて、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団を作成し、作成された前記複数の個体集団の個体を基本的には互いに隔離しつつ、記スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なうのが好ましい。
【0020】
一方、本発明の別の態様に拠れば、複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件(以下、密度一様化条件という)を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第1の目的関数に前記密度一様化条件を表す第2の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第3の目的関数として作成するために前記第2の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、前記第1の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第2の目的関数を線形結合した関数を、前記第3の目的関数として作成する目的関数作成ステップと、前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第3の目的関数の前記第2の目的関数に乗算する所定の係数を変化させることによって、前記第3の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、をコンピュータに実行させる密度一様化配置問題の最適解探索プログラムも提供される。
【0021】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
なお、以下の記載においては説明の便宜上、複数の要素を所定の領域に一定の条件の下で配置する問題を「配置問題」と呼び、この配置問題に対して更に複数の要素の密度を一様にするとの条件(密度一様化条件)を加えた問題を「密度一様化配置問題」と呼ぶことにする。言い換えれば、「密度一様化配置問題」から密度一様化条件を除いたものが「配置問題」ということになる。
(1)本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の構成図1は本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の構成を示すブロック図であり、この図1に示す密度一様化配置問題の最適解探索装置1は、前述した密度一様化配置問題が与えられた場合に、この密度一様化配置問題に対する最適解を探索するものである。
【0022】
ここで、図1において、3は各種の処理に必要な情報の読み出し・書き込みを行なう作業用メモリ(RAM)、5Aは各種の設定画面や処理にて得られた複数の要素の配置解等を表示する表示部、5はこの表示部5A上における表示状態を制御する表示制御部、7Bは表示部5A上の表示データを参照しオペレータがその表示データに対する応答情報を入力するキーボード,マウス等の入力部、7Dは入力部7Bを制御する入力制御部である。
【0023】
また、8はハードディスクで、このハードディスク8は、密度一様化配置問題の最適解探索装置1を動作させるために必要となる一切の情報(OS等)を記憶するものであるとともに、後述する密度一様化配置問題の最適解探索プログラムを記憶するものである。なお、6はCD−ROMドライブやMOドライブ等の外部記憶媒体読出書込部,6Aは対応するCD−ROMディスクやMOディスク等の外部記憶媒体,7Aは印字部,7Cは印字制御部であり、外部記憶媒体読出書込部6および印字部7Aは、それぞれ、入力部7Bからの指示に応じて、表示部5Aに表示された複数の要素の配置解等を、外部記憶媒体6Aまたは所定の用紙に記録するものである。
【0024】
さらに、9は外部ネットワークとの情報の入出力を制御する通信インターフェース部である。本発明の密度一様化配置問題の最適解探索装置1はこの通信インターフェース部9を介して、本装置の外部に存在するLANやWAN,インターネット等の外部ネットワーク9Aに有線もしくは無線で接続され、外部ネットワーク9Aに存在する様々な情報を共有することが可能となっている。
【0025】
また、4は密度一様化配置問題の最適解探索装置1を構成する各部を統括的に管理するためのCPUである。本実施形態にかかる密度一様化配置問題の最適解探索装置1においては、CPU4は、図2に示すような初期配置状態取得部41,目的関数作成部42,逐次改善アルゴリズム実行部43,遺伝的アルゴリズム実行部44およびスケジュール管理部45に相当する機能を発揮することになる。
【0026】
ここで、初期配置状態取得部41は、与えられた密度一様化配置問題に関する複数の要素の初期配置状態を取得するものである。
また、目的関数作成部42は、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件(配置問題の配置条件)を表す第1の目的関数に、密度一様化条件を表す第2の目的関数を線形結合した関数を、この密度一様化配置問題の配置条件を表す第3の目的関数として作成するものである。
【0027】
さらに、逐次改善アルゴリズム実行部43は、初期配置状態取得部41により取得された初期配置状態を初期解として逐次改善アルゴリズムを実行することによって、目的関数作成部42により作成された第3の目的関数を最適化しながら、与えられた密度一様化配置問題の最適解を求めるものである。
また、遺伝的アルゴリズム実行部44は、目的関数作成部42による第3目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行に関する情報を、それぞれ遺伝子として表現し、この遺伝子の一次元配列からなる染色体を作成して、この染色体を個体として用いることにより、遺伝的アルゴリズムを実行するものである。
【0028】
さらに、この遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行後、得られた個体の染色体に含まれる遺伝子が表す情報に基づいて、目的関数作成部42による第3目的関数の作成、および、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が、それぞれ行なわれることになる。
また、スケジュール管理部45は、目的関数作成部42による第3の目的関数の作成,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行,および,遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行に関するスケジュールを取得する。さらに、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行,目的関数作成部42による新たな第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が、上記スケジュールに従って繰り返し実施されるように、目的関数作成部42,逐次改善アルゴリズム実行部43および遺伝的アルゴリズム実行部44をそれぞれ制御する。
【0029】
なお、上述した初期配置状態取得部41,目的関数作成部42,逐次改善アルゴリズム実行部43,遺伝的アルゴリズム実行部44およびスケジュール管理部45に相当する機能は、実際には、前述したハードディスク8や外部記憶媒体6A等の記録媒体に記録されたプログラム(以下、密度一様化配置問題の最適解探索プログラムという)を作業用メモリ(RAM)3に読み出し、そのプログラムを起動してCPU4で実行することにより、CPU4の動作として実現される。
【0030】
なお、この密度一様化配置問題の最適解探索プログラムは、例えばCD−ROM等の外部記憶媒体6Aに記録されており、CD−ROM等からコンピュータにおけるハードディスク8にインストールされて使用される。即ち、上述したハードディスク8やCD−ROM等が、密度一様化配置問題の最適解探索プログラムを記録したコンピュータ読み取り可能な記録媒体に相当する。
【0031】
このように、本実施形態にかかる密度一様化配置問題の最適解探索装置1は、上述した作業用メモリ(RAM)3,CPU4,表示部5A,表示制御部5,外部記憶媒体読出書込部6,印字部7A,印字制御部7C,入力部7B,入力制御部7D,ハードディスク8,通信インターフェース部9等を有する一般的な計算機システム(コンピュータ)を用いて実現することが可能である。
(2)本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の動作本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置1の概略的な動作について、図3に示すフローチャートを参照しながら説明する。
【0032】
まず、最適解探索の対象となる密度一様化配置問題は、配置対象の複数の要素に関するデータ,配置先となる所定の領域に関するデータ,配置に伴う一定の条件に関するデータ(以上は、密度一様化配置問題の基礎となる配置問題に関するデータとなる),密度一様化条件に関するデータなど、様々なデータの形で準備される。
【0033】
また、これらのデータに加えて、第1の目的関数に関するデータも準備される。この第1の目的関数は、密度一様化配置問題の基礎となる配置問題に基づいて設定されるもので、配置問題に対する配置解の好ましさを表す関数である。具体的には、ある配置解が配置問題に伴う一定の条件をより好ましい状態で満たすほど、その配置解を用いたこの第1の目的関数の演算値が小さく(或いは大きく)なるように設定される。
【0034】
この密度一様化配置問題に関する様々なデータは、データファイルの形で、外部記憶媒体読出書込部6,ハードディスク8,通信インターフェース部9等を通じ、本発明の密度一様化配置問題の最適解探索装置1に入力される。また、オペレータが入力部7Bを通じて所要のデータを直接入力することも可能である。
さて、本発明の最適解探索装置1に、密度一様化配置問題のデータが入力されると、まず、初期配置状態取得部41によって、与えられた密度一様化配置問題に関する複数の要素の初期配置状態が取得される(初期配置状態取得ステップ,S1)。
【0035】
次に、遺伝的アルゴリズム実行部44によって、目的関数作成部42による上記第3の目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部43における上記逐次改善アルゴリズムの実行に関する情報のうち少なくとも一方が遺伝子として表現され、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムが実行される(遺伝的アルゴリズム実行ステップ,S2)。
【0036】
続いて、目的関数作成部42によって、遺伝的アルゴリズム実行部44により得られた個体の染色体に含まれる遺伝子により表される情報に基づいて、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件(配置問題の配置条件)を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成される(目的関数作成ステップ,S3)。
【0037】
その後、逐次改善アルゴリズム実行部43によって、遺伝的アルゴリズム実行部44により得られた個体の染色体に含まれる遺伝子により表される情報に基づき、初期配置状態取得部41により得られた初期配置状態を初期解として逐次改善アルゴリズムが実行される。そして、目的関数作成部42で作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解の候補となる配置解が求められる(逐次改善アルゴリズム実行ステップ,S4)。
【0038】
さらに、逐次改善アルゴリズム実行部43によって、実行された逐次改善アルゴリズムの内容が所定の基準を満たしているかどうか、また、逐次改善アルゴリズムの実行により得られた最適解候補が所定の基準を満たしているかどうかが判断され(S5)、いずれかが基準を満たしていないと判断された場合には、再び、目的関数作成部42による第3の目的関数の作成、または、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行へと移行して、新たな最適解候補の探索が行なわれるとともに(S5のNO1ルートまたはNO2ルート)、満たしていると判断された場合には、この最適解候補が当該密度一様化配置問題の近似最適解として決定されることになる(S5のYESルート)。
【0039】
決定された該密度一様化配置問題の最適解に関するデータは、表示制御部5の制御により表示部5Aに表示されたり、印字制御部7Cの制御により印字部7Aで印字されたりすることになる。また、データファイルの形で、外部記憶媒体読出書込部6やハードディスク8に保存し、または通信インターフェース部9を通じて外部ネットワーク9Aに出力することも可能である。
【0040】
なお、以上の各部における動作は、オペレータが必要に応じて、入力部7Bを通じて所望の指示やデータを入力することにより、制御することが可能である。
また、実際には、上述のフローの開始前に、スケジュール管理部45によって、以上の各動作(初期配置状態取得部42による初期配置状態の取得,遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行,目的関数作成部42による新たな第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行)の実施についてのスケジュールが取得される。そして、上述のフローの開始後は、スケジュール管理部45によって、以上の各動作が繰り返し実施されるように、上記スケジュールに従って、目的関数作成部42,逐次改善アルゴリズム実行部43および遺伝的アルゴリズム実行部44が、それぞれ制御される。
【0041】
以上に概略を説明した密度一様化配置問題の最適解探索装置1の各部の動作(初期配置状態取得部42による初期配置状態の取得,遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行,目的関数作成部42による新たな第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行)について、以下に詳細を説明する。
【0042】
なお、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行は、実際には、初期配置状態取得部41による初期配置状態の取得の直後に行なわれることになるが、ここでは説明の便宜上、目的関数作成部42による新たな第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行の説明の後に、それらの内容に基づき説明することにする。
【0043】
また、スケジュール管理部45によるスケジュールの取得および各部の制御については、他の各部の動作の説明に応じて随時説明することにする。
(2−1)初期配置状態取得部の動作
初期配置状態取得部41では、与えられた密度一様化配置問題に関する複数の要素の初期配置状態が取得される。
【0044】
具体的に説明すると、初期配置状態取得部41は、まず、与えられた密度一様化配置問題についての様々なデータのうち、第1の目的関数に関するデータを取得する。そして、この第1の目的関数を最適化する配置解を求め、これを当該密度一様化配置問題に対する初期配置状態とするのである。
こうした構成によって、密度一様化条件を除く配置条件を反映した適切な配置状態を高速に求め、これを初期配置状態として密度一様化問題の最適解探索を行なうことが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
【0045】
ここで、第1の目的関数を最適化する配置解は、初期配置状態取得部41において一般的な逐次改善法や遺伝的アルゴリズムを実行することにより求めてもよいが、事前にこうした手法を用いて配置解を求めておき、第1の目的関数に関するデータの一つとして入力してもよい。前者の構成とすれば、入力するべき密度一様化配置問題に関するデータが少なくて済み、密度一様化配置問題の最適解探索に関する一連の手順の自動化に寄与するのに対し、後者の構成とすれば、本発明の装置もしくはプログラムの構成の簡素化・低価格化に寄与するとともに、最適解探索に関する一連の手順の高速化も図ることができる。
【0046】
なお、ここで取得される複数の要素の初期配置状態は、上述のような第1の目的関数を最適化する配置解に限られるものではなく、何か他の条件により求めてもよい。また、複数の要素をランダムに配置して、これを初期配置状態としても構わない。これにより、扱う問題の種類によっては、本発明の構成をより簡素な構成とすることができるとともに、最適解探索の手順を高速化することができる。
(2−2)目的関数作成部の動作
目的関数作成部42では、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件(配置問題の配置条件)を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成される。
【0047】
具体的に説明すると、まず、目的関数作成部42は、与えられた密度一様化配置問題の密度一様化条件を表す第2の目的関数を作成する。この第2の目的関数は、複数の要素の配置解が密度一様化条件をより好ましい状態で満たすほど(すなわち、その配置解において複数の配置要素がより均一に配置され、疎密の程度が低いほど)、その配置解を用いたこの第2の目的関数の演算値が小さく(或いは大きく)なるように設定される。すなわち、配置要素の密度が一様になると減少する(或いは増大する)ような関数を選び、これを第2の目的関数と決めるのである。
【0048】
続いて、目的関数作成部42は、密度一様化配置問題に関するデータの一つとして入力された第1の目的関数(配置問題の配置条件を表す目的関数)に、上の動作により得られた第2の目的関数(密度一様化条件を表す目的関数)を線形結合することにより、密度一様化配置問題の配置条件を表す第3の目的関数を作成する。
【0049】
例えば、第1の目的関数をCost、第2の目的関数をUとすると、目的関数作成部42によって得られる第3の目的関数は、Cost+αUと表すことができる。なお、αは第1の目的関数と第2の目的関数の線形結合係数を表す。
ここで、第2の目的関数の作成手順としては、好ましくは、複数の要素を密度が一様となるように仮想的に配置する手法を利用する。この手順について、以下に詳しく説明する。
【0050】
なお、以下の説明では、便宜上、複数の要素の配置解が密度一様化条件をより好ましい状態で満たすほど(すなわち、その配置解において複数の配置要素がより均一に配置され、疎密の程度が低いほど)、その配置解を用いた第2の目的関数の演算値が小さくなるように(すなわち、最適解の場合に第2の目的関数が最小値を取るように)、第2の目的関数を設定する場合を考える。
【0051】
まず、目的関数作成部42は、複数の要素の実際の配置位置を考慮して、密度が一様となるように複数の要素を仮想的に配置する。
ここで、複数の要素の実際の配置位置とは、初期配置状態取得部41により得られた初期配置状態における、複数の要素の初期配置位置、もしくは、後述するように、スケジュール管理部45により取得されたスケジュールで規定された時点における、複数の要素の配置位置のことを指す。
【0052】
具体例として、密度一様化配置問題に含まれる配置要素aを考える。この要素aの実際の配置位置を表す座標を(xa,ya)とする。この配置要素aに対して、仮想的な影の配置要素a’を想定する。実際の配置要素に対応するこの仮想的な配置要素a’を、簡単のためにスロットと呼ぶことにする。
目的関数作成部42は、このスロットa’を、対応する配置要素aの実際の配置位置を表す座標(xa,ya)に基づいて配置領域内に一様に分布させ、スロットa’の配置位置を表す座標(xa slot,ya slot)を、対応する配置要素の仮想的な配置位置として得るのである。
【0053】
複数の配置要素に対応する複数のスロットを配置領域内に一様に分布させる手法としては、本発明者が提案したパッキング手法を応用することができる(特開2000−305920)。本発明においてパッキングとは、定められた領域内に複数のスロットを互いに重なり合わないように配置することをいう。具体的なパッキング手法としては、以下の手法が挙げられる。
(A)煉瓦積み方式のパッキング法
このパッキング法は、複数の配置要素の実際の配置位置に基づいて、配置領域の一頂点から順に対応するスロットを詰めていく方法である。
【0054】
例えば、複数の配置要素が図4(a)に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、図4(b)に示すように、配置領域の左下に存在する配置要素に対応するスロットから右側のスロットへ、配置領域の左下の一頂点から右側へと順に詰めていき、最右翼の端まできたら、再び最左翼へ戻り、既に置かれたスロットの上に詰める。以下同様のことを、配置領域のスロットがなくなるまで繰り返す。
【0055】
言い換えれば、所定領域の一頂点を基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
このパッキング法においては、配置対象となる複数のスロットに予め順序を付けておき、新たに配置するスロットが既に配置されたスロットに重なることがないよう、この順序に従ってスロットの配置を行なっていく。この順序は、複数の配置要素の実際の配置位置に基づいて決定する。具体的には、まず、配置要素の実際の配置位置における、各配置要素間の相対的な位置関係を考える。そして、一列に配置されるスロットの横幅の総和が配置領域の横幅を越えてはならない、などの条件を定めて、各配置要素に対応するスロットの配置の順序を決めていくのである。
(B)テトリス方式のパッキング法
このパッキング法は、煉瓦積み方式を拡張した方法である。スロットの大きさを予め考慮にいれ、スロットをパッキングした結果、パッキングの境界付近が極端に凸凹しないようにある程度配慮する方法である。
【0056】
例えば、複数の配置要素が図5(a)に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、まず、配置領域の一辺(ここでは下辺とする)を選択し、この一辺に対してスロットを積み上げながら配置するものと定めて、配置の際の規準の高さHsを定める。次に、予め決められたスロットの順番に従って、図5(b)に示すように、スロットの高さの和が上記規準の高さHsに達するまで、上で選択した一辺に対してスロットを積み上げるようにして詰めていく。次に、スロットを積み上げた位置のすぐ横に(ここでは便宜上右側とする)、同様にスロットを規準の高さHsに達するまで詰めていく。これを配置領域の最右側に達するまで続ける。配置領域の最右端に達したら、配置領域の最左端に戻り既にパッキングしてあるスロットの上に重ならないように積み重ねる。これを繰り返すことでスロットを最後まで詰める。
【0057】
以上、言い換えれば、所定領域の一辺を基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
スロットの配置の順序は、煉瓦積み方式の場合と同様に、対応する配置要素の実際の配置位置における、各配置要素間の相対的な位置関係から定める。具体的には、例えば、煉瓦積み方式について説明したのと同様に、スロットを左から右へ詰めていくパッキング過程の場合には、スロットが配置領域の最右端を飛び越えないという条件を定め、この条件に基づいて順番を決める。
(C)凝縮方式のパッキング法
このパッキング法は、配置領域内の適当な位置を選択し、この位置を中心としてスロットを詰めながら、スロットをパッキングしていく手法である。
【0058】
例えば、複数の配置要素が図6(a)に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、まず配置領域内の適当な位置を選択し、この位置をパッキングの中心Cとして定める。次に、予め決められたスロットの順番に従って、図6(b)に示すように、パッキングの中心に向かってスロットを順次詰めていく。そして、新たに配置するスロットが既に配置したスロットに重ならないようにパッキングを繰り返しながら、複数のスロットを最後まで詰めていくのである。
【0059】
言い換えれば、所定領域の中心点を基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
スロットの配置の順序は、まず、対応する配置要素の実際の配置位置について、パッキングの中心を原点とする各配置要素の極座標を考える。そして、配置要素の実際の配置位置の極座標(r、θ)の動径座標rの小さい順に、動径座標が同じ場合には偏角θの小さい順に、配置要素に順序をつけていく。
(D)拡散方式のパッキング法
このパッキング法は、凝縮方式のパッキングとは正反対の局所的パッキング法である。すなわち、一点のまわりにスロットを集めるのではなく、配置領域の各境界付近から均等にスロットをパッキングしていく。
【0060】
例えば、複数の配置要素が図7(a)に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、例えば図7(b)に示すように、配置領域内のスロットを、まず左下の隅に、次には右下の隅に、という様に、四つの隅を交互に基準として、水平方向に(または垂直方向に)パッキングしていく。
【0061】
言い換えれば、所定領域の全頂点を交互に基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
スロットの配置の順序は、対応する配置要素の実際の配置位置のx座標をもとにして、x座標の小さい順に配置要素に順序をつける。同様にして、配置要素のy座標をもとにして、y座標の小さい順に配置要素に順序をつける。これら2つの配置要素の順序を、順にOx,Oyで示すことにする。
【0062】
そして、以下の四つの手順に基づいて、スロットのパッキングを行なう。
D1:Ox,Oyの両方の値が小さい配置要素に対応するスロットを、配置領域の左下の隅から詰めていく。
D2:Ox,Oyの両方の値が大きい配置要素に対応するスロットを、配置領域の右上の隅から詰めていく。
D3:Oxの値が大きく、Oyの値が小さい配置要素に対応するスロットを、配置領域の右下の隅から詰めていく。
D4:Oxの値が小さく、Oyの値が大きい配置要素に対応するスロットを、配置領域の左上の隅から詰めていく。
【0063】
例えば、上記D1に従って、Ox,Oyの両方の順序で最も前にある配置要素Cijに対応するスロットを、配置領域の左下の隅に対して詰めるように配置する。そして、この配置要素Cijを2つの順序Ox,Oyから取り除く。次に、上記D2に従って、Ox,Oyの両方で最も後ろにある配置要素Cklに対応するスロットを、右上の隅に対して詰めるように配置する。そして、この配置要素Cklを2つの順序Ox,Oyから取り除く。さらに、上記D3に従って、Oxでは後ろに、Oyでは前にある配置要素Cmnに対応するスロットを、配置領域の右上の隅に対して詰めるように配置する。そして、この配置要素Cmnを順序Ox,Oyから取り除く。次には上記D4に従って配置要素を選択し、対応するスロットを配置した上で、選択した配置要素を順序Ox,Oyから取り除く。既に配置したスロットに対して重ならないように新たなスロットを順次詰めて配置しながら、これらの手順を順次交互に、配置要素がなくなるまで続ける。
【0064】
もちろん、配置要素を選択する手順(スロットを配置する手順)は、上述の例の様にD1,D2,D3,D4の順序および組み合わせである必要はなく、任意の順序および任意の組み合わせで実施できる。
以上、目的関数作成部42によって、上述のパッキング手法が随時選択され、複数の要素の仮想的な配置が行なわれる。これによって、簡潔で明快な手順に従いながら、複数の要素を密度が一様になるよう仮想的に配置することが可能となる。また、複数の仮想配置手法(パッキング手法)が用意されることで、多様な仮想配置が可能となり、後に説明するスケジューリング法との組み合わせによって、配置要素のより一層の疎密解消に寄与する。
【0065】
なお、一般に配置領域には、配置要素を置けない部分領域(配置禁止領域)が存在する場合がある。パッキング法を用いて要素の仮想的な配置を行なう場合には、このような配置禁止領域にはスロットを配置しないことが望ましい。このため、目的関数作成部42は以下のような方式を用いて、スロットが配置禁止領域に置かれないようにする。
(a)スキップ方式
この方式は、スロットが配置禁止領域に置かれた場合に、配置禁止領域の外側ヘスロットをスキップさせることによって、配置禁止領域を避ける方式である。
【0066】
例えば、図8(a)に示すように、配置領域内に配置禁止領域Xが存在する場合を考える。配置要素に対応するスロットのパッキングを上記の煉瓦積み方式で行なう場合、通常であれば配置禁止領域の上にパッキングされるスロットA,A’を、図8(b)に示すように、配置禁止領域の外側(ここでは右側)にスキップさせてパッキングする。
【0067】
言い換えれば、所定領域内に存在する配置禁止領域を配置対象から除外しながら、複数の要素の仮想的な配置を行なう、という手法である。
(b)押し出し方式1
以下の各方式は、スロットが配置禁止領域内にパッキングされた場合に、このスロットを配置禁止領域の外部へ押し出すことによって、配置領域の外側へ再配置する手法である。
【0068】
最初の方式では、対応する配置要素からの移動距離が短くなる方向にスロットを押し出すことによって、スロットを配置禁止領域の外側へ移動させる。
例えば、図9(a)に示すように、配置領域内に配置禁止領域Xが存在し、この配置禁止領域X内にスロットAがパッキングされた場合を考える。このスロットAに対応する配置要素の現在の配置位置が図の上方に存在する場合、図9(b)に示すように、スロットAの新たなパッキング位置と対応する配置要素の実際の配置位置との距離が最短となるように、スロットAを上方に移動させて配置禁止領域Xの外部に押し出す。
【0069】
言い換えれば、所定領域内に存在する配置禁止領域に要素が配置された場合に、要素の現在の配置位置と新たな仮想的配置位置との距離が最短となる方向にこの要素を移動させることにより、この要素を配置禁止領域の外部に再び仮想的に配置する、という手法である。
(c)押し出し方式2
次の方式では、配置禁止領域が配置領域の境界付近にある場合に、スロットが配置領域の外側へ出ないよう、あらかじめ定められた方向へとスロットを押し出すことによって、スロットを配置禁止領域の外側へ移動させる。
【0070】
例えば、図10(a)に示すように、配置領域内に配置禁止領域Xが存在し、この配置禁止領域X内にスロットAがパッキングされた場合を考える。この配置禁止領域Xの右側には配置領域の境界が近接しており、スロットAを右側に押し出すと配置領域の外側にはみ出してしまう。そこで、配置禁止領域Xと配置領域の境界が近接していない方向を予め決めておき(ここでは配置禁止領域Xの上側)、図10(b)に示すように、スロットAを予め決めた方向に移動させて配置禁止領域Xの外部に押し出す。
【0071】
言い換えれば、所定領域内の境界付近に存在する配置禁止領域に要素が配置された場合に、所定領域の境界から離れた方向にこの要素を移動させることにより、この要素を配置禁止領域の外部に再び仮想的に配置する、という手法である。
(d)スロットの配置禁止領域での位置を考慮した押し出し方式
次の方式では、配置禁止領域内でスロットが存在する位置を考慮して、スロットを押し出す際の距離が最短となる方向を決定し、スロットをこの方向に押し出すことによって、スロットを配置禁止領域の外側へ移動させる。
【0072】
例えば、図11(a)に示すように、配置領域内に配置禁止領域Xが存在し、この配置禁止領域X内にスロットA1,A2,A3,A4がパッキングされた場合を考える。図11(a)のように配置禁止領域Xが長方形の場合には、その対角線でこれを四つの三角形X1,X2,X3,X4に分割し、図11(b)に示すように、三角形X1,X2,X3,X4に各々重なっているスロットA1,A2,A3,A4を、押し出す際の距離が最短となる方向(すなわち、各三角形の一辺と重なる配置禁止領域Xの一辺方向)へ移動することによって押し出す。
【0073】
言い換えれば、所定領域内に存在する配置禁止領域に要素が配置された場合に、この要素を移動距離が最短となる方向に移動させることにより、この要素を上記配置禁止領域の外部に再び仮想的に配置する、という手法である。
以上、目的関数作成部42は、配置要素を置けない部分領域(配置禁止領域)に要素が仮想的に配置された場合に、上述の方式を随時選択して、複数の要素を配置禁止領域の外に再配置する。これによって、簡潔で明快な手順に従いながら、配置禁止領域を避けつつ複数の要素を仮想的に配置することが可能となる。
【0074】
続いて、目的関数作成部42は、上の動作により得られた複数の要素の仮想的な配置位置と、複数の要素の実際の配置位置との関係を表す関数を、上記密度一様化条件を表す第2の目的関数として作成する。
具体的には、他の配置要素の配置位置が一定であると仮定した場合に、任意の配置要素aの配置位置の座標(xa,ya)が対応するスロットの配置位置の座標(xa slot,ya slot)に等しければ(つまり、xa=xa slot,ya=ya slotであれば)、密度一様化条件を表す第2の目的関数が最小値を取るように、第2の目的関数を設定する。すなわち、この第2の目的関数は、すべての配置要素の配置位置座標が対応するスロットの配置位置座標と等しい場合に、最小値を取ることになる。このように、配置要素の実際の配置位置と対応するスロットの配置位置(仮想的な配置位置)との関係を用いることで、極めて簡素な構成で密度一様化の条件を表すことが可能となる。
【0075】
なお、第2の目的関数の作成手順としては、以上説明した手法(複数の要素を密度が一様となるように仮想的に配置する手法)の他にも、配置要素の現在の配置位置を基にした、幾つかの手法が考えられる。これらの手法について、以下に説明する。
(I)配置要素数密度関数を求める手法
この手法では、まず、図12(a)に示すように、配置領域Rを適当な部分領域r1,r2,r3,r4に分割する。
【0076】
続いて、図12(b)に示すように、各部分領域r1,r2,r3,r4に存在する配置要素の総数を数え、その値をNとする。
閾値Ncを適当に設定した上で、部分領域毎に関数uを次のように定義する。・もしN>Ncならば、
u=N−Nc (1)
・もしN≦Ncならば、
u=0 (2)
こうして部分領域毎に定義された関数uを全ての部分領域について足し合わせ、得られた配置要素の数密度に係わる関数Uを第2の目的関数とする。
【0077】
すなわち、目的関数作成ステップが、複数の要素の密度に係わる関数を第2の目的関数として作成する、という特徴を有することになる。これによって、配置要素の数がそれほど多くなく、また配置要素の面積にばらつきがない場合に、効率的に第2の目的関数を求めることが可能となる。
(II)配置要素面積密度関数を求める手法
この手法では、配置要素の数密度の替わりに、図13に示すように、各部分領域r1,r2にある配置要素の面積の総和Aを計算する。
【0078】
閾値Acを適当に設定した上で、部分領域毎に関数uを次にように定義する。
・もしA>Acならば、
u=A−Ac (3)
・もしA≦Acならば、
u=0 (4)
こうして部分領域毎に定義された関数uを全ての部分領域について足し合わせ、得られた配置要素の面積密度に係わる関数Uを第2の目的関数とする。
【0079】
言い換えれば、複数の要素の面積密度に係わる関数を第2の目的関数として作成する、という手法である。これによって、配置要素の数がそれほど多くなく、また配置要素の面積に大きなばらつきがある場合に、効率的に第2の目的関数を求めることが可能となる。
(III)配置要素重複数関数を求める手法
この手法では、図14に示すように、配置領域R内で互いに重なっている配置要素の総数(図14中の黒で示される配置要素の個数)を算出し、得られた配置要素の重複数に係わる関数Uを第2の目的関数とする。
【0080】
言い換えれば、複数の要素のうち互いに重なり合っている要素の数に係わる関数を第2の目的関数として作成する、という手法である。これによって、配置要素の数が多くて重なりが生じやすく、また配置要素の面積にそれほどばらつきがない場合に、効率的に第2の目的関数を求めることが可能となる。
(IV)配置要素重複面積関数を求める手法
この手法では、図15に示すように、配置領域R内で互いに重なっている配置要素について、重なっている部分の面積の総和(図15中の黒で示される領域の面積の総和)を算出し、得られた配置要素の重複面積に係わる関数Uを第2の目的関数とする。計算を簡便にするために、二つの配置要素間で重なっている部分の面積を、重複を許さずに計算する。
【0081】
言い換えれば、複数の要素のうち互いに重なり合っている領域の面積に係わる関数を第2の目的関数として作成する、という手法である。これによって、配置要素の数が多くて重なりが生じやすく、また配置要素の面積に大きなばらつきがある場合に、効率的に第2の目的関数を求めることが可能となる。
以上説明した様に、目的関数作成部42によって、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件(配置問題の配置条件)を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成される。こうした構成によって、密度一様化条件を的確に反映した簡潔な関数(第2の目的関数)を使用して目的関数(第3の目的関数)を設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
【0082】
なお、目的関数作成部42による上述の第3の目的関数の作成動作は、実際には、スケジュール管理部45により取得・管理されるスケジュールに基づき行なわれることになる。
(2−3)逐次改善アルゴリズム実行部の動作
逐次改善アルゴリズム実行部43では、初期配置状態取得部により得られた初期配置状態を初期解として逐次改善アルゴリズムが実行される。そして、目的関数作成部42で作成された第3の目的関数を最適化しながら、当該密度一様化配置問題の最適解の候補となる配置解が求められる。
【0083】
一般的に、目的関数作成部42により作成される第3の目的関数は、各配置要素の配置位置の座標および各配置要素のサイズ(配置要素が長方形の場合には配置要素の高さと幅)の関数である。各配置要素のサイズは通常は固定されているので、第3の目的関数は各配置要素の配置位置の座標を変数とする関数となる。
ここで、上述した例に従って、第3の目的関数がCost+αUで表されるとする(なお、Costは第1の目的関数、Uは第2の目的関数、αは第1の目的関数と第2の目的関数との線形結合係数である)。ここで、パラメータαの値を固定した場合には、第3の目的関数Cost+αUに含まれる変数は各配置要素の配置位置の座標のみとなるため、初期配置状態取得部41により得られた複数の要素の初期配置状態を初期配置解として一般的な逐次改善アルゴリズムを行なうことにより、第3の目的関数Cost+αUを最適化する(すなわち、第3の目的関数Cost+αUを最小とする最適解を探索する)ことができる。
【0084】
従って、逐次改善アルゴリズム実行部43では、初期配置状態取得部41により得られた複数の要素の初期配置状態を初期配置解として、一般的な逐次改善アルゴリズムを実行し、各配置要素の配置位置の座標を変数とする第3の目的関数Cost+αUを最適化する。
ところで、第1の目的関数に対する最適解を初期配置状態として用いている場合には、その初期配置状態は配置問題の配置条件(密度一様化配置問題の密度一様化条件以外の配置条件)に対する最適性をそなえているので、この最適性をあまり失うことなく、効率的に密度一様化条件を反映した配置解を探索する必要がある。
【0085】
そこで、逐次改善アルゴリズム実行部43は、図16に示すように、逐次改善アルゴリズムの実行開始時に、第3の目的関数Cost+αUのパラメータαの初期値を正の小さな値に設定する。そして、逐次改善法の繰り返し回数が増加するにつれて、パラメータαを徐々に増加させる。
このように、各パラメータの値を変化させることで、配置問題の配置条件に対する初期配置状態の最適性を失うことなく、初期配置状態に対して徐々に密度一様化条件を反映させることにより、密度一様化問題の最適解を効率的に探索することが可能となる。特に、第2の目的関数の作成にパッキング法を用いる場合において、各配置要素の実際の配置位置と対応するスロットの配置位置との距離が大きい場合に、それをいきなり反映させるのではなく、徐々に反映させていくことによって、より効率的に密度一様化問題の配置解を探索することが可能となる。
【0086】
なお、特別な場合には、第3の目的関数Cost+αUを、配置要素のx座標とy座標の関数の和に分解できる場合がある。
Cost=Costx(x1,x2,…,xn)+Costy(y1,y2,…,yn) (5)
U=Ux(x1,x2,…,xn)十Uy(y1,y2,…,yn) (6)
このような場合には、x方向とy方向それぞれに別のパラメータαx,αyを用意して、次のように第3の目的関数Cost+αUを分解する。
【0087】
(Costx+αxx)十(Costy十αyy) (7)
そして、パラメータα,αx,αyを、逐次改善アルゴリズムの繰り返し毎に変化させる。逐次改善アルゴリズムの第i番目のステップにおけるパラメータα,αx,αyの値は、次のように書くことができる。
α=α(i,β1,β2,…,βn) (8)
αx=αx(i,βx1,βx2,…,βxn) (9)
αy=αy(i,βy1,βy2,…,βyn) (10)
ここで、β1,β2,…,βn,βx1,βx2,…,βxn,βy1,βy2,…,βynは、逐次改善アルゴリズムの第i番目のステップにおけるパラメータα,αx,αyの値を規定する新たなパラメータである。
【0088】
これらのパラメータは、後述する遺伝的アルゴリズム実行部44の動作の説明において使用される。
以上の手順に従って逐次改善アルゴリズムを実行した後、逐次改善アルゴリズム実行部43は、実行した逐次改善アルゴリズムの内容が所定の基準を満たしているかどうか、また、得られた最適解候補としての配置解が所定の基準を満たしているかどうかを判断する。
【0089】
具体的には、前者として、実行した逐次改善アルゴリズムの繰り返し数、パラメータαの変化量などが、また、後者として、得られた配置解を用いた第3の目的関数の演算値などが、それぞれ所定の基準と比較されることになる。
そして、いずれの基準をも満たしていると判断した場合には、逐次改善アルゴリズム実行部43は、この最適解候補を密度一様化配置問題の最適解(正確には近似最適解)として獲得する。
【0090】
一方、いずれかの基準を満たしていないと判断した場合には、再び、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行、または、目的関数作成部42による第3の目的関数の作成へと移行して、新たな最適解候補の探索が行なわれることになる。こちらのフローについては、スケジュール管理部45が取得した所定のスケジュールに従って制御されることになる。
(2−4)スケジュール管理部による動作(その1)
スケジュール管理部45は、上述した目的関数作成部42による第3の目的関数の作成前に、目的関数作成部42による第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行についてのスケジュールを取得する。
【0091】
そして、目的関数作成部42による第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が繰り返し実施されるように、上記スケジュールに従って、目的関数作成部42,逐次改善アルゴリズム実行部43をそれぞれ制御する。
すなわち、ここでは図3におけるS5のNO1ルートに移行するための各種条件を定めることになる。
【0092】
具体的に、目的関数作成部42が第2の目的関数の作成の際にパッキング手法を採用する場合を例に採ると、スケジュール管理部45は、まず、目的関数作成部42による第3の目的関数の作成を行なう前に、目的関数作成部42によるパッキング手法の実行および第3の目的関数の作成と、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行との繰り返しに関するスケジュールを取得する。
【0093】
なお、このスケジュールは、密度一様化配置問題に関するデータとともにデータの形で本装置に入力されてもよく、また、入力された密度一様化配置問題に関するデータに基づきスケジュール管理部45において自動合成されるように構成しても良い。前者の構成とすれば、本発明の装置もしくはプログラムの構成の簡素化・低価格化に寄与するとともに、最適解探索に関する一連の手順の高速化も図ることができるのに対し、後者の構成とすれば、入力するべき密度一様化配置問題に関するデータが少なくて済み、密度一様化配置問題の最適解探索に関する一連の手順の自動化に寄与する。
【0094】
また、スケジュールの内容としては、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行中に、どのタイミングで、および如何なる条件で、目的関数作成部42によるパッキング手法の実行および第3の目的関数の作成のフローに移行するかの基準が規定される。具体的には、逐次改善アルゴリズムの繰り返し回数(ステップ数)がある一定数に達したら、その時点で目的関数作成部42によるパッキング手法の実行および第3の目的関数の作成のフローに移行する、などの基準である。
【0095】
そして、スケジュール管理部45は、取得した上記スケジュールに従って、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの繰り返しの回数が定められた回数に達した時点で、目的関数作成部42が定められたパッキング手法を用いて再びスロットのパッキングを実行し、新たな第2の目的関数、ひいては、新たな第3の目的関数を作成するように、目的関数作成部42の制御を行なう。
【0096】
続いて、スケジュール管理部45は、この新たな第3の目的関数を用いて、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が再び行なわれるように、逐次改善アルゴリズム実行部43の制御を行なう。
目的関数作成部42による目的関数の作成、および、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が繰り返された後、逐次改善アルゴリズム実行部43によって、実行した逐次改善アルゴリズムの繰り返し回数が所定の基準を満たしているかどうか、また、得られた最適解候補としての配置解が所定の基準を満たしているかどうかが判断される。
【0097】
そして、逐次改善アルゴリズム実行部43によっていずれかの基準が満たされていると判断された場合、または、目的関数の作成および逐次改善アルゴリズムの実行の繰り返し回数が、スケジュール管理部45によって所定の基準を満たしていると判断された場合に、その時点で得られた最適解候補の配置解が近似最適解として決定されることになる。
【0098】
スケジュール管理部45により取得されるスケジュールにより規定される、目的関数作成部42によるパッキング手法の実行のフローに移行するタイミングとしては、以下のようなものが挙げられる。
(a)初回のみパッキングを行なう手法
図17(a)に示すように、複数の要素の初期配置状態に基づき、最初に一回だけスロットのパッキングを行なう。この場合、図3におけるS5のNO1ルートに移行することはなく、スロットの座標(ひいては、第2目的関数)はこれ以後は変化しない。逐次改善アルゴリズムの実行により得られた最適解候補が最適解としての所定の基準を満たすまで、逐次改善アルゴリズムの繰り返しによる配置解の改善が行なわれることになる。
【0099】
すなわち、目的関数作成ステップが、複数の要素の初期配置状態における複数の要素の配置位置に基づき、複数の要素の仮想的配置を行なう、という特徴を有することになる。
(b)定期的にパッキングを行なう手法
図17(b)に示すように、スケジュールにより規定された時点において、逐次改善アルゴリズムの実施中に周期的にスロットのパッキングを行なう。この場合、スケジュールにおいて、基準となる逐次改善アルゴリズムの実行ステップ数(ステップ数)または実行時間を、予め規定しておく。そして、図3におけるS4において、逐次改善アルゴリズムの実行ステップ数(ステップ数)または実行時間を監視し、それがスケジュールに定められた基準を超えた場合に、S5のNO1ルートに移行する。その後、やはりスケジュールに予め定められた内容に従って、その時点の配置解における要素の配置位置に基づき、目的関数作成部においてスロットの再パッキング,新たな第2の目的関数の作成および新たな第3の目的関数の作成が行なわれることになる。
【0100】
こうした、目的関数作成部42による新たな目的関数の作成および逐次改善アルゴリズム実行部43における逐次改善アルゴリズムの実行が、それぞれ所定回数繰り返されると、やはりスケジュールに予め定められた規定の繰り返し回数を満たしたかどうかが判断され、規定の繰り返し回数を満たすか、または、得られた配置解が最適解としての所定の基準を満たした時点で、繰り返しが終了することになる。
【0101】
すなわち、目的関数作成ステップが、スケジュールにより定められた各時点において、その時点における複数の要素の配置位置に基づき、新たに複数の要素の仮想的配置を行なう、という特徴を有することになる。
(c)ランダムにパッキングを行なう手法
図17(c)に示すように、逐次改善の実施中にランダムにスロットのパッキングを行なう。この場合、スケジュールにおいて、逐次改善アルゴリズムの任意の実行ステップ数(ステップ数)または任意の実行時間に一定の割合で、目的関数作成部へのフローの移行が行なわれるように、乱数発生プログラムを利用したトリガーを規定しておく。逐次改善アルゴリズム実行部において乱数の発生によりトリガーが出力されると、S5のNO1ルートに移行し、やはりスケジュールに予め定められた内容に従って、その時点の配置解における要素の配置位置に基づき、目的関数作成部においてスロットの再パッキング,新たな第2の目的関数の作成および新たな第3の目的関数の作成が行なわれることになる。
【0102】
こうした、目的関数作成部42による新たな目的関数の作成および逐次改善アルゴリズム実行部43における逐次改善アルゴリズムの実行が、それぞれ所定回数繰り返されると、やはりスケジュールに予め定められた規定の繰り返し回数を満たしたかどうかが判断され、規定の繰り返し回数を満たすか、または、得られた配置解が最適解としての所定の基準を満たした時点で、繰り返しが終了することになる。
【0103】
すなわち、目的関数作成ステップが、無作為に選ばれた各時点において、その時点における複数の要素の配置位置に基づき、新たに複数の要素の仮想的配置を行なう、という特徴を有することになる。
なお、上述の(b)定期的にパッキングを行なう手法、および、(c)ランダムにパッキングを行なう手法では、パッキングは複数回行なわれることになるが、このパッキングの手法としては毎回同じ手法を用いてもよく、また、一回毎に異なる手法を用いてもよい。前者の構成とすれば、入力するべき密度一様化配置問題に関するデータが少なくて済み、密度一様化配置問題の最適解探索に関する一連の手順の自動化に寄与するのに対し、後者の構成とすれば、各パッキングの手法が呈するスロットの偏向性による影響を防ぎ、複数の要素の疎密解消の効率化につながる。
【0104】
また、上述した例以外にも、スケジュール管理部45がスケジュールに従って、パッキング法以外の手法を用いて新たな第2の目的関数の作成を行なったり、パッキング法以外の手法を含む各種手法から選択した手法により新たな第2の目的関数の作成を行なったりするように、目的関数作成部42を制御してもよい。
さらに、スケジュール管理部45がスケジュールに従って、第1の目的関数と第2の目的関数との線形結合の係数を変化させながら、新たな第3の目的関数を作成するように、目的関数作成部42を制御してもよい。
【0105】
以上説明した様に、目的関数作成ステップは、所定のスケジュールに従って、第1の目的関数と第2の目的関数との線形結合の係数,および,第2の目的関数の定義のうち、少なくとも一方を変化させながら、新たな上記第3の目的関数の作成を行なう、という特徴を有する。これによって、第3の目的関数に対する密度一様化条件の寄与の割合を調節するとともに、密度一様化条件を表す第2の目的関数の種類の違いに拠る偏向性を排することができ、密度一様化配置問題の最適解を効率よく探索することが可能となる。
(2−5)遺伝的アルゴリズム実行部による動作
遺伝的アルゴリズム実行部44では、目的関数作成部42による新たな第3の目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部43における逐次改善アルゴリズムの実行に関する情報が遺伝子として表現され、この遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムが実行される。
【0106】
なお、先述したように、これらの動作は、実際には初期配置状態取得部41による初期配置状態の取得の直後に行なわれることになる。
まず、染色体の作成方法について説明する。
遺伝的アルゴリズム実行部44は、目的関数作成部42による新たな第3の目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部43における逐次改善アルゴリズムの実行に関する情報を遺伝子として表現し、この遺伝子の配列からなる染色体を作成する。
【0107】
言い換えれば、遺伝的アルゴリズム実行部44は、配置要素の密度一様化条件を解消するためにつけ加えた第2の目的関数U(Ux,Uy)に付随したパラメータに関する量、および、各ステップの実行を規定したスケジュールを表す量をそれぞれ遺伝子としてコードし、この遺伝子の一次ストリングとして染色体を作成する。
【0108】
具体的には、遺伝的アルゴリズム実行部44によって、以下に示す種類の染色体が作成される。
・Chrom−1
この染色体の遺伝子は、図18(a)に示すように、パラメータαから構成されている。すなわち、第1の目的関数をCost、第2の目的関数をU、第3の目的関数をCost+αUとした場合に、パラメータαを遺伝子として表現したものである。
・Chrom−2
この染色体の遺伝子は、図18(b)に示すように、パラメータαxとαyから構成されている。すなわち、第1の目的関数をCost=配置要素のx座標に関する関数Costx+配置要素のy座標に関する関数Costy、第2の目的関数をU=配置要素のx座標に関する関数Ux+配置要素のy座標に関する関数Uy、第3の目的関数をCost+αU=(Costx+αxx)+(Costy+αyy)とした場合に、パラメータαxおよびαyを遺伝子として表現したものである。
・Chrom−M
この染色体の遺伝子は、図18(c)に示すように、パラメータβ1,β2,…,βnから構成されている。すなわち、第1の目的関数をCost、第2の目的関数をU、第3の目的関数をCost+αU、パラメータαを逐次改善アルゴリズムのステップ数とパラメータβ1,β2,…βnとの関数とした場合に、パラメータβ1,β2,…βnを遺伝子として表現したものである。
・Chrom−2M
この染色体の遺伝子は、図18(d)に示すように、パラメータβx1,βx2,…,βxn,βy1,βy2,…,βynから構成されている。すなわち、第1の目的関数をCost=配置要素のx座標に関する関数Costx+配置要素のy座標に関する関数Costy、第2の目的関数をU=配置要素のx座標に関する関数Ux+配置要素のy座標に関する関数Uy、第3の目的関数をCost+αU=(Costx+αxx)+(Costy+αyy)、パラメータαxおよびαyをそれぞれ逐次改善アルゴリズムのステップ数とパラメータβx1,βx2,…βxnおよびβy1,βy2,…βynとの関数とした場合に、パラメータβx1,βx2,…βxnおよびβy1,βy2,…βynを遺伝子として表現したものである。
【0109】
以上挙げた各種の染色体の作成は、換言すれば、遺伝的アルゴリズム実行ステップが、目的関数作成ステップにおいて作成される第3の目的関数に関するパラメータを遺伝子として表現して染色体の作成を行なう、という特徴に相当する。
・Chrom−S
この染色体の遺伝子は、図18(e)に示すように、スケジューリング方式の場合のスロットのパッキングのスケジュールを決めるパラメータ(パッキングを行なう周期、パッキングの方法など)s1,s2,…snから構成されている。すなわち、各ステップの実行を定める上記スケジュールに関するパラメータを、遺伝子として表現して染色体の作成を行なったものである。
・Chrom−I
この染色体の遺伝子は、図18(f)に示すように、Chrom−1,Chrom−2,Chrom−MまたはChrom−2Mのいずれかの染色体とChrom−Sの染色体とを連結して構成されている(図18では、Chrom−2とChrom−Sとを連結した例を示している)。すなわち、目的関数作成ステップにおいて作成される第3の目的関数に関するパラメータ、および、各ステップの実行を定めるスケジュールに関するパラメータを、それぞれ遺伝子として表現して染色体の作成を行なったものである。
【0110】
以上の各種染色体を作成することによって、目的関数(第3の目的関数)に関するパラメータや各ステップの実行に関するパラメータを、当該密度一様化配置問題の特徴に応じて高速かつ適切に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
また、密度一様化問題における配置要素の座標ではなく、第3の目的関数に現われるパラメータを遺伝子として染色体を構成することにより、染色体の長さが問題のサイズに依存する程度を減少させることができるので、比較的短い染色体を構成することが可能となり、遺伝的アルゴリズムによって効率的に解の探索を行なうことができる。
【0111】
次に、染色体に加える遺伝オペレーションについて説明する。
まず、染色体に作用する遺伝的オペレーションの一つである交叉としては、以下のような方法が考えられる。
・張り付け交叉
この交叉は、図19に示すように、親の染色体a1,b1の一部を互いに相手の染色体に張り付けて交叉を行ない、子供の染色体a1’,b1’を得るものである。この交叉に拠れば、簡単な操作によって、親の個体が有する遺伝子を保存しつつ、その組み合わせに多様性を持たせることができる。
・パラメータの重みつき平均をもとにした交叉
この交叉は、図20に示すように、親の染色体a2,b2の遺伝子の値について、所定の割合で重み付け平均を算出し、求めた結果に基づいて子供の遺伝子の値を決定して、子供の染色体a1’,b1’を得るものである。この交叉に拠れば、親の個体が有する遺伝子に基づき、単純な演算を行なうことによって、極めて多様性を持つ子供の個体を得ることができる。
【0112】
以上を換言すれば、遺伝的アルゴリズム実行ステップが、染色体に対する遺伝的オペレーションとして、張り付け交叉、または、遺伝子の値の重みつき平均を基にした交叉を行なう、という特徴を有することになる。
次に、染色体に作用する遺伝的オペレーションの一つである突然変異としては、以下のような方法が考えられる。
・パラメータをランダムに動かす突然変異
この突然変異は、図21に示すように、染色体a3が有する遺伝子の値(パラメータ)を無作為に変動させることで、突然変異後の染色体a3’を得るものである。無作為な変動に拠る悪影響を避けるため、変動を加える値の範囲は予め定めておく。この突然変異に拠れば、簡単な操作によって、個体が有する遺伝子に適当な多様性を持たせることができる。
・パラメータを小さくする突然変異
この突然変異は、後述するように、遺伝的アルゴリズムの実行,新たな第3の目的関数の作成,逐次改善アルゴリズムの実行の動作が、スケジュールに従って繰り返される場合に有効である。
【0113】
図22に示すように、前回の逐次改善アルゴリズムの実行により得られた新たな配置解において、複数の要素の移動距離が大きすぎ、却って密度一様化条件若しくは他の配置条件を満たさなくなった場合に、その要素の移動距離がより小さくなるように、染色体a4が有する遺伝子の値に変動を加え、突然変異後の染色体a4’を得るものである。この場合にも、過剰な変動に拠る悪影響を避けるため、変動を加える値の範囲は予め定めておく。この突然変異に拠れば、簡単な操作によって、逐次改善アルゴリズムによる配置解の過剰な移動を補正しつつ、個体が有する遺伝子に適当な多様性を持たせることができる。
・パラメータを大きくする突然変異
この突然変異も、遺伝的アルゴリズムの実行,新たな第3の目的関数の作成,逐次改善アルゴリズムの実行の動作が、スケジュールに従って繰り返される場合に有効である。
【0114】
図23に示すように、前回の逐次改善アルゴリズムの実行により得られた新たな配置解において、複数の要素の移動距離が小さすぎ、密度一様化条件若しくは他の配置条件を充分満たすに至らない場合に、その要素の移動距離がより大きくなるように、染色体a4が有する遺伝子の値に変動を加え、突然変異後の染色体a4’を得るものである。この場合にも、過剰な変動に拠る悪影響を避けるため、変動を加える値の範囲は予め定めておく。この突然変異に拠れば、簡単な操作によって、逐次改善アルゴリズムによる配置解の改善不足を補いつつ、個体が有する遺伝子に適当な多様性を持たせることができる。
【0115】
以上換言すれば、遺伝的アルゴリズム実行ステップが、遺伝子の値を所定の範囲内で無作為に変動させることにより、または、前回の該逐次改善アルゴリズムの実行によって得られた上記複数の要素の配置解が一定の基準を満たさない場合に、上記複数の要素の配置解が改善されるような範囲で遺伝子の値を変動させることにより、染色体に対する遺伝的オペレーションとしての突然変異を行なう、という特徴を有することになる。これによって、遺伝的な多様性を効率的に確保することができる。
【0116】
続いて、各個体の適応度の評価について説明する。
適応度の評価は、後述するように、遺伝的アルゴリズムの実行,新たな第3の目的関数の作成,逐次改善アルゴリズムの実行の動作が、スケジュールに従って繰り返される場合に有効となる。
まず、遺伝的アルゴリズム実行部44は、各個体が有する染色体の種類に応じて、逐次改善アルゴリズムの実行により得られた結果に基づき、各個体の適応度を評価する。そして、適応度の評価に基づいて個体を選択し、選択した個体に基づいて、その後の遺伝的アルゴリズムの実施を行なうのである。
【0117】
より具体的には、遺伝的アルゴリズム実行部44は、該逐次改善アルゴリズムの実行により得られた第1の目的関数の演算値を、各個体の適応度として計算する。
これを上述した染色体の種類毎に示せば、以下の様になる。
・染色体がChrom−1の場合
この場合、個体の適応度は次の第3の目的関数
Cost+αU (11)
に基づいて、次のように決められる。
【0118】
第3の目的関数Cost+αUに基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件(所定の判断基準)を満たすようになった時点、または、定められた繰り返し回数(ステップ数)の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第1の目的関数Costの演算値をCosteとすると、適応度の評価関数は次のように定義される。
(適応度)=定数−Coste (12)
・染色体がChrom−2の場合
この場合、個体の適応度は次の第3の目的関数
(Costx+axx)+(Costy+ayy) (13)
に基づいて、次のように決められる。
【0119】
第3の目的関数(Costx+axx)+(Costy+ayy)に基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数(ステップ数)の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第1の目的関数Costx+Costyの演算値をCostxe+Costyeとすると、適応度の評価関数は次のように定義される。
(適応度)=定数−(Costxe+Costye) (14)
・染色体がChrom−Mの場合
この場合、個体の適応度は次の第3の目的関数
Cost+α(i,β1,β2,…,βn)U (15)
に基づいて、次のように決められる。
【0120】
第3の目的関数Cost+α(i,β1,β2,…,βn)Uに基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数(ステップ数)の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第1の目的関数Costの演算値をCosteとすると、適応度の評価関数は次のように定義される。
(適応度)=定数−Coste (16)
・染色体の構成がChrom−2Mの場合
この場合、個体の適応度は次の第3の目的関数
(Costx+αx(i,βx1,βx2,…,βxn)Ux)+(Costy+αy(i,βy1,βy2,…,βyn)Uy) (17)
に基づいて、次のように決められる。
【0121】
第3の目的関数(Costx+αx(i,βx1,βx2,…,βxn)Ux)+(Costy+αy(i,βy1,βy2,…,βyn)Uy)に基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数(ステップ数)の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
【0122】
この時点での配置解に基づく第1の目的関数Costx+Costyの演算値をCostxe+Costyeとすると、適応度の評価関数は次のように定義される。
(適応度)=定数−(Costxe+Costye) (18)
・染色体の構成がChrom−Sの場合
ある個体の染色体で指定された、スロットのパッキングに関するスケジュールに従って、第3の目的関数Cost+αUまたはCostx+axx+Costy+ayyに基づき逐次改善アルゴリズムを実施する。改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数(ステップ数)の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
【0123】
この時点での配置解に基づく第1の目的関数CostまたはCostx+Costyの値を、CosteまたはCostxe+Costyeとすると、適応度の評価関数は次のように定義されるる。
(適応度)=定数−Coste (19)
または、
(適応度)=定数−(Costxe+Costye) (20)
・染色体の構成がChrom−Iの場合
この場合には、ある個体の染色体で指定された、スケジュールに関する遺伝子が表す値に基づいて、第3の目的関数が定められることになる。
【0124】
第3の目的関数Cost+αUまたはCostx+axx+Costy+ayyに基づいて、逐次改善アルゴリズムを実施する。改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数(ステップ数)の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第1の目的関数CostまたはCostx+Costyの値を、CosteまたはCostxe+Costyeとすると、適応度の評価関数は次のように定義されるる。
(適応度)=定数−Coste (21)
または、
(適応度)=定数−(Costxe+Costye) (22)
上述した適応度の各評価関数に拠れば、染色体について算出された適応度の値が大きいほど、その染色体が有する遺伝子に基づき規定された第3の目的関数を用いて逐次改善アルゴリズムにより得られた配置解が、配置問題の配置条件(密度一様化配置問題の密度一様化条件を除く配置条件)をより好適な状態で満たしている、ということになる。牽いては、適応度の値の高い染色体が有する遺伝子を用いれば、より好ましい配置解を得られるような第3の目的関数を得ることができる。
【0125】
そこで、遺伝的アルゴリズム実行部44は、上述した適応度の各評価関数に従って、適応度の高い染色体を有する個体を、一定の基準の下に選択する。そして、選択された個体を用いて、その後の遺伝的アルゴリズムを実行する。場合によってはこの時に、染色体の複製などを行なって、個体の数を調整してもよい。
以上換言すれば、遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なう、という特徴を有することになる。これによって、密度一様化条件以外の配置条件について十分な評価を行ないながら、適切な目的関数(第3の目的関数)を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
【0126】
以上説明した遺伝的アルゴリズムの基本的動作に加えて、以下に示すような個体集団の作成を行ない、この個体集団に基づいて遺伝的アルゴリズムを行なうことにより、集団の多様性を維持しながら効率良く最適解を探索することができる。以下ではこれを「島」モデルと呼ぶことにする。
この「島」モデルにおいて、遺伝的アルゴリズム実行部44はまず、各個体の染色体の種類に基づいて、複数の個体集団として「島」を作成する。
【0127】
そして、作成された複数の「島」に属する個体を、基本的には互いに隔離しつつ、スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なうことになる。
具体例として、遺伝的アルゴリズム実行部44は、図24に示すように、以下の3種類の「島」を作成する。
・「島1」(図24中の“Island 1")
この個体集団は、第3の目的関数に関するパラメータを遺伝子とする染色体を有する個体から構成される。含まれる個体の染色体は、Chrom−1,Chrom−2,Chrom−MまたはChrom−2Mのいずれかである(図24では、例としてChrom−2を含む場合を示す)。
・「島2」(図24中の“Island 2")
この個体集団は、各ステップの実行を定めるスケジュールに関するパラメータを遺伝子とする染色体を持つ個体から構成される。含まれる個体の染色体は、Chrom−Sである。
・「島3」(図24中の“Island 3")
この個体集団は、第3の目的関数に関するパラメータを遺伝子とする染色体と、各ステップの実行を定めるスケジュールに関するパラメータを遺伝子とする染色体とを、それぞれ連結した染色体を持つ個体から構成される。含まれる個体の染色体は、Chrom−Iである(図24では、例としてChrom−2とChrom−Sとを連結して作成されたChrom−Iを含む場合を示す)。
【0128】
すなわち、目的関数作成ステップにより作成される第3の目的関数に関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第1の個体集団(島)と、各ステップの実行を定める上記スケジュールに関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第2の個体集団(島)と、上記第3の目的関数に関するパラメータを表す遺伝子および上記スケジュールに関するパラメータを表す遺伝子の双方を含む染色体を有する個体の集団である第3の個体集団(島)とが作成されることになる。これによって、各個体の染色体に含まれる遺伝子の種類を考慮しながら、効率的に各個体を分類して個体集団を設定することが可能となり、ひいては個体集団の管理の容易化を図ることが可能となる。
【0129】
これらの「島」の作成後、遺伝的アルゴリズム実行部44は、各「島」の個体をそれぞれ互いに隔離しつつ、各「島」の内部の個体間で交配を行ないながら、遺伝的アルゴリズムを実行する。
所定の世代が経過した時点で、適当な方法で「島1」と「島2」からそれぞれ親となる個体を選び出し、これらの親の染色体を連結して子供の染色体を作成する。こうして作成された子供を、「島3」に移住させる。
【0130】
また、適当な方法で「島1」と「島3」からそれぞれ親となる個体を選び出し、これらの親の染色体を交叉させて子供の染色体を作成する。この時に、「島3」の個体の染色体については、第3の目的関数に関するパラメータの遺伝子が存在する部分において、「島1」の個体の染色体と交叉させるようにする。こうして得られた二つの子供の染色体のうち、一方の子供の染色体には、第3の目的関数に関するパラメータの遺伝子のみが存在し、他方の子供の染色体には、各ステップの実行を定めるスケジュールに関するパラメータの遺伝子が混在することになる。前者の子供の個体は「島1」へ、後者の子供の個体は「島3」へと、それぞれ移住させる。
【0131】
同様に、適当な方法で「島2」と「島3」からそれぞれ親となる個体を選び出し、これらの親の染色体を交叉させて子供の染色体を作成する。この時に、「島3」の個体の染色体については、各ステップの実行を定めるスケジュールに関するパラメータの遺伝子が存在する部分において、「島2」の個体の染色体と交叉させるようにする。こうして得られた二つの子供の染色体のうち、一方の子供の染色体には、各ステップの実行を定めるスケジュールに関するパラメータの遺伝子のみが存在し、他方の子供の染色体には、第3の目的関数に関するパラメータの遺伝子が混在することになる。前者の子供の個体は「島2」へ、後者の子供の個体は「島3」へと、それぞれ移住させる。
【0132】
すなわち、第1の個体集団(島)に属する個体と第2の個体集団(島)に属する個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第3の個体集団(島)に移住させるという特徴、並びに、上記第1または第2の個体集団(島)の個体と上記第3の個体集団(島)の個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第1または第2の個体集団(島)および上記第3の染色体集団(島)へ各々移住させるという特徴を有することになる。これによって、簡単な操作によって各個体集団(島)の個体を交流させて遺伝的多様性を生み出すことが可能となり、遺伝的アルゴリズムの効率化につながる。
【0133】
以上換言すれば、遺伝的アルゴリズム実行ステップが、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団(島)を作成し、作成された複数の個体集団(島)の個体を基本的には互いに隔離しつつ、スケジュールに従って各個体集団(島)の個体を交流させながら、遺伝的アルゴリズムの実行を行なう、という特徴を有することになる。これによって、染色体の多様性を保ちながら、適切な目的関数(第3の目的関数)を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
(2−6)スケジュール管理部による動作(その2)
スケジュール管理部45は、先に述べたスケジュールに加えて、遺伝的アルゴリズム実行部44による初回の遺伝的アルゴリズムの実行前に、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行,目的関数作成部42による第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行という、一連の動作についてのスケジュールを取得する。
【0134】
そして、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行,目的関数作成部42による第3の目的関数の作成,および,逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が繰り返し実施されるように、上記スケジュールに従って、目的関数作成部42,逐次改善アルゴリズム実行部43,遺伝的アルゴリズム実行部44をそれぞれ制御する。
【0135】
すなわち、ここでは図3におけるS5のNO2ルートに移行するための各種条件を定めることになる。
以下、スケジュール管理部45の動作について、詳細に説明する。
スケジュール管理部45は、まず、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行前に、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行と、目的関数作成部42による第3の目的関数の作成と、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行との繰り返しに関するスケジュールを取得する。
【0136】
なお、このスケジュールも、密度一様化配置問題に関するデータとともにデータの形で本装置に入力されてもよく、また、入力された密度一様化配置問題に関するデータに基づきスケジュール管理部45において自動合成されるように構成しても良い。両構成の利点については先に述べた通りである。
また、スケジュールの内容としては、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行中に、どのタイミングで、および如何なる条件で、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行のフローに移行するかの基準が規定される。具体的には、逐次改善アルゴリズムの繰り返しの回数がある一定数に達したら、その時点での配置解を用いて遺伝的アルゴリズムにおける各個体の適応度の評価を行ない、適切な個体を選択して遺伝的アルゴリズムの実行のフローに移行する、などの基準である。
【0137】
そして、スケジュール管理部45は、取得した上記スケジュールに従って、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの繰り返し回数(ステップ数)が定められた回数に達した時点で逐次改善アルゴリズムを停止し、その時点での配置解、および、各個体の遺伝子が規定する第3の目的関数に基づき、上述した手順に従って、前回の遺伝的アルゴリズムにおいて得られた各個体の適応度を算出するように、遺伝的アルゴリズム実行部44を制御する。
【0138】
次に、スケジュール管理部45は、算出された各個体の適応度に基づいて、適切な個体を選択し、選択した個体を用いて再び遺伝的アルゴリズムを実行するように、遺伝的アルゴリズム実行部44を制御する。
さらに、スケジュール管理部45は、こうして行なわれた遺伝的アルゴリズムに続いて、目的関数作成部42による目的関数の作成,および、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が再び行なわれるように、目的関数作成部42および逐次改善アルゴリズム実行部43の制御を行なう。
【0139】
このようにして、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行、目的関数作成部42による目的関数の作成、および、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が繰り返された後、逐次改善アルゴリズム実行部43によって、実行した逐次改善アルゴリズムの繰り返し回数が所定の基準を満たしているかどうか、また、得られた最適解候補としての配置解が所定の基準を満たしているかどうかが判断される。
【0140】
そして、逐次改善アルゴリズム実行部43によって、いずれかの基準が満たされていると判断された場合、または、スケジュール管理部45によって、遺伝的アルゴリズムの実行,目的関数の作成および逐次改善アルゴリズムの実行の繰り返し回数が、所定の基準を満たしていると判断された場合に、その時点で得られた最適解候補の配置解が近似最適解として決定されることになる。
(3)その他
なお、対象とする密度一様化配置問題の規模によっては、上述した実施形態よりも簡素な構成で、本発明の効果を得ることも可能である。
(3−1)本発明の一実施形態の第一変形例
まず、スケジュール管理部45をそなえず、初期配置状態取得部41,目的関数作成部42,逐次改善アルゴリズム実行部43および遺伝的アルゴリズム実行部44のみで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
【0141】
この場合、初期配置状態取得部41,目的関数作成部42,逐次改善アルゴリズム実行部43および遺伝的アルゴリズム実行部44は、上述の実施形態において各々説明した構成と同様の構成を有する。
そして、各部位が、上述の実施形態において説明した各動作、すなわち、初期配置状態取得ステップ(S1),遺伝的アルゴリズム実行ステップ(S2),目的関数作成ステップ(S3),逐次改善アルゴリズム実行ステップ(S4)を、それぞれ一回ずつ実施し、最後の逐次改善アルゴリズムの実行によって所定の基準を満たす配置解が得られるまで、逐次改善アルゴリズムを繰り返すことになる。
【0142】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、より簡素な構成で、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
(3−2)本発明の一実施形態の第二変形例
また、対象とする密度一様化配置問題において、配置要素の数がそれほど多くなく、また配置条件がそれほど複雑でない場合には、遺伝的アルゴリズム実行部44をそなえず、初期配置状態取得部41,目的関数作成部42,逐次改善アルゴリズム実行部43およびスケジュール管理部45のみで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
【0143】
この場合、初期配置状態取得部41,目的関数作成部42,逐次改善アルゴリズム実行部43は、上述の実施形態において各々説明した構成と同様の構成を有する。また、スケジュール管理部45は、遺伝的アルゴリズム実行部44による遺伝的アルゴリズムの実行に関するスケジュールを取得する機能、および、遺伝的アルゴリズム実行部44を制御する機能を有さずに構成される。
【0144】
そして、図25に示すように、初期配置状態取得部41による初期配置状態の取得(S1)が行なわれた後、目的関数作成部42による目的関数の作成(S3)へ移行する。続いて、逐次改善アルゴリズム実行部43による逐次改善アルゴリズムの実行が行なわれ(S4)、その結果として得られた配置解が所定の判断基準を満たすかどうかが判断される(S5’)。満たしていいと判断された場合には、再び目的関数作成部42による目的関数の作成(S3)へ移行する一方(S5’のNOルート)、満たしていると判断された場合には、その配置解が密度一様化配置問題の近似最適解として取得されることになる(S5’のYESルート)。
【0145】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、より簡素な構成で、比較的に低次かつ簡略な単一の目的関数(第3の目的関数)のみを用いて初期解の逐次改善を行なうことによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【0146】
また、さらにスケジュール管理部45をそなえず、初期配置状態取得部41,目的関数作成部42および逐次改善アルゴリズム実行部43のみで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
この場合、初期配置状態取得部41,目的関数作成部42および逐次改善アルゴリズム実行部43は、上述の実施形態において各々説明した構成と同様の構成を有する。
【0147】
そして、各部位が、上述の実施形態において説明した各動作、すなわち、初期配置状態取得ステップ(S1),目的関数作成ステップ(S3),逐次改善アルゴリズム実行ステップ(S4)をそれぞれ一回ずつ実施し、最後の逐次改善アルゴリズムの実行によって所定の基準を満たす配置解が得られるまで、逐次改善アルゴリズムを繰り返すことになる。
【0148】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、より簡素な構成で、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
(3−3)本発明の一実施形態の第三変形例
さらに、対象とする密度一様化配置問題において、配置要素の数が少なく、また、配置条件が単純である場合には、初期配置状態取得部41,逐次改善アルゴリズム実行部43,遺伝的アルゴリズム実行部44およびスケジュール管理部45をそなえず、目的関数作成部42に加えて最適解探索部を組み合わせることで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
【0149】
上述したように、一般に密度一様化配置問題は、配置要素の数が多く配置条件が複雑であることから、対応する目的関数(ここでは第3の目的関数)を直接解くことによって第3の目的関数を最適化する解を求めることは、困難または不可能である。しかし、配置要素の数が少なく配置条件が単純である特別な場合には、作成される第3の目的関数も比較的簡単なものになり、これを直接解いて最適解を用いることが可能となるので、本構成が有効となり得る。
【0150】
ここで、目的関数作成部42は、上述の実施形態において説明した構成と同様の構成を有する。
最適解探索部46は、目的関数作成部42で作成された第3の目的関数を最適化しながら、密度一様化配置問題の最適解を探索するもので、具体的には、目的関数作成部42で作成された第3の目的関数を最適化する配置解(すなわち狭義の最適解)を、演算によって直接求めるものである。
【0151】
以上の構成に基づき、図26に示すようにまず、目的関数作成部42が、目的関数作成ステップ(S3)を実施し、与えられた密度一様化問題に対する第3の目的関数を設定する。そして、最適解探索部46が、得られた第3の目的関数を最適化する解(第3の目的関数の最適解)を演算によって直接導き出し、これを密度一様化問題に対する最適解として決定する(S6)。
【0152】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、極めて簡素な構成で、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
(3−4)その他
また、本発明は、上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
(4)付記
これまでに述べた技術思想に基づき、以下の概念が抽出可能である。
【0153】
(付記1) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する方法であって、
当該配置問題の配置条件を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成する目的関数作成ステップと、
該目的関数作成ステップで作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を探索する該最適解探索ステップとをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【0154】
(付記2) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する方法であって、
複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
当該配置問題の配置条件を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成する目的関数作成ステップと、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成ステップで作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行ステップとをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【0155】
(付記3) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、上記密度一様化配置問題に対する最適解を探索する方法であって、
複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
当該配置問題の上記配置条件を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成する目的関数作成ステップと、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成ステップで作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行ステップと、
該目的関数作成ステップにおける上記第3の目的関数の作成に関する情報、および、該逐次改善アルゴリズム実行ステップにおける上記逐次改善アルゴリズムの実行に関する情報のうち少なくとも一方を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップとをそなえ、
該目的関数作成ステップによる上記第3の目的関数の作成、および、該逐次改善アルゴリズム実行ステップによる上記逐次改善アルゴリズムの実行のうち少なくとも一方が、該遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される情報に基づいて行なわれる
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【0156】
(付記4) 所定のスケジュールに従って、該目的関数作成ステップによる新たな上記第3の目的関数の作成,および,該逐次改善アルゴリズム実行ステップによる上記逐次改善アルゴリズムの実行を、繰り返し実施する
ことを特徴とする、付記2記載の密度一様化配置問題の最適解探索方法。
(付記5) 所定のスケジュールに従って、該遺伝的アルゴリズム実行ステップによる上記遺伝的アルゴリズムの実行,該目的関数作成ステップによる新たな上記第3の目的関数の作成,および,該逐次改善アルゴリズム実行ステップによる上記逐次改善アルゴリズムの実行を、繰り返し実施する
ことを特徴とする、付記3記載の密度一様化配置問題の最適解探索方法。
【0157】
(付記6) 該初期配置状態取得ステップが、上記第1の目的関数を最適化する解を求め、これを上記初期配置状態とする
ことを特徴とする、付記2〜5のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
(付記7) 該目的関数作成ステップが、該複数の要素の密度に係わる関数を、上記第2の目的関数として作成する
ことを特徴とする、付記1〜5のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
【0158】
(付記8) 該目的関数作成ステップが、該複数の要素の面積密度に係わる関数を、上記第2の目的関数として作成する
ことを特徴とする、付記1〜5のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
(付記9) 該目的関数作成ステップが、該複数の要素のうち互いに重なり合っている要素の数に係わる関数を、上記第2の目的関数として作成する
ことを特徴とする、付記1〜5のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
【0159】
(付記10) 該目的関数作成ステップが、該複数の要素のうち互いに重なり合っている領域の面積に係わる関数を、上記第2の目的関数として作成する
ことを特徴とする、付記1〜5のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
(付記11) 該目的関数作成ステップが、該複数の要素の実際の配置位置を考慮して、該複数の要素を密度が一様となるように仮想的に配置し、得られた該複数の要素の仮想的な配置位置と実際の配置位置との関係を表す関数を、上記第2の目的関数として作成する
ことを特徴とする、付記4または付記5に記載の密度一様化配置問題の最適解探索方法。
【0160】
(付記12) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の一頂点を基準として該複数の要素を並べて配置していくことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
(付記13) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の一辺を基準として該複数の要素を並べて配置していく
ことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
【0161】
(付記14) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の中心点を基準として該複数の要素を並べて配置していくことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
(付記15) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の全頂点を交互に基準として該複数の要素を並べて配置していく
ことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
【0162】
(付記16) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内に存在する配置禁止領域を配置対象から除外しながら仮想的な配置を行なう
ことを特徴とする、付記12〜15のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
【0163】
(付記17) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内に存在する配置禁止領域に要素が配置された場合には、上記要素の現在の配置位置と新たな仮想的配置位置との距離が最短となる方向に上記要素を移動させることにより、上記要素を上記配置禁止領域の外部に再び仮想的に配置する
ことを特徴とする、付記12〜15のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
【0164】
(付記18) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内の境界付近に存在する配置禁止領域に要素が配置された場合には、上記所定領域の境界から離れた方向に上記要素を移動させることにより、上記要素を上記配置禁止領域の外部に再び仮想的に配置する
ことを特徴とする、付記12〜15のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
【0165】
(付記19) 該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内に存在する配置禁止領域に要素が配置された場合には、上記要素の移動距離が最短となる方向に移動させることにより、上記要素を上記配置禁止領域の外部に再び仮想的に配置する
ことを特徴とする、付記12〜15のいずれか1項に記載の密度一様化配置問題の最適解探索方法。
【0166】
(付記20) 該目的関数作成ステップが、上記複数の要素の上記初期配置状態における配置位置に基づき、上記複数の要素の仮想的配置を行なう
ことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
(付記21) 該目的関数作成ステップが、上記スケジュールにより定められた各時点において、上記複数の要素の当該時点における配置位置に基づき新たに上記複数の要素の仮想的配置を行なう
ことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
【0167】
(付記22) 該目的関数作成ステップが、無作為に選ばれた各時点において、上記複数の要素の当該時点における配置位置に基づき新たに上記複数の要素の仮想的配置を行なう
ことを特徴とする、付記11記載の密度一様化配置問題の最適解探索方法。
(付記23) 該目的関数作成ステップが、上記スケジュールに従って、上記第1の目的関数と上記第2の目的関数との線形結合の係数,および,上記第2の目的関数の定義のうち、少なくとも一方を変化させながら新たな上記第3の目的関数の作成を行なう
ことを特徴とする、付記4または付記5に記載の密度一様化配置問題の最適解探索方法。
【0168】
(付記24) 該遺伝的アルゴリズム実行ステップが、該目的関数作成ステップにおいて作成される第3の目的関数に関するパラメータを該遺伝子として表現して該染色体の作成を行なう
ことを特徴とする、付記3または付記5に記載の密度一様化配置問題の最適解探索方法。(請求項7)
(付記25) 該遺伝的アルゴリズム実行ステップが、上記第1の目的関数をCost、上記第2の目的関数をU、上記第3の目的関数をCost+αUとした場合に、前記パラメータαを該遺伝子として表現する
ことを特徴とする、付記24記載の密度一様化配置問題の最適解探索方法。
【0169】
(付記26) 該遺伝的アルゴリズム実行ステップが、上記第1の目的関数をCost=配置要素のx座標に関する関数Costx+配置要素のy座標に関する関数Costy、上記第2の目的関数をU=配置要素のx座標に関する関数Ux+配置要素のy座標に関する関数Uy、上記第3の目的関数をCost+αU=(Costx+αxx)+(Costy+αyy)とした場合に、前記パラメータαxおよびαyを該遺伝子として表現する
ことを特徴とする、付記24記載の密度一様化配置問題の最適解探索方法。
【0170】
(付記27) 該遺伝的アルゴリズム実行ステップが、上記第1の目的関数をCost、上記第2の目的関数をU、上記第3の目的関数をCost+αU、前記パラメータαを上記逐次改善アルゴリズムのステップ数とパラメータβ1,β2,…βnとの関数とした場合に、前記パラメータβ1,β2,…βnを該遺伝子として表現する
ことを特徴とする、付記24記載の密度一様化配置問題の最適解探索方法。
【0171】
(付記28) 該遺伝的アルゴリズム実行ステップが、上記第1の目的関数をCost=配置要素のx座標に関する関数Costx+配置要素のy座標に関する関数Costy、上記第2の目的関数をU=配置要素のx座標に関する関数Ux+配置要素のy座標に関する関数Uy、上記第3の目的関数をCost+αU=(Costx+αxx)+(Costy+αyy)、前記パラメータαxおよびαyをそれぞれ逐次改善アルゴリズムのステップ数とパラメータβx1,βx2,…βxnおよびβy1,βy2,…βynとの関数とした場合に、前記パラメータβx1,βx2,…βxnおよびβy1,βy2,…βynを該遺伝子として表現する
ことを特徴とする、付記24記載の密度一様化配置問題の最適解探索方法。
【0172】
(付記29) 該遺伝的アルゴリズム実行ステップが、各ステップの実行を定める上記スケジュールに関するパラメータを、該遺伝子として表現して該染色体の作成を行なう
ことを特徴とする、付記5記載の密度一様化配置問題の最適解探索方法。(請求項7)
(付記30) 該遺伝的アルゴリズム実行ステップが、該目的関数作成ステップにおいて作成される上記第3の目的関数に関するパラメータ、および、各ステップの実行を定める上記スケジュールに関するパラメータを、それぞれ該遺伝子として表現して該染色体の作成を行なう
ことを特徴とする、付記5記載の密度一様化配置問題の最適解探索方法。
【0173】
(付記31) 該遺伝的アルゴリズム実行ステップが、染色体に対する遺伝的オペレーションとして、張り付け交叉を行なう
ことを特徴とする、付記3または付記5に記載の密度一様化配置問題の最適解探索方法。
(付記32) 該遺伝的アルゴリズム実行ステップが、染色体に対する遺伝的オペレーションとして、遺伝子の値の重みつき平均をもとにした交叉を行なうことを特徴とする、付記3または付記5に記載の密度一様化配置問題の最適解探索方法。
【0174】
(付記33) 該遺伝的アルゴリズム実行ステップが、遺伝子の値を所定の範囲内で無作為に変動させることにより、染色体に対する遺伝的オペレーションとしての突然変異を行なう
ことを特徴とする、付記3または付記5に記載の密度一様化配置問題の最適解探索方法。
【0175】
(付記34) 該遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズムの実行によって得られた上記複数の要素の配置解が一定の基準を満たさない場合に、上記複数の要素の配置解が改善されるような範囲で遺伝子の値を変動させることにより、染色体に対する遺伝的オペレーションとしての突然変異を行なう
ことを特徴とする、付記5に記載の密度一様化配置問題の最適解探索方法。
【0176】
(付記35) 該遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なう
ことを特徴とする、付記5記載の密度一様化配置問題の最適解探索方法。
(付記36) 該遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズムの実行により得られた上記第1の目的関数の演算値を、各個体の当該適応度として計算する
ことを特徴とする、付記35記載の密度一様化配置問題の最適解探索方法。
【0177】
(付記37) 該遺伝的アルゴリズム実行ステップが、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団を作成し、作成された前記複数の個体集団の個体を基本的には互いに隔離しつつ、上記スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なう
ことを特徴とする、付記3または付記5に記載の密度一様化配置問題の最適解探索方法。
【0178】
(付記38) 該遺伝的アルゴリズム実行ステップが、該目的関数作成ステップにおいて作成される第3の目的関数に関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第1の個体集団と、各ステップの実行を定める上記スケジュールに関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第2の個体集団と、上記第3の目的関数に関するパラメータを表す遺伝子および上記スケジュールに関するパラメータを表す遺伝子の双方を含む染色体を有する個体の集団である第3の個体集団とを作成する
ことを特徴とする、付記37記載の密度一様化配置問題の最適解探索方法。
【0179】
(付記39) 該遺伝的アルゴリズム実行ステップが、上記第1の個体集団に属する個体と第2の個体集団に属する個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第3の個体集団に移住させる
ことを特徴とする、付記38記載の密度一様化配置問題の最適解探索方法。
(付記40) 該遺伝的アルゴリズム実行ステップが、上記第1または第2の個体集団の個体と上記第3の個体集団の個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第1または第2の個体集団および上記第3の染色体集団へ各々移住させる
ことを特徴とする、付記38記載の密度一様化配置問題の最適解探索方法。
【0180】
(付記41) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する装置であって、
当該配置問題の配置条件を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成する目的関数作成部と、
該目的関数作成ステップで作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を探索する該最適解探索部とをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索装置。
【0181】
(付記42) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する装置であって、
複数の要素の初期配置状態を取得する初期配置状態取得部と、
当該配置問題の配置条件を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成する目的関数作成部と、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成部で作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行部とをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索装置。
【0182】
(付記43) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、上記密度一様化配置問題に対する最適解を探索する装置であって、
複数の要素の初期配置状態を取得する初期配置状態取得部と、
当該配置問題の上記配置条件を表す第1の目的関数に上記密度一様化条件を表す第2の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成する目的関数作成部と、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成部で作成された上記第3の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行部と、
該目的関数作成部における上記第3の目的関数の作成に関する情報、および、該逐次改善アルゴリズム実行部における上記逐次改善アルゴリズムの実行に関する情報のうち少なくとも一方を遺伝子として表現し、当該遺伝子の配列からなる染色体を個体として用いながら遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行部とをそなえ、
該目的関数作成部および該逐次改善アルゴリズム実行部のうち少なくとも一方が、前記遺伝的アルゴリズムの実行により得られた個体の染色体に含まれる遺伝子が表す情報に基づいて、上記第3の目的関数の作成および上記逐次改善アルゴリズムの実行を実施する
ことを特徴とする、密度一様化配置問題の最適解探索装置。
【0183】
(付記44) 該目的関数作成部による上記第3の目的関数の作成および該逐次改善アルゴリズム実行部による上記逐次改善アルゴリズムの実行に関するスケジュールを取得するとともに、新たな上記第3の目的関数の作成および上記逐次改善アルゴリズムの実行が順次繰り返し実施されるように、上記スケジュールに従って、該目的関数作成部および該逐次改善アルゴリズム実行部を制御するスケジュール管理部をさらにそなえた
ことを特徴とする、付記42記載の密度一様化配置問題の最適解探索装置。
【0184】
(付記45) 該目的関数作成部による上記第3の目的関数の作成,該逐次改善アルゴリズム実行部による上記逐次改善アルゴリズムの実行および該遺伝的アルゴリズム実行部による上記遺伝的アルゴリズムの実行に関するスケジュールを取得するとともに、上記遺伝的アルゴリズムの実行,新たな上記第3の目的関数の作成および上記逐次改善アルゴリズムの実行が順次繰り返し実施されるように、上記スケジュールに従って、該目的関数作成部,該逐次改善アルゴリズム実行部および該遺伝的アルゴリズム実行部をそれぞれ制御するスケジュール管理部をさらにそなえた
ことを特徴とする、付記43記載の密度一様化配置問題の最適解探索装置。
【0185】
(付記46) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、
付記1〜40のいずれか1項に記載の密度一様化配置問題の最適解探索方法における各ステップに対応する動作を実行する装置としてコンピュータを機能させる
ことを特徴とする、密度一様化配置問題の最適解探索プログラム。
【0186】
(付記47) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、
付記41〜45のいずれか1項に記載の密度一様化配置問題の最適解探索装置としてコンピュータを機能させる
ことを特徴とする、密度一様化配置問題の最適解探索プログラム。
【0187】
(付記48) 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムを記録した記録媒体であって、
付記46または付記47に記載の密度一様化配置問題の最適解探索プログラムをコンピュータが読み取り可能な方式で記録した
ことを特徴とする、密度一様化配置問題の最適解探索プログラムを記録した記録媒体。
【0188】
【実施例】
本発明を、LSIの設計における多数のセル(回路素子)の配置問題に適用する場合について考える。
LSI設計においては、各セルの接続関係を元にして、セル間の総配線長をできるだけ短くするように、多数のセルを回路基板上に配置することが要求される。さらに、各セルは一定の大きさを有するため、これらのセルが重なることなく、一様の密度で回路基板上に配置するという要求も課せられる。各セルを配置要素と見なせば、これは本発明が対象とする密度一様化配置問題に相当する。
【0189】
こうした問題に従来技術を適用して、セル間の総配線長を目的関数に設定し、逐次改善アルゴリズムを用いて最適解(正確には近似最適解)を求めた上で、この配置解の疎密を逐次改善若しくは遺伝的アルゴリズムにより解消していくことは、可能ではあるものの、膨大な演算処理が必要となってしまい、極めて多くの時間を要してしまう。特に、実用的な規模の問題においては、セルの数は膨大でその接続関係も極めて複雑であり、これを従来技術で効率的に解くのは困難である。
【0190】
それに対して、こうした問題に本発明を適用することにより、比較的に低次かつ簡略な単一の目的関数(第3の目的関数)のみを使用することによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となるはずである。
こうした問題に本発明の方法を適用した実施例を以下に説明する。
【0191】
セル数10000の実データに、本発明の実施形態の第2変形例の構成(すなわち、初期配置状態の取得、目的関数の作成、逐次改善アルゴリズムの実行およびこれらのスケジュールによる管理)に基づく方法を適用した。
セル(配置要素)の初期配置状態としては、セルを配置領域にランダムに配置したものを用いた。第1の目的関数としては、接続関係にある2つのセルの組の各々について、セル間のユークリッド距離を算出して二乗し、これを接続関係にある全てのセルの組について足し合わせたものを用いた。第2の目的関数としては、セルの仮想的配置を利用する手法(すなわち、パッキング法)を用いて作成した関数を用いた。逐次改善アルゴリズムの手法としては、非線形計画法の一つである共役勾配法を用いた。さらに、第1の目的関数と第2の目的関数との線形結合係数αについては、初期値α0を0.1とし、これを逐次改善アルゴリズムの繰り返し回数(ステップ数)5回毎に0.05ずつ増大させた。
【0192】
セルの初期配置状態を図27に、逐次改善アルゴリズムを790ステップにわたって実施して得られた配置状態(配置解)を図28に示す。初期配置状態においては著しかったセルの疎密が、本発明の方法の適用によって大きく解消され、セルの配置状態が一様となっているのが、目測によっても確認できる。
セルの疎密を評価する指標として、各配置状態におけるセル間の重なりの面積の総和を求めた。セルの配置の際の長さの単位1grid=2,500nmを用いて、gridの二乗を面積の単位として評価した。
【0193】
初期配置状態におけるセル間の重なりの面積の総和は464×106grid2、本発明の方法の適用後(逐次改善アルゴリズム790ステップの実行後)におけるセル間の重なりの面積の総和は1×106grid2であった。本発明の方法を適用したことにより、セルの疎密は464分の1に減少したことになる。
【0194】
【発明の効果】
以上詳述したように、本発明の密度一様化配置問題の最適解探索方法の第1の態様(請求項1)によれば、対象となる密度一様化配置問題について、密度一様化条件以外の配置条件(密度一様化配置問題の基になる配置問題の配置条件)を表す第1の目的関数に密度一様化条件を表す第2の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第3の目的関数として作成され、この第3の目的関数を最適化しながら当該密度一様化配置問題の最適解が探索される。すなわち、比較的に低次かつ簡略な単一の目的関数(第3の目的関数)のみを使用することによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【0195】
また、本発明の密度一様化配置問題の最適解探索方法の第2の態様(請求項2)によれば、複数の要素の初期配置状態を初期解として逐次改善アルゴリズムが実行され、上述した第3の目的関数を最適化しながら当該密度一様化配置問題の最適解が探索される。すなわち、配置要素の数が多く配置条件が複雑な場合でも、比較的に低次かつ簡略な単一の目的関数(第3の目的関数)のみを用いて初期解の逐次改善を行なうことによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【0196】
さらに、本発明の密度一様化配置問題の最適解探索方法の第3の態様(請求項3)によれば、上述した目的関数作成ステップにおける第3目的関数の作成に関する情報や、上述した逐次改善アルゴリズム実行ステップにおける逐次改善アルゴリズムの実行に関する情報がそれぞれ遺伝子として表現され、これらの遺伝子の配列からなる染色体を用いて遺伝的アルゴリズムが実行された上で、その結果得られた染色体が有する遺伝子が表す情報を用いて上述の目的関数の作成および逐次改善アルゴリズムの実行が行なわれる。すなわち、配置要素の数がさらに多く配置条件がより複雑な場合でも、目的関数(第3の目的関数)の作成および逐次改善アルゴリズムの実行に必要な情報を、当該密度一様化配置問題の特徴に応じて高速かつ適切に設定することができるので、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【0197】
また、第2の態様および第3の態様においては、所定のスケジュールに従って、上述の遺伝的アルゴリズム実行ステップ(第3の態様のみ),目的関数作成ステップ,逐次改善アルゴリズム実行ステップが繰り返し実行される。これによって、逐次改善の過程に応じて適切な目的関数(第3の目的関数)を随時設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する(請求項4)。
【0198】
さらに、第2の態様および第3の態様においては、密度一様化問題の密度一様化条件を除く配置条件に対応する目的関数(第1の目的関数)を最適化する解が求められ、これが密度一様化問題に対する初期配置状態として用いられる。これによって、密度一様化条件を除く配置条件を反映した適切な配置状態を高速に求め、これを初期配置状態として密度一様化問題の最適解探索を行なうことが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する(請求項5)。
【0199】
また、第2の態様および第3の態様においては、複数の要素が実際の配置位置を考慮して密度が一様となるように仮想的に配置され、複数の要素の仮想的な配置位置と実際の配置位置との関係を表す関数が第2の目的関数として作成され、これが第3の目的関数の作成に使用される。これによって、密度一様化条件を的確に反映した簡潔な関数(第2の目的関数)を使用して目的関数(第3の目的関数)を設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する(請求項6)。
【0200】
さらに、第3の態様においては、第3の目的関数の作成に関するパラメータや各ステップの実行スケジュールに関するパラメータが、それぞれ遺伝子として表現されて染色体の作成が行われ、遺伝的アルゴリズムが実行される。これによって、目的関数(第3の目的関数)に関するパラメータや各ステップの実行に関するパラメータを、当該密度一様化配置問題の特徴に応じて高速かつ適切に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する(請求項7)。
【0201】
また、遺伝的アルゴリズムが実行される際に、前回の逐次改善アルゴリズムの実行により得られた結果に基づいて各個体の適応度が評価され、この評価に基づいて選択された染色体について遺伝的アルゴリズムの実行が行なわれる。これによって、密度一様化条件以外の配置条件について十分な評価を行ないながら、適切な目的関数(第3の目的関数)を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する(請求項8)。
【0202】
さらに、各染色体の有する遺伝子の種類に基づいて複数の染色体集団が作成され、これらの染色体集団が互いに隔離されながら遺伝的アルゴリズムが実行される。これによって、染色体の多様性を保ちながら、適切な目的関数(第3の目的関数)を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する(請求項9)。
【0203】
なお、上述の方法の各ステップに対応する動作を実行する手段としてコンピュータを機能させるプログラムが提供される。これによって、上述の各方法を多種多様な環境で実行することができ、本発明を様々な局面における密度一様化配置問題に応用することが可能となる(請求項10)。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の構成を示すブロック図である。
【図2】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の要部の構成を示す機能ブロック図である。
【図3】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の概略的な動作(本発明の一実施形態にかかる密度一様化配置問題の最適解探索方法)を示すフローチャートである。
【図4】(a),(b)はいずれも本発明において用いられるレンガ積み方式のパッキング手法を説明するための図である。
【図5】(a),(b)はいずれも本発明において用いられるテトリス方式のパッキング手法を説明するための図である。
【図6】(a),(b)はいずれも本発明において用いられる凝縮方式のパッキング手法を説明するための図である。
【図7】(a),(b)はいずれも本発明において用いられる拡散方式のパッキング手法を説明するための図である。
【図8】(a),(b)はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図9】(a),(b)はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図10】(a),(b)はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図11】(a),(b)はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図12】(a),(b)はいずれも本発明において用いられる配置要素数密度関数を求める手法を説明するための図である。
【図13】本発明において用いられる配置要素面積密度関数を求める手法を説明するための図である。
【図14】本発明において用いられる配置要素重複数関数を求める手法を説明するための図である。
【図15】本発明において用いられる配置要素重複面積関数を求める手法を説明するための図である。
【図16】本発明において行なわれる逐次改善アルゴリズムの繰り返し回数とパラメータαとの関係を説明するための図である。
【図17】(a),(b) ,(c)はいずれも本発明において行なわれる逐次改善アルゴリズムの繰り返し回数とスロットのパッキングの実行との関係を説明するための図である。
【図18】(a),(b),(c),(d),(e),(f)はいずれも本発明の遺伝的アルゴリズムにおいて作成される染色体の構成を説明するための図である。
【図19】本発明の遺伝的アルゴリズムにおいて行なわれる、張り付け交叉を説明するための図である。
【図20】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータの重み付け平均をもとにした交叉を説明するための図である。
【図21】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータをランダムに動かす突然変異を説明するための図である。
【図22】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータを小さくする突然変異を説明するための図である。
【図23】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータを大きくする突然変異を説明するための図である。
【図24】本発明の遺伝的アルゴリズムにおいて用いられる「島」モデルを説明するための図である。
【図25】本発明の一実施形態の変形例にかかる密度一様化配置問題の最適解探索装置の概略的な動作(本発明の一実施形態の変形例にかかる密度一様化配置問題の最適解探索方法)を示すフローチャートである。
【図26】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の概略的な動作(本発明の一実施形態にかかる密度一様化配置問題の最適解探索方法)を示すフローチャートである。
【図27】本発明の実施例における、セルの初期配置状態を説明するための図である。
【図28】本発明の実施例における、本発明の方法の適用後のセルの配置状態を説明するための図である。
【符号の説明】
1 密度一様化配置問題の最適解探索装置
3 作業用メモリ(RAM)
4 CPU
5 表示制御部
5A 表示部
6 外部記憶媒体読出書込部
6A 外部記憶媒体
7A 印字部
7B 入力部表示部
7C 印字制御部
7D 入力制御部
8 ディスク装置
9 通信インターフェース部
9A 外部ネットワーク
41 初期配置状態取得部
42 目的関数作成部
43 逐次改善アルゴリズム実行部
44 遺伝的アルゴリズム実行部
45 スケジュール管理部

Claims (7)

  1. 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件(以下、密度一様化条件という)を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、前記密度一様化配置問題に対する最適解を探索する方法であって、処理装置が、
    前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
    前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第1の目的関数に前記密度一様化条件を表す第2の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第3の目的関数として作成するために前記第2の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、
    前記第1の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第2の目的関数を線形結合した関数を、前記第3の目的関数として作成する目的関数作成ステップと、
    前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第3の目的関数の前記第2の目的関数に乗算する所定の係数を変化させることによって、前記第3の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、を実行する
    ことを特徴とする、密度一様化配置問題の最適解探索方法。
  2. 前記処理装置が、
    所定のスケジュールに従って、前記遺伝的アルゴリズム実行ステップによる前記遺伝的アルゴリズムの実行,前記目的関数作成ステップによる新たな前記第3の目的関数の作成,および,前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行を、順次繰り返し実施する
    ことを特徴とする、請求項1に記載の密度一様化配置問題の最適解探索方法。
  3. 前記処理装置が、
    前記初期配置状態取得ステップにおいて、前記第1の目的関数を最適化する解を求め、これを前記初期配置状態とする
    ことを特徴とする、請求項1または請求項2に記載の密度一様化配置問題の最適解探索方法。
  4. 前記処理装置が、
    前記目的関数作成ステップにおいて、前記複数の要素の前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置を考慮して、前記複数の要素を密度が一様となるように仮想的に配置し、得られた前記複数の要素の仮想的な配置位置と前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置との関係を表す関数を、前記第2の目的関数として作成する
    ことを特徴とする、請求項記載の密度一様化配置問題の最適解探索方法。
  5. 前記処理装置が、
    前記遺伝的アルゴリズム実行ステップにおいて、前回の前記逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なう
    ことを特徴とする、請求項記載の密度一様化配置問題の最適解探索方法。
  6. 前記処理装置が、
    前記遺伝的アルゴリズム実行ステップにおいて、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団を作成し、作成された前記複数の個体集団の個体を基本的には互いに隔離しつつ、前記スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なう
    ことを特徴とする、請求項1または請求項2に記載の密度一様化配置問題の最適解探索方法。
  7. 複数の要素を所定の領域に一定の条件の下で配置する問題(以下、配置問題という)に対して、更に複数の要素の密度を一様にするとの条件(以下、密度一様化条件という)を加えた問題(以下、密度一様化配置問題という)が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、
    前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
    前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第1の目的関数に前記密度一様化条件を表す第2の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第3の目的関数として作成するために前記第2の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、
    前記第1の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第2の目的関数を線形結合した関数を、前記第3の目的関数として作成する目的関数作成ステップと、
    前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第3の目的関数の前記第2の目的関数に乗算する所定の係数を変化させることによって、前記第3の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、
    をコンピュータに実行させる
    ことを特徴とする、密度一様化配置問題の最適解探索プログラム。
JP2001073141A 2001-03-14 2001-03-14 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム Expired - Fee Related JP4723740B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001073141A JP4723740B2 (ja) 2001-03-14 2001-03-14 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム
US09/986,917 US6748574B2 (en) 2001-03-14 2001-11-13 Method of and apparatus for determining an optimal solution to a uniform-density layout problem, and medium on which a program for determining the solution is stored

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001073141A JP4723740B2 (ja) 2001-03-14 2001-03-14 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム

Publications (2)

Publication Number Publication Date
JP2002279337A JP2002279337A (ja) 2002-09-27
JP4723740B2 true JP4723740B2 (ja) 2011-07-13

Family

ID=18930612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001073141A Expired - Fee Related JP4723740B2 (ja) 2001-03-14 2001-03-14 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム

Country Status (2)

Country Link
US (1) US6748574B2 (ja)
JP (1) JP4723740B2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003076734A (ja) * 2001-09-03 2003-03-14 Fujitsu Ltd 集積回路設計装置及び集積回路設計方法並びにプログラム
US20030188271A1 (en) * 2002-04-02 2003-10-02 Institute Of High Performance Computing System and method for integrated circuit design
JP2004013552A (ja) * 2002-06-07 2004-01-15 Fujitsu Ltd 集積回路装置の配線設計方法,そのシステムおよびそのプログラム
US7171645B2 (en) * 2002-08-06 2007-01-30 Matsushita Electric Industrial Co., Ltd. Semiconductor device, method of generating pattern for semiconductor device, method of manufacturing semiconductor device and device of generating pattern used for semiconductor device
US6986109B2 (en) * 2003-05-15 2006-01-10 International Business Machines Corporation Practical method for hierarchical-preserving layout optimization of integrated circuit layout
US7111264B2 (en) * 2003-10-17 2006-09-19 Lsi Logic Corporation Process and apparatus for fast assignment of objects to a rectangle
US7036102B2 (en) * 2003-10-27 2006-04-25 Lsi Logic Corporation Process and apparatus for placement of cells in an IC during floorplan creation
US7146593B2 (en) * 2003-11-04 2006-12-05 Freescale Semiconductor, Inc. Method of implementing polishing uniformity and modifying layout data
US7103865B2 (en) 2003-11-21 2006-09-05 Lsi Logic Corporation Process and apparatus for placement of megacells in ICs design
GB2408599A (en) * 2003-11-29 2005-06-01 Ibm Multi-objective genetic optimization method
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
EP1598751B1 (en) * 2004-01-12 2014-06-25 Honda Research Institute Europe GmbH Estimation of distribution algorithm (EDA)
DE102004014894A1 (de) * 2004-03-23 2005-11-03 Infineon Technologies Ag Verfahren zur Herstellung einer Standardzellenanordnung und eine Vorrichtung zur Durchführung des Verfahrens
US7103858B2 (en) 2004-04-14 2006-09-05 Lsi Logic Corporation Process and apparatus for characterizing intellectual property for integration into an IC platform environment
US7210113B2 (en) * 2004-04-23 2007-04-24 Lsi Logic Corporation Process and apparatus for placing cells in an IC floorplan
JP2005316647A (ja) * 2004-04-28 2005-11-10 Renesas Technology Corp 集積回路の配線解析方法、論理合成方法、回路分割方法
GB0516634D0 (en) * 2005-08-12 2005-09-21 Univ Sussex Electronic circuit design
JP2007114822A (ja) * 2005-10-18 2007-05-10 Yokogawa Electric Corp 自動レイアウト方法および装置
JP4652242B2 (ja) * 2006-01-20 2011-03-16 株式会社日立製作所 半導体集積回路のセル配置方法
JP4805779B2 (ja) * 2006-10-04 2011-11-02 富士通株式会社 集積回路設計方法、集積回路設計装置及び集積回路設計プログラム
CN101681388A (zh) * 2007-07-06 2010-03-24 萨格昂泰克以色列有限公司 用于修改包含固定和自由布图实体的电路布图的布图修正引擎
KR20110012841A (ko) * 2009-07-31 2011-02-09 삼성전자주식회사 복수의 화상형성장치와 연결된 호스트장치 및 복수의 화상형성장치 재배치 설정방법
JP2015106594A (ja) * 2013-11-28 2015-06-08 富士通株式会社 診断装置、診断装置の制御方法、および診断装置の制御プログラム
CN103778327A (zh) * 2014-01-09 2014-05-07 宁波职业技术学院 一种曲线拟合方法
US10489713B1 (en) * 2015-08-26 2019-11-26 Psibernetix, Inc. Self-optimized system and method using a fuzzy genetic algorithm
CN110276143B (zh) * 2019-06-26 2023-04-18 闽南师范大学 一种多芯片led器件封装方法及系统
US11580358B1 (en) 2020-05-12 2023-02-14 Thales, S.A. Optimization with behavioral evaluation and rule base coverage
US20230368039A1 (en) * 2020-10-02 2023-11-16 Hewlett-Packard Development Company, L.P. Object packings
CN113094857B (zh) * 2021-04-14 2024-04-05 沈阳航空航天大学 一种节能的软件定义车辆网络的控制器布局方法
CN114881400B (zh) * 2022-03-24 2023-08-25 武汉敏声新技术有限公司 一种baw滤波器自动布局方法及相关设备
CN115130255B (zh) * 2022-05-16 2023-05-12 西南交通大学 一种基于协同优化的带分支管道布局方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6275872A (ja) * 1985-09-30 1987-04-07 シ−・エ−・イ− システムズ インコ−ポレイテツド コンポ−ネント配置方法
JP2000090065A (ja) * 1998-09-11 2000-03-31 Fujitsu Ltd 配置最適化問題処理方法及び配置最適化問題処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000305920A (ja) * 1999-04-22 2000-11-02 Fujitsu Ltd 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818729A (en) 1996-05-23 1998-10-06 Synopsys, Inc. Method and system for placing cells using quadratic placement and a spanning tree model
US5870312A (en) * 1996-06-28 1999-02-09 Lsi Logic Corporation Advanced modular cell placement system with dispersion-driven levelizing system
JP3905959B2 (ja) 1997-10-24 2007-04-18 富士通株式会社 配置最適化問題処理方法及び配置最適化問題処理装置並びに配置最適化問題処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US6301693B1 (en) 1998-12-16 2001-10-09 Synopsys, Inc. Non-linear optimization system and method for wire length and delay optimization for an automatic electric circuit placer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6275872A (ja) * 1985-09-30 1987-04-07 シ−・エ−・イ− システムズ インコ−ポレイテツド コンポ−ネント配置方法
JP2000090065A (ja) * 1998-09-11 2000-03-31 Fujitsu Ltd 配置最適化問題処理方法及び配置最適化問題処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000305920A (ja) * 1999-04-22 2000-11-02 Fujitsu Ltd 配置問題における遺伝的アルゴリズムを用いたパッキング方法およびパッキング・システム

Also Published As

Publication number Publication date
JP2002279337A (ja) 2002-09-27
US20020133797A1 (en) 2002-09-19
US6748574B2 (en) 2004-06-08

Similar Documents

Publication Publication Date Title
JP4723740B2 (ja) 密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラム
Liu et al. Applying multi-objective ant colony optimization algorithm for solving the unequal area facility layout problems
Ripon et al. Adaptive variable neighborhood search for solving multi-objective facility layout problems with unequal area facilities
CN113261003A (zh) 使用神经网络生成集成电路平面图
Che et al. Machine scheduling with orientation selection and two-dimensional packing for additive manufacturing
Paul et al. Linear and combinatorial optimizations by estimation of distribution algorithms
Nearchou A novel metaheuristic approach for the flow shop scheduling problem
JP2006293483A (ja) ロバスト最適化問題を解く問題処理方法およびその装置
Xi et al. A new method for solving buffer allocation problem in large unbalanced production lines
JP2010061439A (ja) 最適解関係表示装置、方法、及びプログラム
Kosztyán et al. Multimode resource-constrained project scheduling in flexible projects
JP2004529402A (ja) 配置の際に対角線配線を考慮に入れるための方法および装置
JP2010009341A (ja) 特性が似ていて形状が異なる設計形状を分類・表示する装置、方法、及びプログラム
Singh et al. A review on VLSI floorplanning optimization using metaheuristic algorithms
JP3905959B2 (ja) 配置最適化問題処理方法及び配置最適化問題処理装置並びに配置最適化問題処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JP4031874B2 (ja) 回路配置最適化問題処理方法及び回路配置最適化問題処理プログラムを記録したコンピュータ読み取り可能な記録媒体
Jabbari et al. Workload leveling based on work space zoning for takt planning
JP2001290796A (ja) 行列リオーダリング方法及び装置並びに電子回路シミュレーション方法及び装置
Huang et al. Benchmarking quantum (-inspired) annealing hardware on practical use cases
Fukasawa et al. Bi-objective short-term scheduling in a rolling horizon framework: a priori approaches with alternative operational objectives
US20080134105A1 (en) Apparatus, method and program for designing integrated circuit
JP3215351B2 (ja) 配置方式
JP2000040106A (ja) 生産システムの工程編成方法及び生産システムの工程編成装置並びに生産システムの工程編成プログラムを記録した記録媒体
JP2001236110A (ja) 生産工程レイアウト作成装置および方法、ならびにコンピュータを生産工程レイアウト作成装置として機能させるためのプログラムを記録したコンピュータ読取可能な記録媒体
CN111160831A (zh) 密集仓储的任务生成方法、装置和电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110329

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110408

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees