(57)【特許請求の範囲】
【請求項１】
複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件（以下、密度一様化条件という）を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、前記密度一様化配置問題に対する最適解を探索する方法であって、処理装置が、
前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第１の目的関数に前記密度一様化条件を表す第２の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第３の目的関数として作成するために前記第２の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、
前記第１の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第２の目的関数を線形結合した関数を、前記第３の目的関数として作成する目的関数作成ステップと、
前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第３の目的関数の前記第２の目的関数に乗算する所定の係数を変化させることによって、前記第３の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、を実行する
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【請求項２】
前記処理装置が、
所定のスケジュールに従って、前記遺伝的アルゴリズム実行ステップによる前記遺伝的アルゴリズムの実行，前記目的関数作成ステップによる新たな前記第３の目的関数の作成，および，前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行を、順次繰り返し実施する
ことを特徴とする、請求項１に記載の密度一様化配置問題の最適解探索方法。
【請求項３】
前記処理装置が、
前記初期配置状態取得ステップにおいて、前記第１の目的関数を最適化する解を求め、これを前記初期配置状態とする
ことを特徴とする、請求項１または請求項２に記載の密度一様化配置問題の最適解探索方法。
【請求項４】
前記処理装置が、
前記目的関数作成ステップにおいて、前記複数の要素の前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置を考慮して、前記複数の要素を密度が一様となるように仮想的に配置し、得られた前記複数の要素の仮想的な配置位置と前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置との関係を表す関数を、前記第２の目的関数として作成する
ことを特徴とする、請求項２記載の密度一様化配置問題の最適解探索方法。
【請求項５】
前記処理装置が、
前記遺伝的アルゴリズム実行ステップにおいて、前回の前記逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なう
ことを特徴とする、請求項２記載の密度一様化配置問題の最適解探索方法。
【請求項６】
前記処理装置が、
前記遺伝的アルゴリズム実行ステップにおいて、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団を作成し、作成された前記複数の個体集団の個体を基本的には互いに隔離しつつ、前記スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なう
ことを特徴とする、請求項１または請求項２に記載の密度一様化配置問題の最適解探索方法。
【請求項７】
複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件（以下、密度一様化条件という）を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、
前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第１の目的関数に前記密度一様化条件を表す第２の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第３の目的関数として作成するために前記第２の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、
前記第１の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第２の目的関数を線形結合した関数を、前記第３の目的関数として作成する目的関数作成ステップと、
前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第３の目的関数の前記第２の目的関数に乗算する所定の係数を変化させることによって、前記第３の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、
をコンピュータに実行させる
ことを特徴とする、密度一様化配置問題の最適解探索プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば大規模集積回路（ＬＳＩ；large scale integration）等の設計において多数の回路素子の配置を行なう際に用いて好適な、密度一様化配置問題の最適解探索方法および密度一様化配置問題の最適解探索プログラムに関する。
【０００２】
【従来の技術】
様々な分野において、多数の要素（配置要素）を一定の条件（配置条件）の下にできるだけ最適な状態で配置する、という問題が知られている。こうした問題は一般に、配置問題，最適配置問題，配置最適化問題，グラフマッピング問題などの名前で呼ばれる（以下の記載では、これらの名称を統一して、便宜的に「配置問題」と呼ぶことにする。なお、この言葉は、後の記載で特に断り書きをして定義付けを行なうまでは、一般的な広い意味で用いるものとする）。
【０００３】
例えば、上に挙げたＬＳＩ等の設計においては、多数の回路素子（配置要素）を、以下に挙げる条件（配置条件）を満たしながら、できるだけ最適な状態で回路基板上に配置することが要求されるが、これはまさに上記の配置問題に相当する。
・  各配置要素は一定の大きさおよび形状を有する。
・  配置要素間の接続関係は予め規定されている。
・  配置要素は所定の配置領域内に配置される。
【０００４】
この他にも、トラックを使った配送ルートの最適化，工場の運営スケジュールの最適化，交通機関におけるダイヤグラムの最適化，看護婦等の勤務スケジュールの最適化，ガントチャート（時間と生産量の関係を表すチャート）の最適化をはかる問題などが、配置問題の例として挙げられる。
そして、このような配置問題に対して要求される解は、配置条件をできるだけ最適な状態で満たす配置要素の配置を表す解、ということになる。こうした解は一般に、配置最適解，最適配置解若しくは単に最適解と呼ばれる（以下の記載では、これらの名称を統一して、便宜的に「最適解」と呼ぶことにする。なお、この言葉も、後の記載で特に断り書きをして定義付けを行なうまでは、一般的な広い意味で用いるものとする）。
【０００５】
このような配置問題に対する最適解を求める場合には、配置条件に対する配置解の好ましさを表す目的関数を導入し、この目的関数を使用するのが一般的である。
具体的には、配置条件をより好ましい状態で満たすほど目的関数が小さく（或いは大きく）なるように目的関数を設定する。そして、目的関数を最小（或いは最大）とするような配置解を求め、それを最適解とする。
【０００６】
しかし、特に配置要素の数が多く、また配置条件が複雑な場合には、目的関数が高次化・複雑化するために、目的関数を最小（或いは最大）とする解を求めることは、不可能であるか、あるいは膨大な演算時間を要するために現実には困難となってしまう。
このような場合には、逐次改善法によって目的関数の初期配置解を徐々に改善し、改善された配置解を所定の判断基準に基づき随時評価して、判断基準を満たす配置解が得られた時点で、その配置解を目的関数の近似的な最適解とする方法が用いられる（こうした方法を指して「目的関数を最適化する」と呼ぶ場合もある）。こうした最適化のためのアルゴリズムとしては、例えばミンカット法（ｍｉｎ−ｃｕｔ法），ｎ要素交換法，自己組織化法等が挙げられる。
【０００７】
特に高次かつ複雑な問題に対しては、いわゆる遺伝的アルゴリズム（他にも進化プログラミング等、様々な呼称があり、それぞれ厳密には内容が異なるが、以下の記載では一般的な広い意味で用いるものとする）を用いた手法がよく用いられる。この手法では、配置解を遺伝子として表現した上で、この遺伝子の一次ストリングである染色体を作成し、解候補の集団に対して選択(se1ection)，自己複製(reproduction)，交叉(crossover) ，突然変異(mutation)等の操作（遺伝オペレーション）を繰り返し施しながら世代を更新していき、所定の判断基準を満たす配置解を表す遺伝子が得られた時点で、その配置解を近似的な最適解とする。
【０００８】
こうした手法を使用することにより、目的関数を最小（或いは最大）とする厳密な最適解ではなくとも、実用に充分耐える精度の近似最適解を得ることができる。
なお、以下の記載では、ある配置問題について、最初の手法のように最適解を直接求める場合と、後者２つの手法のように所定の判断基準を満たす配置解を求めてこれを近似的な最適解とする場合とを総称して、「配置問題を解く」或いは「配置問題の最適解を探索する」という言葉で呼ぶことにする。
【０００９】
【発明が解決しようとする課題】
ところで、このような配置問題の中には、多数の要素の密度が一様となるように配置を行なう、という条件（密度一様化条件）を含むものがある。以下の記載では、こうした配置問題を「密度一様化配置問題」と呼ぶことにする。
例えば、上述したＬＳＩ等の設計の例においても、実際には上に列挙した配置条件に加えて、多数の要素の密度が一様となるように配置を行なう、という条件が要請されることになる。
【００１０】
この密度一様化条件は、特に配置要素の数が多く、配置条件が複雑な場合には、極めて困難かつ過酷な条件となる。よって、密度一様化条件を含むすべての配置条件に基づいた目的関数（汎目的関数）を作成すると、目的関数の次数が増大して最適解の探索が困難となってしまう。
そこで従来は、密度一様化条件以外の他の配置条件に基づいて作成した目的関数を用いて最適解の探索を行ない、得られた解に対してさらに密度の疎密を解消するアルゴリズム等を実行することにより、密度一様化配置問題の最適解を探索する手法が採られてきた。こうした従来の疎密解消アルゴリズムの例としては、本発明者らが先に提案した手法（特願平１０−２５８３３４号，特願２０００−９００６５号）や、REN-SONG TSAY et al.,“PROUD: A SEA-OF-GATES PLACEMENT ALGORITHM”（IEEE DESIGN & TEST OF COMPUTERS, 1988）に記載された手法などが挙げられる。
【００１１】
しかしながら、上述の手法によって密度一様化配置問題を解こうとすると、他の配置条件に基づく目的関数の最適化の作業に加えて、疎密解消アルゴリズムの実行に膨大な演算処理が必要となり、最適解の探索に極めて時間がかかってしまう。
近年のＬＳＩ設計技術やその他様々な技術の高度化・複雑化に伴い、密度一様化条件の下で最適解の探索が要求されるような配置問題は今後ますます増加し、その内容も一層複雑化していくことが予想される。こうした背景からも、配置要素の数が多く配置条件が複雑な密度一様化配置問題に対しても、より高速かつ効率的に最適解を探索する技術が必要とされている。
【００１２】
本発明は、このような課題に鑑み創案されたもので、配置要素の数が多く配置条件が複雑な密度一様化配置問題に対しても、より高速かつ効率的に最適解を探索できるようにした、密度一様化配置問題の最適解探索方法を提供することを目的とするとともに、更には最適解を探索すべくコンピュータを動作させるための密度一様化配置問題の最適解探索プログラムを提供することを目的とする。
【００１５】
【課題を解決するための手段】
上述の目的を達成するために、本密度一様化配置問題の最適解探索方法は、複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件（以下、密度一様化条件という）を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、前記密度一様化配置問題に対する最適解を探索する方法であって、処理装置が、前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第１の目的関数に前記密度一様化条件を表す第２の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第３の目的関数として作成するために前記第２の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、
前記第１の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第２の目的関数を線形結合した関数を、前記第３の目的関数として作成する目的関数作成ステップと、
前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第３の目的関数の前記第２の目的関数に乗算する所定の係数を変化させることによって、前記第３の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、を実行することを特徴としている。
【００１６】
また、前記処理装置が、所定のスケジュールに従って、前記遺伝的アルゴリズム実行ステップによる前記遺伝的アルゴリズムの実行，前記目的関数作成ステップによる新たな前記第３の目的関数の作成，および，前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行を、順次繰り返し実施するのが好ましい。
【００１７】
また、前記処理装置が、前記初期配置状態取得ステップにおいて、上記第１の目的関数を最適化する解を求め、これを前記初期配置状態とするのが好ましい。
さらに、前記処理装置が、前記目的関数作成ステップにおいて、前記複数の要素の前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置を考慮して、前記複数の要素を密度が一様となるように仮想的に配置し、得られた前記複数の要素の仮想的な配置位置と前記初期配置状態における配置位置、または、前記複数の要素の前記逐次改善アルゴリズム実行ステップによる前記逐次改善アルゴリズムの実行後の配置位置との関係を表す関数を、前記第２の目的関数として作成するのが好ましい。
【００１８】
さらに、前記処理装置が、前記遺伝的アルゴリズム実行ステップにおいて、前回の前記逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なうのが好ましい。
【００１９】
また、前記処理装置が、前記遺伝的アルゴリズム実行ステップにおいて、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団を作成し、作成された前記複数の個体集団の個体を基本的には互いに隔離しつつ、前記スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なうのが好ましい。
【００２０】
一方、本発明の別の態様に拠れば、複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件（以下、密度一様化条件という）を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、前記複数の要素に関して記憶手段に記憶された前記複数の要素の初期配置状態を取得する初期配置状態取得ステップと、前記複数の要素に関して前記記憶手段に記憶された配置問題の配置条件を表す第１の目的関数に前記密度一様化条件を表す第２の目的関数を線形結合した関数を前記密度一様化配置問題の配置条件を表す第３の目的関数として作成するために前記第２の目的関数に乗算する所定の係数を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップと、前記第１の目的関数に、前記遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される所定の係数を乗算した前記第２の目的関数を線形結合した関数を、前記第３の目的関数として作成する目的関数作成ステップと、前記初期配置状態を初期解として、前記目的関数作成ステップが作成した前記第３の目的関数の前記第２の目的関数に乗算する所定の係数を変化させることによって、前記第３の目的関数を最適化しながら、前記密度一様化配置問題に対する最適解を求める逐次改善アルゴリズムを実行する逐次改善アルゴリズム実行ステップと、をコンピュータに実行させる密度一様化配置問題の最適解探索プログラムも提供される。
【００２１】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
なお、以下の記載においては説明の便宜上、複数の要素を所定の領域に一定の条件の下で配置する問題を「配置問題」と呼び、この配置問題に対して更に複数の要素の密度を一様にするとの条件（密度一様化条件）を加えた問題を「密度一様化配置問題」と呼ぶことにする。言い換えれば、「密度一様化配置問題」から密度一様化条件を除いたものが「配置問題」ということになる。
（１）本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の構成図１は本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の構成を示すブロック図であり、この図１に示す密度一様化配置問題の最適解探索装置１は、前述した密度一様化配置問題が与えられた場合に、この密度一様化配置問題に対する最適解を探索するものである。
【００２２】
ここで、図１において、３は各種の処理に必要な情報の読み出し・書き込みを行なう作業用メモリ（ＲＡＭ）、５Ａは各種の設定画面や処理にて得られた複数の要素の配置解等を表示する表示部、５はこの表示部５Ａ上における表示状態を制御する表示制御部、７Ｂは表示部５Ａ上の表示データを参照しオペレータがその表示データに対する応答情報を入力するキーボード，マウス等の入力部、７Ｄは入力部７Ｂを制御する入力制御部である。
【００２３】
また、８はハードディスクで、このハードディスク８は、密度一様化配置問題の最適解探索装置１を動作させるために必要となる一切の情報（ＯＳ等）を記憶するものであるとともに、後述する密度一様化配置問題の最適解探索プログラムを記憶するものである。なお、６はＣＤ−ＲＯＭドライブやＭＯドライブ等の外部記憶媒体読出書込部，６Ａは対応するＣＤ−ＲＯＭディスクやＭＯディスク等の外部記憶媒体，７Ａは印字部，７Ｃは印字制御部であり、外部記憶媒体読出書込部６および印字部７Ａは、それぞれ、入力部７Ｂからの指示に応じて、表示部５Ａに表示された複数の要素の配置解等を、外部記憶媒体６Ａまたは所定の用紙に記録するものである。
【００２４】
さらに、９は外部ネットワークとの情報の入出力を制御する通信インターフェース部である。本発明の密度一様化配置問題の最適解探索装置１はこの通信インターフェース部９を介して、本装置の外部に存在するＬＡＮやＷＡＮ，インターネット等の外部ネットワーク９Ａに有線もしくは無線で接続され、外部ネットワーク９Ａに存在する様々な情報を共有することが可能となっている。
【００２５】
また、４は密度一様化配置問題の最適解探索装置１を構成する各部を統括的に管理するためのＣＰＵである。本実施形態にかかる密度一様化配置問題の最適解探索装置１においては、ＣＰＵ４は、図２に示すような初期配置状態取得部４１，目的関数作成部４２，逐次改善アルゴリズム実行部４３，遺伝的アルゴリズム実行部４４およびスケジュール管理部４５に相当する機能を発揮することになる。
【００２６】
ここで、初期配置状態取得部４１は、与えられた密度一様化配置問題に関する複数の要素の初期配置状態を取得するものである。
また、目的関数作成部４２は、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件（配置問題の配置条件）を表す第１の目的関数に、密度一様化条件を表す第２の目的関数を線形結合した関数を、この密度一様化配置問題の配置条件を表す第３の目的関数として作成するものである。
【００２７】
さらに、逐次改善アルゴリズム実行部４３は、初期配置状態取得部４１により取得された初期配置状態を初期解として逐次改善アルゴリズムを実行することによって、目的関数作成部４２により作成された第３の目的関数を最適化しながら、与えられた密度一様化配置問題の最適解を求めるものである。
また、遺伝的アルゴリズム実行部４４は、目的関数作成部４２による第３目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行に関する情報を、それぞれ遺伝子として表現し、この遺伝子の一次元配列からなる染色体を作成して、この染色体を個体として用いることにより、遺伝的アルゴリズムを実行するものである。
【００２８】
さらに、この遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行後、得られた個体の染色体に含まれる遺伝子が表す情報に基づいて、目的関数作成部４２による第３目的関数の作成、および、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が、それぞれ行なわれることになる。
また、スケジュール管理部４５は、目的関数作成部４２による第３の目的関数の作成，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行，および，遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行に関するスケジュールを取得する。さらに、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行，目的関数作成部４２による新たな第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が、上記スケジュールに従って繰り返し実施されるように、目的関数作成部４２，逐次改善アルゴリズム実行部４３および遺伝的アルゴリズム実行部４４をそれぞれ制御する。
【００２９】
なお、上述した初期配置状態取得部４１，目的関数作成部４２，逐次改善アルゴリズム実行部４３，遺伝的アルゴリズム実行部４４およびスケジュール管理部４５に相当する機能は、実際には、前述したハードディスク８や外部記憶媒体６Ａ等の記録媒体に記録されたプログラム（以下、密度一様化配置問題の最適解探索プログラムという）を作業用メモリ（ＲＡＭ）３に読み出し、そのプログラムを起動してＣＰＵ４で実行することにより、ＣＰＵ４の動作として実現される。
【００３０】
なお、この密度一様化配置問題の最適解探索プログラムは、例えばＣＤ−ＲＯＭ等の外部記憶媒体６Ａに記録されており、ＣＤ−ＲＯＭ等からコンピュータにおけるハードディスク８にインストールされて使用される。即ち、上述したハードディスク８やＣＤ−ＲＯＭ等が、密度一様化配置問題の最適解探索プログラムを記録したコンピュータ読み取り可能な記録媒体に相当する。
【００３１】
このように、本実施形態にかかる密度一様化配置問題の最適解探索装置１は、上述した作業用メモリ（ＲＡＭ）３，ＣＰＵ４，表示部５Ａ，表示制御部５，外部記憶媒体読出書込部６，印字部７Ａ，印字制御部７Ｃ，入力部７Ｂ，入力制御部７Ｄ，ハードディスク８，通信インターフェース部９等を有する一般的な計算機システム（コンピュータ）を用いて実現することが可能である。
（２）本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の動作本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置１の概略的な動作について、図３に示すフローチャートを参照しながら説明する。
【００３２】
まず、最適解探索の対象となる密度一様化配置問題は、配置対象の複数の要素に関するデータ，配置先となる所定の領域に関するデータ，配置に伴う一定の条件に関するデータ（以上は、密度一様化配置問題の基礎となる配置問題に関するデータとなる），密度一様化条件に関するデータなど、様々なデータの形で準備される。
【００３３】
また、これらのデータに加えて、第１の目的関数に関するデータも準備される。この第１の目的関数は、密度一様化配置問題の基礎となる配置問題に基づいて設定されるもので、配置問題に対する配置解の好ましさを表す関数である。具体的には、ある配置解が配置問題に伴う一定の条件をより好ましい状態で満たすほど、その配置解を用いたこの第１の目的関数の演算値が小さく（或いは大きく）なるように設定される。
【００３４】
この密度一様化配置問題に関する様々なデータは、データファイルの形で、外部記憶媒体読出書込部６，ハードディスク８，通信インターフェース部９等を通じ、本発明の密度一様化配置問題の最適解探索装置１に入力される。また、オペレータが入力部７Ｂを通じて所要のデータを直接入力することも可能である。
さて、本発明の最適解探索装置１に、密度一様化配置問題のデータが入力されると、まず、初期配置状態取得部４１によって、与えられた密度一様化配置問題に関する複数の要素の初期配置状態が取得される（初期配置状態取得ステップ，Ｓ１）。
【００３５】
次に、遺伝的アルゴリズム実行部４４によって、目的関数作成部４２による上記第３の目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部４３における上記逐次改善アルゴリズムの実行に関する情報のうち少なくとも一方が遺伝子として表現され、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムが実行される（遺伝的アルゴリズム実行ステップ，Ｓ２）。
【００３６】
続いて、目的関数作成部４２によって、遺伝的アルゴリズム実行部４４により得られた個体の染色体に含まれる遺伝子により表される情報に基づいて、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件（配置問題の配置条件）を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成される（目的関数作成ステップ，Ｓ３）。
【００３７】
その後、逐次改善アルゴリズム実行部４３によって、遺伝的アルゴリズム実行部４４により得られた個体の染色体に含まれる遺伝子により表される情報に基づき、初期配置状態取得部４１により得られた初期配置状態を初期解として逐次改善アルゴリズムが実行される。そして、目的関数作成部４２で作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解の候補となる配置解が求められる（逐次改善アルゴリズム実行ステップ，Ｓ４）。
【００３８】
さらに、逐次改善アルゴリズム実行部４３によって、実行された逐次改善アルゴリズムの内容が所定の基準を満たしているかどうか、また、逐次改善アルゴリズムの実行により得られた最適解候補が所定の基準を満たしているかどうかが判断され（Ｓ５）、いずれかが基準を満たしていないと判断された場合には、再び、目的関数作成部４２による第３の目的関数の作成、または、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行へと移行して、新たな最適解候補の探索が行なわれるとともに（Ｓ５のＮＯ１ルートまたはＮＯ２ルート）、満たしていると判断された場合には、この最適解候補が当該密度一様化配置問題の近似最適解として決定されることになる（Ｓ５のＹＥＳルート）。
【００３９】
決定された該密度一様化配置問題の最適解に関するデータは、表示制御部５の制御により表示部５Ａに表示されたり、印字制御部７Ｃの制御により印字部７Ａで印字されたりすることになる。また、データファイルの形で、外部記憶媒体読出書込部６やハードディスク８に保存し、または通信インターフェース部９を通じて外部ネットワーク９Ａに出力することも可能である。
【００４０】
なお、以上の各部における動作は、オペレータが必要に応じて、入力部７Ｂを通じて所望の指示やデータを入力することにより、制御することが可能である。
また、実際には、上述のフローの開始前に、スケジュール管理部４５によって、以上の各動作（初期配置状態取得部４２による初期配置状態の取得，遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行，目的関数作成部４２による新たな第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行）の実施についてのスケジュールが取得される。そして、上述のフローの開始後は、スケジュール管理部４５によって、以上の各動作が繰り返し実施されるように、上記スケジュールに従って、目的関数作成部４２，逐次改善アルゴリズム実行部４３および遺伝的アルゴリズム実行部４４が、それぞれ制御される。
【００４１】
以上に概略を説明した密度一様化配置問題の最適解探索装置１の各部の動作（初期配置状態取得部４２による初期配置状態の取得，遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行，目的関数作成部４２による新たな第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行）について、以下に詳細を説明する。
【００４２】
なお、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行は、実際には、初期配置状態取得部４１による初期配置状態の取得の直後に行なわれることになるが、ここでは説明の便宜上、目的関数作成部４２による新たな第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行の説明の後に、それらの内容に基づき説明することにする。
【００４３】
また、スケジュール管理部４５によるスケジュールの取得および各部の制御については、他の各部の動作の説明に応じて随時説明することにする。
（２−１）初期配置状態取得部の動作
初期配置状態取得部４１では、与えられた密度一様化配置問題に関する複数の要素の初期配置状態が取得される。
【００４４】
具体的に説明すると、初期配置状態取得部４１は、まず、与えられた密度一様化配置問題についての様々なデータのうち、第１の目的関数に関するデータを取得する。そして、この第１の目的関数を最適化する配置解を求め、これを当該密度一様化配置問題に対する初期配置状態とするのである。
こうした構成によって、密度一様化条件を除く配置条件を反映した適切な配置状態を高速に求め、これを初期配置状態として密度一様化問題の最適解探索を行なうことが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
【００４５】
ここで、第１の目的関数を最適化する配置解は、初期配置状態取得部４１において一般的な逐次改善法や遺伝的アルゴリズムを実行することにより求めてもよいが、事前にこうした手法を用いて配置解を求めておき、第１の目的関数に関するデータの一つとして入力してもよい。前者の構成とすれば、入力するべき密度一様化配置問題に関するデータが少なくて済み、密度一様化配置問題の最適解探索に関する一連の手順の自動化に寄与するのに対し、後者の構成とすれば、本発明の装置もしくはプログラムの構成の簡素化・低価格化に寄与するとともに、最適解探索に関する一連の手順の高速化も図ることができる。
【００４６】
なお、ここで取得される複数の要素の初期配置状態は、上述のような第１の目的関数を最適化する配置解に限られるものではなく、何か他の条件により求めてもよい。また、複数の要素をランダムに配置して、これを初期配置状態としても構わない。これにより、扱う問題の種類によっては、本発明の構成をより簡素な構成とすることができるとともに、最適解探索の手順を高速化することができる。
（２−２）目的関数作成部の動作
目的関数作成部４２では、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件（配置問題の配置条件）を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成される。
【００４７】
具体的に説明すると、まず、目的関数作成部４２は、与えられた密度一様化配置問題の密度一様化条件を表す第２の目的関数を作成する。この第２の目的関数は、複数の要素の配置解が密度一様化条件をより好ましい状態で満たすほど（すなわち、その配置解において複数の配置要素がより均一に配置され、疎密の程度が低いほど）、その配置解を用いたこの第２の目的関数の演算値が小さく（或いは大きく）なるように設定される。すなわち、配置要素の密度が一様になると減少する（或いは増大する）ような関数を選び、これを第２の目的関数と決めるのである。
【００４８】
続いて、目的関数作成部４２は、密度一様化配置問題に関するデータの一つとして入力された第１の目的関数（配置問題の配置条件を表す目的関数）に、上の動作により得られた第２の目的関数（密度一様化条件を表す目的関数）を線形結合することにより、密度一様化配置問題の配置条件を表す第３の目的関数を作成する。
【００４９】
例えば、第１の目的関数をＣｏｓｔ、第２の目的関数をＵとすると、目的関数作成部４２によって得られる第３の目的関数は、Ｃｏｓｔ＋αＵと表すことができる。なお、αは第１の目的関数と第２の目的関数の線形結合係数を表す。
ここで、第２の目的関数の作成手順としては、好ましくは、複数の要素を密度が一様となるように仮想的に配置する手法を利用する。この手順について、以下に詳しく説明する。
【００５０】
なお、以下の説明では、便宜上、複数の要素の配置解が密度一様化条件をより好ましい状態で満たすほど（すなわち、その配置解において複数の配置要素がより均一に配置され、疎密の程度が低いほど）、その配置解を用いた第２の目的関数の演算値が小さくなるように（すなわち、最適解の場合に第２の目的関数が最小値を取るように）、第２の目的関数を設定する場合を考える。
【００５１】
まず、目的関数作成部４２は、複数の要素の実際の配置位置を考慮して、密度が一様となるように複数の要素を仮想的に配置する。
ここで、複数の要素の実際の配置位置とは、初期配置状態取得部４１により得られた初期配置状態における、複数の要素の初期配置位置、もしくは、後述するように、スケジュール管理部４５により取得されたスケジュールで規定された時点における、複数の要素の配置位置のことを指す。
【００５２】
具体例として、密度一様化配置問題に含まれる配置要素ａを考える。この要素ａの実際の配置位置を表す座標を（ｘa，ｙa）とする。この配置要素ａに対して、仮想的な影の配置要素ａ’を想定する。実際の配置要素に対応するこの仮想的な配置要素ａ’を、簡単のためにスロットと呼ぶことにする。
目的関数作成部４２は、このスロットａ’を、対応する配置要素ａの実際の配置位置を表す座標（ｘa，ｙa）に基づいて配置領域内に一様に分布させ、スロットａ’の配置位置を表す座標（ｘaslot，ｙaslot）を、対応する配置要素の仮想的な配置位置として得るのである。
【００５３】
複数の配置要素に対応する複数のスロットを配置領域内に一様に分布させる手法としては、本発明者が提案したパッキング手法を応用することができる（特開２０００−３０５９２０）。本発明においてパッキングとは、定められた領域内に複数のスロットを互いに重なり合わないように配置することをいう。具体的なパッキング手法としては、以下の手法が挙げられる。
（Ａ）煉瓦積み方式のパッキング法
このパッキング法は、複数の配置要素の実際の配置位置に基づいて、配置領域の一頂点から順に対応するスロットを詰めていく方法である。
【００５４】
例えば、複数の配置要素が図４（ａ）に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、図４（ｂ）に示すように、配置領域の左下に存在する配置要素に対応するスロットから右側のスロットへ、配置領域の左下の一頂点から右側へと順に詰めていき、最右翼の端まできたら、再び最左翼へ戻り、既に置かれたスロットの上に詰める。以下同様のことを、配置領域のスロットがなくなるまで繰り返す。
【００５５】
言い換えれば、所定領域の一頂点を基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
このパッキング法においては、配置対象となる複数のスロットに予め順序を付けておき、新たに配置するスロットが既に配置されたスロットに重なることがないよう、この順序に従ってスロットの配置を行なっていく。この順序は、複数の配置要素の実際の配置位置に基づいて決定する。具体的には、まず、配置要素の実際の配置位置における、各配置要素間の相対的な位置関係を考える。そして、一列に配置されるスロットの横幅の総和が配置領域の横幅を越えてはならない、などの条件を定めて、各配置要素に対応するスロットの配置の順序を決めていくのである。
（Ｂ）テトリス方式のパッキング法
このパッキング法は、煉瓦積み方式を拡張した方法である。スロットの大きさを予め考慮にいれ、スロットをパッキングした結果、パッキングの境界付近が極端に凸凹しないようにある程度配慮する方法である。
【００５６】
例えば、複数の配置要素が図５（ａ）に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、まず、配置領域の一辺（ここでは下辺とする）を選択し、この一辺に対してスロットを積み上げながら配置するものと定めて、配置の際の規準の高さＨｓを定める。次に、予め決められたスロットの順番に従って、図５（ｂ）に示すように、スロットの高さの和が上記規準の高さＨｓに達するまで、上で選択した一辺に対してスロットを積み上げるようにして詰めていく。次に、スロットを積み上げた位置のすぐ横に（ここでは便宜上右側とする）、同様にスロットを規準の高さＨｓに達するまで詰めていく。これを配置領域の最右側に達するまで続ける。配置領域の最右端に達したら、配置領域の最左端に戻り既にパッキングしてあるスロットの上に重ならないように積み重ねる。これを繰り返すことでスロットを最後まで詰める。
【００５７】
以上、言い換えれば、所定領域の一辺を基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
スロットの配置の順序は、煉瓦積み方式の場合と同様に、対応する配置要素の実際の配置位置における、各配置要素間の相対的な位置関係から定める。具体的には、例えば、煉瓦積み方式について説明したのと同様に、スロットを左から右へ詰めていくパッキング過程の場合には、スロットが配置領域の最右端を飛び越えないという条件を定め、この条件に基づいて順番を決める。
（Ｃ）凝縮方式のパッキング法
このパッキング法は、配置領域内の適当な位置を選択し、この位置を中心としてスロットを詰めながら、スロットをパッキングしていく手法である。
【００５８】
例えば、複数の配置要素が図６（ａ）に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、まず配置領域内の適当な位置を選択し、この位置をパッキングの中心Ｃとして定める。次に、予め決められたスロットの順番に従って、図６（ｂ）に示すように、パッキングの中心に向かってスロットを順次詰めていく。そして、新たに配置するスロットが既に配置したスロットに重ならないようにパッキングを繰り返しながら、複数のスロットを最後まで詰めていくのである。
【００５９】
言い換えれば、所定領域の中心点を基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
スロットの配置の順序は、まず、対応する配置要素の実際の配置位置について、パッキングの中心を原点とする各配置要素の極座標を考える。そして、配置要素の実際の配置位置の極座標（ｒ、θ）の動径座標ｒの小さい順に、動径座標が同じ場合には偏角θの小さい順に、配置要素に順序をつけていく。
（Ｄ）拡散方式のパッキング法
このパッキング法は、凝縮方式のパッキングとは正反対の局所的パッキング法である。すなわち、一点のまわりにスロットを集めるのではなく、配置領域の各境界付近から均等にスロットをパッキングしていく。
【００６０】
例えば、複数の配置要素が図７（ａ）に示すような実際の配置位置を有する場合を想定する。これらの配置要素に対応するスロットの座標を決定する際には、例えば図７（ｂ）に示すように、配置領域内のスロットを、まず左下の隅に、次には右下の隅に、という様に、四つの隅を交互に基準として、水平方向に（または垂直方向に）パッキングしていく。
【００６１】
言い換えれば、所定領域の全頂点を交互に基準として複数の要素を並べながら、複数の要素を仮想的に配置していく、という手法である。
スロットの配置の順序は、対応する配置要素の実際の配置位置のｘ座標をもとにして、ｘ座標の小さい順に配置要素に順序をつける。同様にして、配置要素のｙ座標をもとにして、ｙ座標の小さい順に配置要素に順序をつける。これら２つの配置要素の順序を、順にＯx，Ｏyで示すことにする。
【００６２】
そして、以下の四つの手順に基づいて、スロットのパッキングを行なう。
Ｄ１：Ｏx，Ｏyの両方の値が小さい配置要素に対応するスロットを、配置領域の左下の隅から詰めていく。
Ｄ２：Ｏx，Ｏyの両方の値が大きい配置要素に対応するスロットを、配置領域の右上の隅から詰めていく。
Ｄ３：Ｏxの値が大きく、Ｏyの値が小さい配置要素に対応するスロットを、配置領域の右下の隅から詰めていく。
Ｄ４：Ｏxの値が小さく、Ｏyの値が大きい配置要素に対応するスロットを、配置領域の左上の隅から詰めていく。
【００６３】
例えば、上記Ｄ１に従って、Ｏx，Ｏyの両方の順序で最も前にある配置要素Ｃijに対応するスロットを、配置領域の左下の隅に対して詰めるように配置する。そして、この配置要素Ｃijを２つの順序Ｏx，Ｏyから取り除く。次に、上記Ｄ２に従って、Ｏx，Ｏyの両方で最も後ろにある配置要素Ｃklに対応するスロットを、右上の隅に対して詰めるように配置する。そして、この配置要素Ｃklを２つの順序Ｏx，Ｏyから取り除く。さらに、上記Ｄ３に従って、Ｏxでは後ろに、Ｏyでは前にある配置要素Ｃmnに対応するスロットを、配置領域の右上の隅に対して詰めるように配置する。そして、この配置要素Ｃmnを順序Ｏx，Ｏyから取り除く。次には上記Ｄ４に従って配置要素を選択し、対応するスロットを配置した上で、選択した配置要素を順序Ｏx，Ｏyから取り除く。既に配置したスロットに対して重ならないように新たなスロットを順次詰めて配置しながら、これらの手順を順次交互に、配置要素がなくなるまで続ける。
【００６４】
もちろん、配置要素を選択する手順（スロットを配置する手順）は、上述の例の様にＤ１，Ｄ２，Ｄ３，Ｄ４の順序および組み合わせである必要はなく、任意の順序および任意の組み合わせで実施できる。
以上、目的関数作成部４２によって、上述のパッキング手法が随時選択され、複数の要素の仮想的な配置が行なわれる。これによって、簡潔で明快な手順に従いながら、複数の要素を密度が一様になるよう仮想的に配置することが可能となる。また、複数の仮想配置手法（パッキング手法）が用意されることで、多様な仮想配置が可能となり、後に説明するスケジューリング法との組み合わせによって、配置要素のより一層の疎密解消に寄与する。
【００６５】
なお、一般に配置領域には、配置要素を置けない部分領域（配置禁止領域）が存在する場合がある。パッキング法を用いて要素の仮想的な配置を行なう場合には、このような配置禁止領域にはスロットを配置しないことが望ましい。このため、目的関数作成部４２は以下のような方式を用いて、スロットが配置禁止領域に置かれないようにする。
（ａ）スキップ方式
この方式は、スロットが配置禁止領域に置かれた場合に、配置禁止領域の外側ヘスロットをスキップさせることによって、配置禁止領域を避ける方式である。
【００６６】
例えば、図８（ａ）に示すように、配置領域内に配置禁止領域Ｘが存在する場合を考える。配置要素に対応するスロットのパッキングを上記の煉瓦積み方式で行なう場合、通常であれば配置禁止領域の上にパッキングされるスロットＡ，Ａ’を、図８（ｂ）に示すように、配置禁止領域の外側（ここでは右側）にスキップさせてパッキングする。
【００６７】
言い換えれば、所定領域内に存在する配置禁止領域を配置対象から除外しながら、複数の要素の仮想的な配置を行なう、という手法である。
（ｂ）押し出し方式１
以下の各方式は、スロットが配置禁止領域内にパッキングされた場合に、このスロットを配置禁止領域の外部へ押し出すことによって、配置領域の外側へ再配置する手法である。
【００６８】
最初の方式では、対応する配置要素からの移動距離が短くなる方向にスロットを押し出すことによって、スロットを配置禁止領域の外側へ移動させる。
例えば、図９（ａ）に示すように、配置領域内に配置禁止領域Ｘが存在し、この配置禁止領域Ｘ内にスロットＡがパッキングされた場合を考える。このスロットＡに対応する配置要素の現在の配置位置が図の上方に存在する場合、図９（ｂ）に示すように、スロットＡの新たなパッキング位置と対応する配置要素の実際の配置位置との距離が最短となるように、スロットＡを上方に移動させて配置禁止領域Ｘの外部に押し出す。
【００６９】
言い換えれば、所定領域内に存在する配置禁止領域に要素が配置された場合に、要素の現在の配置位置と新たな仮想的配置位置との距離が最短となる方向にこの要素を移動させることにより、この要素を配置禁止領域の外部に再び仮想的に配置する、という手法である。
（ｃ）押し出し方式２
次の方式では、配置禁止領域が配置領域の境界付近にある場合に、スロットが配置領域の外側へ出ないよう、あらかじめ定められた方向へとスロットを押し出すことによって、スロットを配置禁止領域の外側へ移動させる。
【００７０】
例えば、図１０（ａ）に示すように、配置領域内に配置禁止領域Ｘが存在し、この配置禁止領域Ｘ内にスロットＡがパッキングされた場合を考える。この配置禁止領域Ｘの右側には配置領域の境界が近接しており、スロットＡを右側に押し出すと配置領域の外側にはみ出してしまう。そこで、配置禁止領域Ｘと配置領域の境界が近接していない方向を予め決めておき（ここでは配置禁止領域Ｘの上側）、図１０（ｂ）に示すように、スロットＡを予め決めた方向に移動させて配置禁止領域Ｘの外部に押し出す。
【００７１】
言い換えれば、所定領域内の境界付近に存在する配置禁止領域に要素が配置された場合に、所定領域の境界から離れた方向にこの要素を移動させることにより、この要素を配置禁止領域の外部に再び仮想的に配置する、という手法である。
（ｄ）スロットの配置禁止領域での位置を考慮した押し出し方式
次の方式では、配置禁止領域内でスロットが存在する位置を考慮して、スロットを押し出す際の距離が最短となる方向を決定し、スロットをこの方向に押し出すことによって、スロットを配置禁止領域の外側へ移動させる。
【００７２】
例えば、図１１（ａ）に示すように、配置領域内に配置禁止領域Ｘが存在し、この配置禁止領域Ｘ内にスロットＡ１，Ａ２，Ａ３，Ａ４がパッキングされた場合を考える。図１１（ａ）のように配置禁止領域Ｘが長方形の場合には、その対角線でこれを四つの三角形Ｘ１，Ｘ２，Ｘ３，Ｘ４に分割し、図１１（ｂ）に示すように、三角形Ｘ１，Ｘ２，Ｘ３，Ｘ４に各々重なっているスロットＡ１，Ａ２，Ａ３，Ａ４を、押し出す際の距離が最短となる方向（すなわち、各三角形の一辺と重なる配置禁止領域Ｘの一辺方向）へ移動することによって押し出す。
【００７３】
言い換えれば、所定領域内に存在する配置禁止領域に要素が配置された場合に、この要素を移動距離が最短となる方向に移動させることにより、この要素を上記配置禁止領域の外部に再び仮想的に配置する、という手法である。
以上、目的関数作成部４２は、配置要素を置けない部分領域（配置禁止領域）に要素が仮想的に配置された場合に、上述の方式を随時選択して、複数の要素を配置禁止領域の外に再配置する。これによって、簡潔で明快な手順に従いながら、配置禁止領域を避けつつ複数の要素を仮想的に配置することが可能となる。
【００７４】
続いて、目的関数作成部４２は、上の動作により得られた複数の要素の仮想的な配置位置と、複数の要素の実際の配置位置との関係を表す関数を、上記密度一様化条件を表す第２の目的関数として作成する。
具体的には、他の配置要素の配置位置が一定であると仮定した場合に、任意の配置要素ａの配置位置の座標（ｘa，ｙa）が対応するスロットの配置位置の座標（ｘaslot，ｙaslot）に等しければ（つまり、ｘa＝ｘaslot，ｙa＝ｙaslotであれば）、密度一様化条件を表す第２の目的関数が最小値を取るように、第２の目的関数を設定する。すなわち、この第２の目的関数は、すべての配置要素の配置位置座標が対応するスロットの配置位置座標と等しい場合に、最小値を取ることになる。このように、配置要素の実際の配置位置と対応するスロットの配置位置（仮想的な配置位置）との関係を用いることで、極めて簡素な構成で密度一様化の条件を表すことが可能となる。
【００７５】
なお、第２の目的関数の作成手順としては、以上説明した手法（複数の要素を密度が一様となるように仮想的に配置する手法）の他にも、配置要素の現在の配置位置を基にした、幾つかの手法が考えられる。これらの手法について、以下に説明する。
（Ｉ）配置要素数密度関数を求める手法
この手法では、まず、図１２（ａ）に示すように、配置領域Ｒを適当な部分領域ｒ１，ｒ２，ｒ３，ｒ４に分割する。
【００７６】
続いて、図１２（ｂ）に示すように、各部分領域ｒ１，ｒ２，ｒ３，ｒ４に存在する配置要素の総数を数え、その値をＮとする。
閾値Ｎcを適当に設定した上で、部分領域毎に関数ｕを次のように定義する。・もしＮ＞Ｎcならば、
ｕ＝Ｎ−Ｎc  （１）
・もしＮ≦Ｎcならば、
ｕ＝０  （２）
こうして部分領域毎に定義された関数ｕを全ての部分領域について足し合わせ、得られた配置要素の数密度に係わる関数Ｕを第２の目的関数とする。
【００７７】
すなわち、目的関数作成ステップが、複数の要素の密度に係わる関数を第２の目的関数として作成する、という特徴を有することになる。これによって、配置要素の数がそれほど多くなく、また配置要素の面積にばらつきがない場合に、効率的に第２の目的関数を求めることが可能となる。
（II）配置要素面積密度関数を求める手法
この手法では、配置要素の数密度の替わりに、図１３に示すように、各部分領域ｒ１，ｒ２にある配置要素の面積の総和Ａを計算する。
【００７８】
閾値Ａcを適当に設定した上で、部分領域毎に関数ｕを次にように定義する。
・もしＡ＞Ａcならば、
ｕ＝Ａ−Ａc  （３）
・もしＡ≦Ａcならば、
ｕ＝０  （４）
こうして部分領域毎に定義された関数ｕを全ての部分領域について足し合わせ、得られた配置要素の面積密度に係わる関数Ｕを第２の目的関数とする。
【００７９】
言い換えれば、複数の要素の面積密度に係わる関数を第２の目的関数として作成する、という手法である。これによって、配置要素の数がそれほど多くなく、また配置要素の面積に大きなばらつきがある場合に、効率的に第２の目的関数を求めることが可能となる。
（III）配置要素重複数関数を求める手法
この手法では、図１４に示すように、配置領域Ｒ内で互いに重なっている配置要素の総数（図１４中の黒で示される配置要素の個数）を算出し、得られた配置要素の重複数に係わる関数Ｕを第２の目的関数とする。
【００８０】
言い換えれば、複数の要素のうち互いに重なり合っている要素の数に係わる関数を第２の目的関数として作成する、という手法である。これによって、配置要素の数が多くて重なりが生じやすく、また配置要素の面積にそれほどばらつきがない場合に、効率的に第２の目的関数を求めることが可能となる。
（IV）配置要素重複面積関数を求める手法
この手法では、図１５に示すように、配置領域Ｒ内で互いに重なっている配置要素について、重なっている部分の面積の総和（図１５中の黒で示される領域の面積の総和）を算出し、得られた配置要素の重複面積に係わる関数Ｕを第２の目的関数とする。計算を簡便にするために、二つの配置要素間で重なっている部分の面積を、重複を許さずに計算する。
【００８１】
言い換えれば、複数の要素のうち互いに重なり合っている領域の面積に係わる関数を第２の目的関数として作成する、という手法である。これによって、配置要素の数が多くて重なりが生じやすく、また配置要素の面積に大きなばらつきがある場合に、効率的に第２の目的関数を求めることが可能となる。
以上説明した様に、目的関数作成部４２によって、与えられた密度一様化配置問題の配置条件から密度一様化条件を除いた条件（配置問題の配置条件）を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成される。こうした構成によって、密度一様化条件を的確に反映した簡潔な関数（第２の目的関数）を使用して目的関数（第３の目的関数）を設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
【００８２】
なお、目的関数作成部４２による上述の第３の目的関数の作成動作は、実際には、スケジュール管理部４５により取得・管理されるスケジュールに基づき行なわれることになる。
（２−３）逐次改善アルゴリズム実行部の動作
逐次改善アルゴリズム実行部４３では、初期配置状態取得部により得られた初期配置状態を初期解として逐次改善アルゴリズムが実行される。そして、目的関数作成部４２で作成された第３の目的関数を最適化しながら、当該密度一様化配置問題の最適解の候補となる配置解が求められる。
【００８３】
一般的に、目的関数作成部４２により作成される第３の目的関数は、各配置要素の配置位置の座標および各配置要素のサイズ（配置要素が長方形の場合には配置要素の高さと幅）の関数である。各配置要素のサイズは通常は固定されているので、第３の目的関数は各配置要素の配置位置の座標を変数とする関数となる。
ここで、上述した例に従って、第３の目的関数がＣｏｓｔ＋αＵで表されるとする（なお、Ｃｏｓｔは第１の目的関数、Ｕは第２の目的関数、αは第１の目的関数と第２の目的関数との線形結合係数である）。ここで、パラメータαの値を固定した場合には、第３の目的関数Ｃｏｓｔ＋αＵに含まれる変数は各配置要素の配置位置の座標のみとなるため、初期配置状態取得部４１により得られた複数の要素の初期配置状態を初期配置解として一般的な逐次改善アルゴリズムを行なうことにより、第３の目的関数Ｃｏｓｔ＋αＵを最適化する（すなわち、第３の目的関数Ｃｏｓｔ＋αＵを最小とする最適解を探索する）ことができる。
【００８４】
従って、逐次改善アルゴリズム実行部４３では、初期配置状態取得部４１により得られた複数の要素の初期配置状態を初期配置解として、一般的な逐次改善アルゴリズムを実行し、各配置要素の配置位置の座標を変数とする第３の目的関数Ｃｏｓｔ＋αＵを最適化する。
ところで、第１の目的関数に対する最適解を初期配置状態として用いている場合には、その初期配置状態は配置問題の配置条件（密度一様化配置問題の密度一様化条件以外の配置条件）に対する最適性をそなえているので、この最適性をあまり失うことなく、効率的に密度一様化条件を反映した配置解を探索する必要がある。
【００８５】
そこで、逐次改善アルゴリズム実行部４３は、図１６に示すように、逐次改善アルゴリズムの実行開始時に、第３の目的関数Ｃｏｓｔ＋αＵのパラメータαの初期値を正の小さな値に設定する。そして、逐次改善法の繰り返し回数が増加するにつれて、パラメータαを徐々に増加させる。
このように、各パラメータの値を変化させることで、配置問題の配置条件に対する初期配置状態の最適性を失うことなく、初期配置状態に対して徐々に密度一様化条件を反映させることにより、密度一様化問題の最適解を効率的に探索することが可能となる。特に、第２の目的関数の作成にパッキング法を用いる場合において、各配置要素の実際の配置位置と対応するスロットの配置位置との距離が大きい場合に、それをいきなり反映させるのではなく、徐々に反映させていくことによって、より効率的に密度一様化問題の配置解を探索することが可能となる。
【００８６】
なお、特別な場合には、第３の目的関数Ｃｏｓｔ＋αＵを、配置要素のｘ座標とｙ座標の関数の和に分解できる場合がある。
Ｃｏｓｔ＝Ｃｏｓｔx（ｘ1，ｘ2，…，ｘn）＋Ｃｏｓｔy（ｙ1，ｙ2，…，ｙn）  （５）
Ｕ＝Ｕx（ｘ1，ｘ2，…，ｘn）十Ｕy（ｙ1，ｙ2，…，ｙn）  （６）
このような場合には、ｘ方向とｙ方向それぞれに別のパラメータαx，αyを用意して、次のように第３の目的関数Ｃｏｓｔ＋αＵを分解する。
【００８７】
（Ｃｏｓｔx＋αxＵx）十（Ｃｏｓｔy十αyＵy）  （７）
そして、パラメータα，αx，αyを、逐次改善アルゴリズムの繰り返し毎に変化させる。逐次改善アルゴリズムの第ｉ番目のステップにおけるパラメータα，αx，αyの値は、次のように書くことができる。
α＝α（ｉ，β1，β2，…，βn）  （８）
αx＝αx（ｉ，βx1，βx2，…，βxn）  （９）
αy＝αy（ｉ，βy1，βy2，…，βyn）  （１０）
ここで、β1，β2，…，βn，βx1，βx2，…，βxn，βy1，βy2，…，βynは、逐次改善アルゴリズムの第ｉ番目のステップにおけるパラメータα，αx，αyの値を規定する新たなパラメータである。
【００８８】
これらのパラメータは、後述する遺伝的アルゴリズム実行部４４の動作の説明において使用される。
以上の手順に従って逐次改善アルゴリズムを実行した後、逐次改善アルゴリズム実行部４３は、実行した逐次改善アルゴリズムの内容が所定の基準を満たしているかどうか、また、得られた最適解候補としての配置解が所定の基準を満たしているかどうかを判断する。
【００８９】
具体的には、前者として、実行した逐次改善アルゴリズムの繰り返し数、パラメータαの変化量などが、また、後者として、得られた配置解を用いた第３の目的関数の演算値などが、それぞれ所定の基準と比較されることになる。
そして、いずれの基準をも満たしていると判断した場合には、逐次改善アルゴリズム実行部４３は、この最適解候補を密度一様化配置問題の最適解（正確には近似最適解）として獲得する。
【００９０】
一方、いずれかの基準を満たしていないと判断した場合には、再び、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行、または、目的関数作成部４２による第３の目的関数の作成へと移行して、新たな最適解候補の探索が行なわれることになる。こちらのフローについては、スケジュール管理部４５が取得した所定のスケジュールに従って制御されることになる。
（２−４）スケジュール管理部による動作（その１）
スケジュール管理部４５は、上述した目的関数作成部４２による第３の目的関数の作成前に、目的関数作成部４２による第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行についてのスケジュールを取得する。
【００９１】
そして、目的関数作成部４２による第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が繰り返し実施されるように、上記スケジュールに従って、目的関数作成部４２，逐次改善アルゴリズム実行部４３をそれぞれ制御する。
すなわち、ここでは図３におけるＳ５のＮＯ１ルートに移行するための各種条件を定めることになる。
【００９２】
具体的に、目的関数作成部４２が第２の目的関数の作成の際にパッキング手法を採用する場合を例に採ると、スケジュール管理部４５は、まず、目的関数作成部４２による第３の目的関数の作成を行なう前に、目的関数作成部４２によるパッキング手法の実行および第３の目的関数の作成と、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行との繰り返しに関するスケジュールを取得する。
【００９３】
なお、このスケジュールは、密度一様化配置問題に関するデータとともにデータの形で本装置に入力されてもよく、また、入力された密度一様化配置問題に関するデータに基づきスケジュール管理部４５において自動合成されるように構成しても良い。前者の構成とすれば、本発明の装置もしくはプログラムの構成の簡素化・低価格化に寄与するとともに、最適解探索に関する一連の手順の高速化も図ることができるのに対し、後者の構成とすれば、入力するべき密度一様化配置問題に関するデータが少なくて済み、密度一様化配置問題の最適解探索に関する一連の手順の自動化に寄与する。
【００９４】
また、スケジュールの内容としては、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行中に、どのタイミングで、および如何なる条件で、目的関数作成部４２によるパッキング手法の実行および第３の目的関数の作成のフローに移行するかの基準が規定される。具体的には、逐次改善アルゴリズムの繰り返し回数（ステップ数）がある一定数に達したら、その時点で目的関数作成部４２によるパッキング手法の実行および第３の目的関数の作成のフローに移行する、などの基準である。
【００９５】
そして、スケジュール管理部４５は、取得した上記スケジュールに従って、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの繰り返しの回数が定められた回数に達した時点で、目的関数作成部４２が定められたパッキング手法を用いて再びスロットのパッキングを実行し、新たな第２の目的関数、ひいては、新たな第３の目的関数を作成するように、目的関数作成部４２の制御を行なう。
【００９６】
続いて、スケジュール管理部４５は、この新たな第３の目的関数を用いて、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が再び行なわれるように、逐次改善アルゴリズム実行部４３の制御を行なう。
目的関数作成部４２による目的関数の作成、および、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が繰り返された後、逐次改善アルゴリズム実行部４３によって、実行した逐次改善アルゴリズムの繰り返し回数が所定の基準を満たしているかどうか、また、得られた最適解候補としての配置解が所定の基準を満たしているかどうかが判断される。
【００９７】
そして、逐次改善アルゴリズム実行部４３によっていずれかの基準が満たされていると判断された場合、または、目的関数の作成および逐次改善アルゴリズムの実行の繰り返し回数が、スケジュール管理部４５によって所定の基準を満たしていると判断された場合に、その時点で得られた最適解候補の配置解が近似最適解として決定されることになる。
【００９８】
スケジュール管理部４５により取得されるスケジュールにより規定される、目的関数作成部４２によるパッキング手法の実行のフローに移行するタイミングとしては、以下のようなものが挙げられる。
（ａ）初回のみパッキングを行なう手法
図１７（ａ）に示すように、複数の要素の初期配置状態に基づき、最初に一回だけスロットのパッキングを行なう。この場合、図３におけるＳ５のＮＯ１ルートに移行することはなく、スロットの座標（ひいては、第２目的関数）はこれ以後は変化しない。逐次改善アルゴリズムの実行により得られた最適解候補が最適解としての所定の基準を満たすまで、逐次改善アルゴリズムの繰り返しによる配置解の改善が行なわれることになる。
【００９９】
すなわち、目的関数作成ステップが、複数の要素の初期配置状態における複数の要素の配置位置に基づき、複数の要素の仮想的配置を行なう、という特徴を有することになる。
（ｂ）定期的にパッキングを行なう手法
図１７（ｂ）に示すように、スケジュールにより規定された時点において、逐次改善アルゴリズムの実施中に周期的にスロットのパッキングを行なう。この場合、スケジュールにおいて、基準となる逐次改善アルゴリズムの実行ステップ数（ステップ数）または実行時間を、予め規定しておく。そして、図３におけるＳ４において、逐次改善アルゴリズムの実行ステップ数（ステップ数）または実行時間を監視し、それがスケジュールに定められた基準を超えた場合に、Ｓ５のＮＯ１ルートに移行する。その後、やはりスケジュールに予め定められた内容に従って、その時点の配置解における要素の配置位置に基づき、目的関数作成部においてスロットの再パッキング，新たな第２の目的関数の作成および新たな第3の目的関数の作成が行なわれることになる。
【０１００】
こうした、目的関数作成部４２による新たな目的関数の作成および逐次改善アルゴリズム実行部４３における逐次改善アルゴリズムの実行が、それぞれ所定回数繰り返されると、やはりスケジュールに予め定められた規定の繰り返し回数を満たしたかどうかが判断され、規定の繰り返し回数を満たすか、または、得られた配置解が最適解としての所定の基準を満たした時点で、繰り返しが終了することになる。
【０１０１】
すなわち、目的関数作成ステップが、スケジュールにより定められた各時点において、その時点における複数の要素の配置位置に基づき、新たに複数の要素の仮想的配置を行なう、という特徴を有することになる。
（ｃ）ランダムにパッキングを行なう手法
図１７（ｃ）に示すように、逐次改善の実施中にランダムにスロットのパッキングを行なう。この場合、スケジュールにおいて、逐次改善アルゴリズムの任意の実行ステップ数（ステップ数）または任意の実行時間に一定の割合で、目的関数作成部へのフローの移行が行なわれるように、乱数発生プログラムを利用したトリガーを規定しておく。逐次改善アルゴリズム実行部において乱数の発生によりトリガーが出力されると、Ｓ５のＮＯ１ルートに移行し、やはりスケジュールに予め定められた内容に従って、その時点の配置解における要素の配置位置に基づき、目的関数作成部においてスロットの再パッキング，新たな第２の目的関数の作成および新たな第3の目的関数の作成が行なわれることになる。
【０１０２】
こうした、目的関数作成部４２による新たな目的関数の作成および逐次改善アルゴリズム実行部４３における逐次改善アルゴリズムの実行が、それぞれ所定回数繰り返されると、やはりスケジュールに予め定められた規定の繰り返し回数を満たしたかどうかが判断され、規定の繰り返し回数を満たすか、または、得られた配置解が最適解としての所定の基準を満たした時点で、繰り返しが終了することになる。
【０１０３】
すなわち、目的関数作成ステップが、無作為に選ばれた各時点において、その時点における複数の要素の配置位置に基づき、新たに複数の要素の仮想的配置を行なう、という特徴を有することになる。
なお、上述の（ｂ）定期的にパッキングを行なう手法、および、（ｃ）ランダムにパッキングを行なう手法では、パッキングは複数回行なわれることになるが、このパッキングの手法としては毎回同じ手法を用いてもよく、また、一回毎に異なる手法を用いてもよい。前者の構成とすれば、入力するべき密度一様化配置問題に関するデータが少なくて済み、密度一様化配置問題の最適解探索に関する一連の手順の自動化に寄与するのに対し、後者の構成とすれば、各パッキングの手法が呈するスロットの偏向性による影響を防ぎ、複数の要素の疎密解消の効率化につながる。
【０１０４】
また、上述した例以外にも、スケジュール管理部４５がスケジュールに従って、パッキング法以外の手法を用いて新たな第２の目的関数の作成を行なったり、パッキング法以外の手法を含む各種手法から選択した手法により新たな第２の目的関数の作成を行なったりするように、目的関数作成部４２を制御してもよい。
さらに、スケジュール管理部４５がスケジュールに従って、第１の目的関数と第２の目的関数との線形結合の係数を変化させながら、新たな第３の目的関数を作成するように、目的関数作成部４２を制御してもよい。
【０１０５】
以上説明した様に、目的関数作成ステップは、所定のスケジュールに従って、第１の目的関数と第２の目的関数との線形結合の係数，および，第２の目的関数の定義のうち、少なくとも一方を変化させながら、新たな上記第３の目的関数の作成を行なう、という特徴を有する。これによって、第3の目的関数に対する密度一様化条件の寄与の割合を調節するとともに、密度一様化条件を表す第２の目的関数の種類の違いに拠る偏向性を排することができ、密度一様化配置問題の最適解を効率よく探索することが可能となる。
（２−５）遺伝的アルゴリズム実行部による動作
遺伝的アルゴリズム実行部４４では、目的関数作成部４２による新たな第３の目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部４３における逐次改善アルゴリズムの実行に関する情報が遺伝子として表現され、この遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムが実行される。
【０１０６】
なお、先述したように、これらの動作は、実際には初期配置状態取得部４１による初期配置状態の取得の直後に行なわれることになる。
まず、染色体の作成方法について説明する。
遺伝的アルゴリズム実行部４４は、目的関数作成部４２による新たな第３の目的関数の作成に関する情報、および、逐次改善アルゴリズム実行部４３における逐次改善アルゴリズムの実行に関する情報を遺伝子として表現し、この遺伝子の配列からなる染色体を作成する。
【０１０７】
言い換えれば、遺伝的アルゴリズム実行部４４は、配置要素の密度一様化条件を解消するためにつけ加えた第２の目的関数Ｕ（Ｕx，Ｕy）に付随したパラメータに関する量、および、各ステップの実行を規定したスケジュールを表す量をそれぞれ遺伝子としてコードし、この遺伝子の一次ストリングとして染色体を作成する。
【０１０８】
具体的には、遺伝的アルゴリズム実行部４４によって、以下に示す種類の染色体が作成される。
・Ｃｈｒｏｍ−１
この染色体の遺伝子は、図１８（ａ）に示すように、パラメータαから構成されている。すなわち、第１の目的関数をＣｏｓｔ、第２の目的関数をＵ、第３の目的関数をＣｏｓｔ＋αＵとした場合に、パラメータαを遺伝子として表現したものである。
・Ｃｈｒｏｍ−２
この染色体の遺伝子は、図１８（ｂ）に示すように、パラメータαxとαyから構成されている。すなわち、第１の目的関数をＣｏｓｔ＝配置要素のｘ座標に関する関数Ｃｏｓｔx＋配置要素のｙ座標に関する関数Ｃｏｓｔy、第２の目的関数をＵ＝配置要素のｘ座標に関する関数Ｕx＋配置要素のｙ座標に関する関数Ｕy、第３の目的関数をＣｏｓｔ＋αＵ＝（Ｃｏｓｔｘ＋αxＵx）＋（Ｃｏｓｔy＋αyＵy）とした場合に、パラメータαxおよびαyを遺伝子として表現したものである。
・Ｃｈｒｏｍ−Ｍ
この染色体の遺伝子は、図１８（ｃ）に示すように、パラメータβ1，β2，…，βnから構成されている。すなわち、第１の目的関数をＣｏｓｔ、第２の目的関数をＵ、第３の目的関数をＣｏｓｔ＋αＵ、パラメータαを逐次改善アルゴリズムのステップ数とパラメータβ1，β2，…βnとの関数とした場合に、パラメータβ1，β2，…βnを遺伝子として表現したものである。
・Ｃｈｒｏｍ−２Ｍ
この染色体の遺伝子は、図１８（ｄ）に示すように、パラメータβx1，βx2，…，βxn，βy1，βy2，…，βynから構成されている。すなわち、第１の目的関数をＣｏｓｔ＝配置要素のｘ座標に関する関数Ｃｏｓｔx＋配置要素のｙ座標に関する関数Ｃｏｓｔy、第２の目的関数をＵ＝配置要素のｘ座標に関する関数Ｕx＋配置要素のｙ座標に関する関数Ｕy、第３の目的関数をＣｏｓｔ＋αＵ＝（Ｃｏｓｔx＋αxＵx）＋（Ｃｏｓｔy＋αyＵy）、パラメータαxおよびαyをそれぞれ逐次改善アルゴリズムのステップ数とパラメータβx1，βx2，…βxnおよびβy1，βy2，…βynとの関数とした場合に、パラメータβx1，βx2，…βxnおよびβy1，βy2，…βynを遺伝子として表現したものである。
【０１０９】
以上挙げた各種の染色体の作成は、換言すれば、遺伝的アルゴリズム実行ステップが、目的関数作成ステップにおいて作成される第３の目的関数に関するパラメータを遺伝子として表現して染色体の作成を行なう、という特徴に相当する。
・Ｃｈｒｏｍ−Ｓ
この染色体の遺伝子は、図１８（ｅ）に示すように、スケジューリング方式の場合のスロットのパッキングのスケジュールを決めるパラメータ（パッキングを行なう周期、パッキングの方法など）ｓ1，ｓ2，…ｓnから構成されている。すなわち、各ステップの実行を定める上記スケジュールに関するパラメータを、遺伝子として表現して染色体の作成を行なったものである。
・Ｃｈｒｏｍ−Ｉ
この染色体の遺伝子は、図１８（ｆ）に示すように、Ｃｈｒｏｍ−１，Ｃｈｒｏｍ−２，Ｃｈｒｏｍ−ＭまたはＣｈｒｏｍ−２Ｍのいずれかの染色体とＣｈｒｏｍ−Ｓの染色体とを連結して構成されている（図１８では、Ｃｈｒｏｍ−２とＣｈｒｏｍ−Ｓとを連結した例を示している）。すなわち、目的関数作成ステップにおいて作成される第３の目的関数に関するパラメータ、および、各ステップの実行を定めるスケジュールに関するパラメータを、それぞれ遺伝子として表現して染色体の作成を行なったものである。
【０１１０】
以上の各種染色体を作成することによって、目的関数（第３の目的関数）に関するパラメータや各ステップの実行に関するパラメータを、当該密度一様化配置問題の特徴に応じて高速かつ適切に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
また、密度一様化問題における配置要素の座標ではなく、第３の目的関数に現われるパラメータを遺伝子として染色体を構成することにより、染色体の長さが問題のサイズに依存する程度を減少させることができるので、比較的短い染色体を構成することが可能となり、遺伝的アルゴリズムによって効率的に解の探索を行なうことができる。
【０１１１】
次に、染色体に加える遺伝オペレーションについて説明する。
まず、染色体に作用する遺伝的オペレーションの一つである交叉としては、以下のような方法が考えられる。
・張り付け交叉
この交叉は、図１９に示すように、親の染色体ａ１，ｂ１の一部を互いに相手の染色体に張り付けて交叉を行ない、子供の染色体ａ１’，ｂ１’を得るものである。この交叉に拠れば、簡単な操作によって、親の個体が有する遺伝子を保存しつつ、その組み合わせに多様性を持たせることができる。
・パラメータの重みつき平均をもとにした交叉
この交叉は、図２０に示すように、親の染色体ａ２，ｂ２の遺伝子の値について、所定の割合で重み付け平均を算出し、求めた結果に基づいて子供の遺伝子の値を決定して、子供の染色体ａ１’，ｂ１’を得るものである。この交叉に拠れば、親の個体が有する遺伝子に基づき、単純な演算を行なうことによって、極めて多様性を持つ子供の個体を得ることができる。
【０１１２】
以上を換言すれば、遺伝的アルゴリズム実行ステップが、染色体に対する遺伝的オペレーションとして、張り付け交叉、または、遺伝子の値の重みつき平均を基にした交叉を行なう、という特徴を有することになる。
次に、染色体に作用する遺伝的オペレーションの一つである突然変異としては、以下のような方法が考えられる。
・パラメータをランダムに動かす突然変異
この突然変異は、図２１に示すように、染色体ａ３が有する遺伝子の値（パラメータ）を無作為に変動させることで、突然変異後の染色体ａ３’を得るものである。無作為な変動に拠る悪影響を避けるため、変動を加える値の範囲は予め定めておく。この突然変異に拠れば、簡単な操作によって、個体が有する遺伝子に適当な多様性を持たせることができる。
・パラメータを小さくする突然変異
この突然変異は、後述するように、遺伝的アルゴリズムの実行，新たな第３の目的関数の作成，逐次改善アルゴリズムの実行の動作が、スケジュールに従って繰り返される場合に有効である。
【０１１３】
図２２に示すように、前回の逐次改善アルゴリズムの実行により得られた新たな配置解において、複数の要素の移動距離が大きすぎ、却って密度一様化条件若しくは他の配置条件を満たさなくなった場合に、その要素の移動距離がより小さくなるように、染色体ａ４が有する遺伝子の値に変動を加え、突然変異後の染色体ａ４’を得るものである。この場合にも、過剰な変動に拠る悪影響を避けるため、変動を加える値の範囲は予め定めておく。この突然変異に拠れば、簡単な操作によって、逐次改善アルゴリズムによる配置解の過剰な移動を補正しつつ、個体が有する遺伝子に適当な多様性を持たせることができる。
・パラメータを大きくする突然変異
この突然変異も、遺伝的アルゴリズムの実行，新たな第３の目的関数の作成，逐次改善アルゴリズムの実行の動作が、スケジュールに従って繰り返される場合に有効である。
【０１１４】
図２３に示すように、前回の逐次改善アルゴリズムの実行により得られた新たな配置解において、複数の要素の移動距離が小さすぎ、密度一様化条件若しくは他の配置条件を充分満たすに至らない場合に、その要素の移動距離がより大きくなるように、染色体ａ４が有する遺伝子の値に変動を加え、突然変異後の染色体ａ４’を得るものである。この場合にも、過剰な変動に拠る悪影響を避けるため、変動を加える値の範囲は予め定めておく。この突然変異に拠れば、簡単な操作によって、逐次改善アルゴリズムによる配置解の改善不足を補いつつ、個体が有する遺伝子に適当な多様性を持たせることができる。
【０１１５】
以上換言すれば、遺伝的アルゴリズム実行ステップが、遺伝子の値を所定の範囲内で無作為に変動させることにより、または、前回の該逐次改善アルゴリズムの実行によって得られた上記複数の要素の配置解が一定の基準を満たさない場合に、上記複数の要素の配置解が改善されるような範囲で遺伝子の値を変動させることにより、染色体に対する遺伝的オペレーションとしての突然変異を行なう、という特徴を有することになる。これによって、遺伝的な多様性を効率的に確保することができる。
【０１１６】
続いて、各個体の適応度の評価について説明する。
適応度の評価は、後述するように、遺伝的アルゴリズムの実行，新たな第３の目的関数の作成，逐次改善アルゴリズムの実行の動作が、スケジュールに従って繰り返される場合に有効となる。
まず、遺伝的アルゴリズム実行部４４は、各個体が有する染色体の種類に応じて、逐次改善アルゴリズムの実行により得られた結果に基づき、各個体の適応度を評価する。そして、適応度の評価に基づいて個体を選択し、選択した個体に基づいて、その後の遺伝的アルゴリズムの実施を行なうのである。
【０１１７】
より具体的には、遺伝的アルゴリズム実行部４４は、該逐次改善アルゴリズムの実行により得られた第１の目的関数の演算値を、各個体の適応度として計算する。
これを上述した染色体の種類毎に示せば、以下の様になる。
・染色体がＣｈｒｏｍ−１の場合
この場合、個体の適応度は次の第３の目的関数
Ｃｏｓｔ＋αＵ  （１１）
に基づいて、次のように決められる。
【０１１８】
第３の目的関数Ｃｏｓｔ＋αＵに基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件（所定の判断基準）を満たすようになった時点、または、定められた繰り返し回数（ステップ数）の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第１の目的関数Ｃｏｓｔの演算値をＣｏｓｔeとすると、適応度の評価関数は次のように定義される。
（適応度）＝定数−Ｃｏｓｔe  （１２）
・染色体がＣｈｒｏｍ−２の場合
この場合、個体の適応度は次の第３の目的関数
（Ｃｏｓｔx＋ａxＵx）＋（Ｃｏｓｔy＋ａyＵy）  （１３）
に基づいて、次のように決められる。
【０１１９】
第３の目的関数（Ｃｏｓｔx＋ａxＵx）＋（Ｃｏｓｔy＋ａyＵy）に基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数（ステップ数）の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第１の目的関数Ｃｏｓｔx＋Ｃｏｓｔyの演算値をＣｏｓｔxe＋Ｃｏｓｔyeとすると、適応度の評価関数は次のように定義される。
（適応度）＝定数−（Ｃｏｓｔxe＋Ｃｏｓｔye）  （１４）
・染色体がＣｈｒｏｍ−Ｍの場合
この場合、個体の適応度は次の第３の目的関数
Ｃｏｓｔ＋α（ｉ，β1，β2，…，βn）Ｕ  （１５）
に基づいて、次のように決められる。
【０１２０】
第３の目的関数Ｃｏｓｔ＋α（ｉ，β1，β2，…，βn）Ｕに基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数（ステップ数）の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第１の目的関数Ｃｏｓｔの演算値をＣｏｓｔeとすると、適応度の評価関数は次のように定義される。
（適応度）＝定数−Ｃｏｓｔe  （１６）
・染色体の構成がＣｈｒｏｍ−２Ｍの場合
この場合、個体の適応度は次の第３の目的関数
（Ｃｏｓｔx＋αx（ｉ，βx1，βx2，…，βxn）Ｕx）＋（Ｃｏｓｔy＋αy（ｉ，βy1，βy2，…，βyn）Ｕy）  （１７）
に基づいて、次のように決められる。
【０１２１】
第３の目的関数（Ｃｏｓｔx＋αx（ｉ，βx1，βx2，…，βxn）Ｕx）＋（Ｃｏｓｔy＋αy（ｉ，βy1，βy2，…，βyn）Ｕy）に基づいて逐次改善アルゴリズムを実施し、改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数（ステップ数）の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
【０１２２】
この時点での配置解に基づく第１の目的関数Ｃｏｓｔx＋Ｃｏｓｔyの演算値をＣｏｓｔxe＋Ｃｏｓｔyeとすると、適応度の評価関数は次のように定義される。
（適応度）＝定数−（Ｃｏｓｔxe＋Ｃｏｓｔye）  （１８）
・染色体の構成がＣｈｒｏｍ−Ｓの場合
ある個体の染色体で指定された、スロットのパッキングに関するスケジュールに従って、第３の目的関数Ｃｏｓｔ＋αＵまたはＣｏｓｔx＋ａxＵx＋Ｃｏｓｔy＋ａyＵyに基づき逐次改善アルゴリズムを実施する。改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数（ステップ数）の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
【０１２３】
この時点での配置解に基づく第１の目的関数ＣｏｓｔまたはＣｏｓｔx＋Ｃｏｓｔyの値を、ＣｏｓｔeまたはＣｏｓｔxe＋Ｃｏｓｔyeとすると、適応度の評価関数は次のように定義されるる。
（適応度）＝定数−Ｃｏｓｔe  （１９）
または、
（適応度）＝定数−（Ｃｏｓｔxe＋Ｃｏｓｔye）  （２０）
・染色体の構成がＣｈｒｏｍ−Ｉの場合
この場合には、ある個体の染色体で指定された、スケジュールに関する遺伝子が表す値に基づいて、第３の目的関数が定められることになる。
【０１２４】
第３の目的関数Ｃｏｓｔ＋αＵまたはＣｏｓｔx＋ａxＵx＋Ｃｏｓｔy＋ａyＵyに基づいて、逐次改善アルゴリズムを実施する。改善された配置解が定められた収束条件を満たすようになった時点、または、定められた繰り返し回数（ステップ数）の逐次改善が終了した時点で、逐次改善アルゴリズムを停止する。
この時点での配置解に基づく第１の目的関数ＣｏｓｔまたはＣｏｓｔx＋Ｃｏｓｔyの値を、ＣｏｓｔeまたはＣｏｓｔxe＋Ｃｏｓｔyeとすると、適応度の評価関数は次のように定義されるる。
（適応度）＝定数−Ｃｏｓｔe  （２１）
または、
（適応度）＝定数−（Ｃｏｓｔxe＋Ｃｏｓｔye）  （２２）
上述した適応度の各評価関数に拠れば、染色体について算出された適応度の値が大きいほど、その染色体が有する遺伝子に基づき規定された第３の目的関数を用いて逐次改善アルゴリズムにより得られた配置解が、配置問題の配置条件（密度一様化配置問題の密度一様化条件を除く配置条件）をより好適な状態で満たしている、ということになる。牽いては、適応度の値の高い染色体が有する遺伝子を用いれば、より好ましい配置解を得られるような第３の目的関数を得ることができる。
【０１２５】
そこで、遺伝的アルゴリズム実行部４４は、上述した適応度の各評価関数に従って、適応度の高い染色体を有する個体を、一定の基準の下に選択する。そして、選択された個体を用いて、その後の遺伝的アルゴリズムを実行する。場合によってはこの時に、染色体の複製などを行なって、個体の数を調整してもよい。
以上換言すれば、遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なう、という特徴を有することになる。これによって、密度一様化条件以外の配置条件について十分な評価を行ないながら、適切な目的関数（第３の目的関数）を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
【０１２６】
以上説明した遺伝的アルゴリズムの基本的動作に加えて、以下に示すような個体集団の作成を行ない、この個体集団に基づいて遺伝的アルゴリズムを行なうことにより、集団の多様性を維持しながら効率良く最適解を探索することができる。以下ではこれを「島」モデルと呼ぶことにする。
この「島」モデルにおいて、遺伝的アルゴリズム実行部４４はまず、各個体の染色体の種類に基づいて、複数の個体集団として「島」を作成する。
【０１２７】
そして、作成された複数の「島」に属する個体を、基本的には互いに隔離しつつ、スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なうことになる。
具体例として、遺伝的アルゴリズム実行部４４は、図２４に示すように、以下の３種類の「島」を作成する。
・「島１」（図２４中の“Ｉｓｌａｎｄ １"）
この個体集団は、第３の目的関数に関するパラメータを遺伝子とする染色体を有する個体から構成される。含まれる個体の染色体は、Ｃｈｒｏｍ−１，Ｃｈｒｏｍ−２，Ｃｈｒｏｍ−ＭまたはＣｈｒｏｍ−２Ｍのいずれかである（図２４では、例としてＣｈｒｏｍ−２を含む場合を示す）。
・「島２」（図２４中の“Ｉｓｌａｎｄ ２"）
この個体集団は、各ステップの実行を定めるスケジュールに関するパラメータを遺伝子とする染色体を持つ個体から構成される。含まれる個体の染色体は、Ｃｈｒｏｍ−Ｓである。
・「島３」（図２４中の“Ｉｓｌａｎｄ ３"）
この個体集団は、第３の目的関数に関するパラメータを遺伝子とする染色体と、各ステップの実行を定めるスケジュールに関するパラメータを遺伝子とする染色体とを、それぞれ連結した染色体を持つ個体から構成される。含まれる個体の染色体は、Ｃｈｒｏｍ−Ｉである（図２４では、例としてＣｈｒｏｍ−２とＣｈｒｏｍ−Ｓとを連結して作成されたＣｈｒｏｍ−Ｉを含む場合を示す）。
【０１２８】
すなわち、目的関数作成ステップにより作成される第３の目的関数に関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第１の個体集団（島）と、各ステップの実行を定める上記スケジュールに関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第２の個体集団（島）と、上記第３の目的関数に関するパラメータを表す遺伝子および上記スケジュールに関するパラメータを表す遺伝子の双方を含む染色体を有する個体の集団である第３の個体集団（島）とが作成されることになる。これによって、各個体の染色体に含まれる遺伝子の種類を考慮しながら、効率的に各個体を分類して個体集団を設定することが可能となり、ひいては個体集団の管理の容易化を図ることが可能となる。
【０１２９】
これらの「島」の作成後、遺伝的アルゴリズム実行部４４は、各「島」の個体をそれぞれ互いに隔離しつつ、各「島」の内部の個体間で交配を行ないながら、遺伝的アルゴリズムを実行する。
所定の世代が経過した時点で、適当な方法で「島１」と「島２」からそれぞれ親となる個体を選び出し、これらの親の染色体を連結して子供の染色体を作成する。こうして作成された子供を、「島３」に移住させる。
【０１３０】
また、適当な方法で「島１」と「島３」からそれぞれ親となる個体を選び出し、これらの親の染色体を交叉させて子供の染色体を作成する。この時に、「島３」の個体の染色体については、第３の目的関数に関するパラメータの遺伝子が存在する部分において、「島１」の個体の染色体と交叉させるようにする。こうして得られた二つの子供の染色体のうち、一方の子供の染色体には、第３の目的関数に関するパラメータの遺伝子のみが存在し、他方の子供の染色体には、各ステップの実行を定めるスケジュールに関するパラメータの遺伝子が混在することになる。前者の子供の個体は「島１」へ、後者の子供の個体は「島３」へと、それぞれ移住させる。
【０１３１】
同様に、適当な方法で「島２」と「島３」からそれぞれ親となる個体を選び出し、これらの親の染色体を交叉させて子供の染色体を作成する。この時に、「島３」の個体の染色体については、各ステップの実行を定めるスケジュールに関するパラメータの遺伝子が存在する部分において、「島２」の個体の染色体と交叉させるようにする。こうして得られた二つの子供の染色体のうち、一方の子供の染色体には、各ステップの実行を定めるスケジュールに関するパラメータの遺伝子のみが存在し、他方の子供の染色体には、第３の目的関数に関するパラメータの遺伝子が混在することになる。前者の子供の個体は「島２」へ、後者の子供の個体は「島３」へと、それぞれ移住させる。
【０１３２】
すなわち、第１の個体集団（島）に属する個体と第２の個体集団（島）に属する個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第３の個体集団（島）に移住させるという特徴、並びに、上記第１または第２の個体集団（島）の個体と上記第３の個体集団（島）の個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第１または第２の個体集団（島）および上記第３の染色体集団（島）へ各々移住させるという特徴を有することになる。これによって、簡単な操作によって各個体集団（島）の個体を交流させて遺伝的多様性を生み出すことが可能となり、遺伝的アルゴリズムの効率化につながる。
【０１３３】
以上換言すれば、遺伝的アルゴリズム実行ステップが、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団（島）を作成し、作成された複数の個体集団（島）の個体を基本的には互いに隔離しつつ、スケジュールに従って各個体集団（島）の個体を交流させながら、遺伝的アルゴリズムの実行を行なう、という特徴を有することになる。これによって、染色体の多様性を保ちながら、適切な目的関数（第３の目的関数）を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する。
（２−６）スケジュール管理部による動作（その２）
スケジュール管理部４５は、先に述べたスケジュールに加えて、遺伝的アルゴリズム実行部４４による初回の遺伝的アルゴリズムの実行前に、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行，目的関数作成部４２による第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行という、一連の動作についてのスケジュールを取得する。
【０１３４】
そして、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行，目的関数作成部４２による第３の目的関数の作成，および，逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が繰り返し実施されるように、上記スケジュールに従って、目的関数作成部４２，逐次改善アルゴリズム実行部４３，遺伝的アルゴリズム実行部４４をそれぞれ制御する。
【０１３５】
すなわち、ここでは図３におけるＳ５のＮＯ２ルートに移行するための各種条件を定めることになる。
以下、スケジュール管理部４５の動作について、詳細に説明する。
スケジュール管理部４５は、まず、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行前に、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行と、目的関数作成部４２による第３の目的関数の作成と、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行との繰り返しに関するスケジュールを取得する。
【０１３６】
なお、このスケジュールも、密度一様化配置問題に関するデータとともにデータの形で本装置に入力されてもよく、また、入力された密度一様化配置問題に関するデータに基づきスケジュール管理部４５において自動合成されるように構成しても良い。両構成の利点については先に述べた通りである。
また、スケジュールの内容としては、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行中に、どのタイミングで、および如何なる条件で、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行のフローに移行するかの基準が規定される。具体的には、逐次改善アルゴリズムの繰り返しの回数がある一定数に達したら、その時点での配置解を用いて遺伝的アルゴリズムにおける各個体の適応度の評価を行ない、適切な個体を選択して遺伝的アルゴリズムの実行のフローに移行する、などの基準である。
【０１３７】
そして、スケジュール管理部４５は、取得した上記スケジュールに従って、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの繰り返し回数（ステップ数）が定められた回数に達した時点で逐次改善アルゴリズムを停止し、その時点での配置解、および、各個体の遺伝子が規定する第３の目的関数に基づき、上述した手順に従って、前回の遺伝的アルゴリズムにおいて得られた各個体の適応度を算出するように、遺伝的アルゴリズム実行部４４を制御する。
【０１３８】
次に、スケジュール管理部４５は、算出された各個体の適応度に基づいて、適切な個体を選択し、選択した個体を用いて再び遺伝的アルゴリズムを実行するように、遺伝的アルゴリズム実行部４４を制御する。
さらに、スケジュール管理部４５は、こうして行なわれた遺伝的アルゴリズムに続いて、目的関数作成部４２による目的関数の作成，および、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が再び行なわれるように、目的関数作成部４２および逐次改善アルゴリズム実行部４３の制御を行なう。
【０１３９】
このようにして、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行、目的関数作成部４２による目的関数の作成、および、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が繰り返された後、逐次改善アルゴリズム実行部４３によって、実行した逐次改善アルゴリズムの繰り返し回数が所定の基準を満たしているかどうか、また、得られた最適解候補としての配置解が所定の基準を満たしているかどうかが判断される。
【０１４０】
そして、逐次改善アルゴリズム実行部４３によって、いずれかの基準が満たされていると判断された場合、または、スケジュール管理部４５によって、遺伝的アルゴリズムの実行，目的関数の作成および逐次改善アルゴリズムの実行の繰り返し回数が、所定の基準を満たしていると判断された場合に、その時点で得られた最適解候補の配置解が近似最適解として決定されることになる。
（３）その他
なお、対象とする密度一様化配置問題の規模によっては、上述した実施形態よりも簡素な構成で、本発明の効果を得ることも可能である。
（３−１）本発明の一実施形態の第一変形例
まず、スケジュール管理部４５をそなえず、初期配置状態取得部４１，目的関数作成部４２，逐次改善アルゴリズム実行部４３および遺伝的アルゴリズム実行部４４のみで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
【０１４１】
この場合、初期配置状態取得部４１，目的関数作成部４２，逐次改善アルゴリズム実行部４３および遺伝的アルゴリズム実行部４４は、上述の実施形態において各々説明した構成と同様の構成を有する。
そして、各部位が、上述の実施形態において説明した各動作、すなわち、初期配置状態取得ステップ（Ｓ１），遺伝的アルゴリズム実行ステップ（Ｓ２），目的関数作成ステップ（Ｓ３），逐次改善アルゴリズム実行ステップ（Ｓ４）を、それぞれ一回ずつ実施し、最後の逐次改善アルゴリズムの実行によって所定の基準を満たす配置解が得られるまで、逐次改善アルゴリズムを繰り返すことになる。
【０１４２】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、より簡素な構成で、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
（３−２）本発明の一実施形態の第二変形例
また、対象とする密度一様化配置問題において、配置要素の数がそれほど多くなく、また配置条件がそれほど複雑でない場合には、遺伝的アルゴリズム実行部４４をそなえず、初期配置状態取得部４１，目的関数作成部４２，逐次改善アルゴリズム実行部４３およびスケジュール管理部４５のみで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
【０１４３】
この場合、初期配置状態取得部４１，目的関数作成部４２，逐次改善アルゴリズム実行部４３は、上述の実施形態において各々説明した構成と同様の構成を有する。また、スケジュール管理部４５は、遺伝的アルゴリズム実行部４４による遺伝的アルゴリズムの実行に関するスケジュールを取得する機能、および、遺伝的アルゴリズム実行部４４を制御する機能を有さずに構成される。
【０１４４】
そして、図２５に示すように、初期配置状態取得部４１による初期配置状態の取得（Ｓ１）が行なわれた後、目的関数作成部４２による目的関数の作成（Ｓ３）へ移行する。続いて、逐次改善アルゴリズム実行部４３による逐次改善アルゴリズムの実行が行なわれ（Ｓ４）、その結果として得られた配置解が所定の判断基準を満たすかどうかが判断される（Ｓ５’）。満たしていいと判断された場合には、再び目的関数作成部４２による目的関数の作成（Ｓ３）へ移行する一方（Ｓ５’のＮＯルート）、満たしていると判断された場合には、その配置解が密度一様化配置問題の近似最適解として取得されることになる（Ｓ５’のＹＥＳルート）。
【０１４５】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、より簡素な構成で、比較的に低次かつ簡略な単一の目的関数（第３の目的関数）のみを用いて初期解の逐次改善を行なうことによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【０１４６】
また、さらにスケジュール管理部４５をそなえず、初期配置状態取得部４１，目的関数作成部４２および逐次改善アルゴリズム実行部４３のみで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
この場合、初期配置状態取得部４１，目的関数作成部４２および逐次改善アルゴリズム実行部４３は、上述の実施形態において各々説明した構成と同様の構成を有する。
【０１４７】
そして、各部位が、上述の実施形態において説明した各動作、すなわち、初期配置状態取得ステップ（Ｓ１），目的関数作成ステップ（Ｓ３），逐次改善アルゴリズム実行ステップ（Ｓ４）をそれぞれ一回ずつ実施し、最後の逐次改善アルゴリズムの実行によって所定の基準を満たす配置解が得られるまで、逐次改善アルゴリズムを繰り返すことになる。
【０１４８】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、より簡素な構成で、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
（３−３）本発明の一実施形態の第三変形例
さらに、対象とする密度一様化配置問題において、配置要素の数が少なく、また、配置条件が単純である場合には、初期配置状態取得部４１，逐次改善アルゴリズム実行部４３，遺伝的アルゴリズム実行部４４およびスケジュール管理部４５をそなえず、目的関数作成部４２に加えて最適解探索部を組み合わせることで、本発明にかかる密度一様化配置問題の最適解探索装置を構成することも可能である。
【０１４９】
上述したように、一般に密度一様化配置問題は、配置要素の数が多く配置条件が複雑であることから、対応する目的関数（ここでは第３の目的関数）を直接解くことによって第３の目的関数を最適化する解を求めることは、困難または不可能である。しかし、配置要素の数が少なく配置条件が単純である特別な場合には、作成される第３の目的関数も比較的簡単なものになり、これを直接解いて最適解を用いることが可能となるので、本構成が有効となり得る。
【０１５０】
ここで、目的関数作成部４２は、上述の実施形態において説明した構成と同様の構成を有する。
最適解探索部４６は、目的関数作成部４２で作成された第３の目的関数を最適化しながら、密度一様化配置問題の最適解を探索するもので、具体的には、目的関数作成部４２で作成された第３の目的関数を最適化する配置解（すなわち狭義の最適解）を、演算によって直接求めるものである。
【０１５１】
以上の構成に基づき、図２６に示すようにまず、目的関数作成部４２が、目的関数作成ステップ（Ｓ３）を実施し、与えられた密度一様化問題に対する第３の目的関数を設定する。そして、最適解探索部４６が、得られた第３の目的関数を最適化する解（第３の目的関数の最適解）を演算によって直接導き出し、これを密度一様化問題に対する最適解として決定する（Ｓ６）。
【０１５２】
こうした構成によっても、本発明の基本的な効果を得ることが可能である。すなわち、極めて簡素な構成で、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
（３−４）その他
また、本発明は、上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
（４）付記
これまでに述べた技術思想に基づき、以下の概念が抽出可能である。
【０１５３】
（付記１）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する方法であって、
当該配置問題の配置条件を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成する目的関数作成ステップと、
該目的関数作成ステップで作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を探索する該最適解探索ステップとをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【０１５４】
（付記２）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する方法であって、
複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
当該配置問題の配置条件を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成する目的関数作成ステップと、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成ステップで作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行ステップとをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【０１５５】
（付記３）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、上記密度一様化配置問題に対する最適解を探索する方法であって、
複数の要素の初期配置状態を取得する初期配置状態取得ステップと、
当該配置問題の上記配置条件を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成する目的関数作成ステップと、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成ステップで作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行ステップと、
該目的関数作成ステップにおける上記第３の目的関数の作成に関する情報、および、該逐次改善アルゴリズム実行ステップにおける上記逐次改善アルゴリズムの実行に関する情報のうち少なくとも一方を遺伝子として表現し、当該遺伝子の配列からなる染色体を有する個体を用いて遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行ステップとをそなえ、
該目的関数作成ステップによる上記第３の目的関数の作成、および、該逐次改善アルゴリズム実行ステップによる上記逐次改善アルゴリズムの実行のうち少なくとも一方が、該遺伝的アルゴリズム実行ステップにより得られた個体の染色体に含まれる遺伝子により表される情報に基づいて行なわれる
ことを特徴とする、密度一様化配置問題の最適解探索方法。
【０１５６】
（付記４）  所定のスケジュールに従って、該目的関数作成ステップによる新たな上記第３の目的関数の作成，および，該逐次改善アルゴリズム実行ステップによる上記逐次改善アルゴリズムの実行を、繰り返し実施する
ことを特徴とする、付記２記載の密度一様化配置問題の最適解探索方法。
（付記５）  所定のスケジュールに従って、該遺伝的アルゴリズム実行ステップによる上記遺伝的アルゴリズムの実行，該目的関数作成ステップによる新たな上記第３の目的関数の作成，および，該逐次改善アルゴリズム実行ステップによる上記逐次改善アルゴリズムの実行を、繰り返し実施する
ことを特徴とする、付記３記載の密度一様化配置問題の最適解探索方法。
【０１５７】
（付記６）  該初期配置状態取得ステップが、上記第１の目的関数を最適化する解を求め、これを上記初期配置状態とする
ことを特徴とする、付記２〜５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
（付記７）  該目的関数作成ステップが、該複数の要素の密度に係わる関数を、上記第２の目的関数として作成する
ことを特徴とする、付記１〜５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
【０１５８】
（付記８）  該目的関数作成ステップが、該複数の要素の面積密度に係わる関数を、上記第２の目的関数として作成する
ことを特徴とする、付記１〜５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
（付記９）  該目的関数作成ステップが、該複数の要素のうち互いに重なり合っている要素の数に係わる関数を、上記第２の目的関数として作成する
ことを特徴とする、付記１〜５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
【０１５９】
（付記１０）  該目的関数作成ステップが、該複数の要素のうち互いに重なり合っている領域の面積に係わる関数を、上記第２の目的関数として作成する
ことを特徴とする、付記１〜５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
（付記１１）  該目的関数作成ステップが、該複数の要素の実際の配置位置を考慮して、該複数の要素を密度が一様となるように仮想的に配置し、得られた該複数の要素の仮想的な配置位置と実際の配置位置との関係を表す関数を、上記第２の目的関数として作成する
ことを特徴とする、付記４または付記５に記載の密度一様化配置問題の最適解探索方法。
【０１６０】
（付記１２）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の一頂点を基準として該複数の要素を並べて配置していくことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
（付記１３）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の一辺を基準として該複数の要素を並べて配置していく
ことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
【０１６１】
（付記１４）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の中心点を基準として該複数の要素を並べて配置していくことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
（付記１５）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域の全頂点を交互に基準として該複数の要素を並べて配置していく
ことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
【０１６２】
（付記１６）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内に存在する配置禁止領域を配置対象から除外しながら仮想的な配置を行なう
ことを特徴とする、付記１２〜１５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
【０１６３】
（付記１７）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内に存在する配置禁止領域に要素が配置された場合には、上記要素の現在の配置位置と新たな仮想的配置位置との距離が最短となる方向に上記要素を移動させることにより、上記要素を上記配置禁止領域の外部に再び仮想的に配置する
ことを特徴とする、付記１２〜１５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
【０１６４】
（付記１８）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内の境界付近に存在する配置禁止領域に要素が配置された場合には、上記所定領域の境界から離れた方向に上記要素を移動させることにより、上記要素を上記配置禁止領域の外部に再び仮想的に配置する
ことを特徴とする、付記１２〜１５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
【０１６５】
（付記１９）  該目的関数作成ステップが、該複数の要素を仮想的に配置する際に、上記所定領域内に存在する配置禁止領域に要素が配置された場合には、上記要素の移動距離が最短となる方向に移動させることにより、上記要素を上記配置禁止領域の外部に再び仮想的に配置する
ことを特徴とする、付記１２〜１５のいずれか１項に記載の密度一様化配置問題の最適解探索方法。
【０１６６】
（付記２０）  該目的関数作成ステップが、上記複数の要素の上記初期配置状態における配置位置に基づき、上記複数の要素の仮想的配置を行なう
ことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
（付記２１）  該目的関数作成ステップが、上記スケジュールにより定められた各時点において、上記複数の要素の当該時点における配置位置に基づき新たに上記複数の要素の仮想的配置を行なう
ことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
【０１６７】
（付記２２）  該目的関数作成ステップが、無作為に選ばれた各時点において、上記複数の要素の当該時点における配置位置に基づき新たに上記複数の要素の仮想的配置を行なう
ことを特徴とする、付記１１記載の密度一様化配置問題の最適解探索方法。
（付記２３）  該目的関数作成ステップが、上記スケジュールに従って、上記第１の目的関数と上記第２の目的関数との線形結合の係数，および，上記第２の目的関数の定義のうち、少なくとも一方を変化させながら新たな上記第３の目的関数の作成を行なう
ことを特徴とする、付記４または付記５に記載の密度一様化配置問題の最適解探索方法。
【０１６８】
（付記２４）  該遺伝的アルゴリズム実行ステップが、該目的関数作成ステップにおいて作成される第３の目的関数に関するパラメータを該遺伝子として表現して該染色体の作成を行なう
ことを特徴とする、付記３または付記５に記載の密度一様化配置問題の最適解探索方法。（請求項７）
（付記２５）  該遺伝的アルゴリズム実行ステップが、上記第１の目的関数をＣｏｓｔ、上記第２の目的関数をＵ、上記第３の目的関数をＣｏｓｔ＋αＵとした場合に、前記パラメータαを該遺伝子として表現する
ことを特徴とする、付記２４記載の密度一様化配置問題の最適解探索方法。
【０１６９】
（付記２６）  該遺伝的アルゴリズム実行ステップが、上記第１の目的関数をＣｏｓｔ＝配置要素のｘ座標に関する関数Ｃｏｓｔx＋配置要素のｙ座標に関する関数Ｃｏｓｔy、上記第２の目的関数をＵ＝配置要素のｘ座標に関する関数Ｕx＋配置要素のｙ座標に関する関数Ｕy、上記第３の目的関数をＣｏｓｔ＋αＵ＝（Ｃｏｓｔｘ＋αxＵx）＋（Ｃｏｓｔy＋αyＵy）とした場合に、前記パラメータαxおよびαyを該遺伝子として表現する
ことを特徴とする、付記２４記載の密度一様化配置問題の最適解探索方法。
【０１７０】
（付記２７）  該遺伝的アルゴリズム実行ステップが、上記第１の目的関数をＣｏｓｔ、上記第２の目的関数をＵ、上記第３の目的関数をＣｏｓｔ＋αＵ、前記パラメータαを上記逐次改善アルゴリズムのステップ数とパラメータβ1，β2，…βnとの関数とした場合に、前記パラメータβ1，β2，…βnを該遺伝子として表現する
ことを特徴とする、付記２４記載の密度一様化配置問題の最適解探索方法。
【０１７１】
（付記２８）  該遺伝的アルゴリズム実行ステップが、上記第１の目的関数をＣｏｓｔ＝配置要素のｘ座標に関する関数Ｃｏｓｔx＋配置要素のｙ座標に関する関数Ｃｏｓｔy、上記第２の目的関数をＵ＝配置要素のｘ座標に関する関数Ｕx＋配置要素のｙ座標に関する関数Ｕy、上記第３の目的関数をＣｏｓｔ＋αＵ＝（Ｃｏｓｔx＋αxＵx）＋（Ｃｏｓｔy＋αyＵy）、前記パラメータαxおよびαyをそれぞれ逐次改善アルゴリズムのステップ数とパラメータβx1，βx2，…βxnおよびβy1，βy2，…βynとの関数とした場合に、前記パラメータβx1，βx2，…βxnおよびβy1，βy2，…βynを該遺伝子として表現する
ことを特徴とする、付記２４記載の密度一様化配置問題の最適解探索方法。
【０１７２】
（付記２９）  該遺伝的アルゴリズム実行ステップが、各ステップの実行を定める上記スケジュールに関するパラメータを、該遺伝子として表現して該染色体の作成を行なう
ことを特徴とする、付記５記載の密度一様化配置問題の最適解探索方法。（請求項７）
（付記３０）  該遺伝的アルゴリズム実行ステップが、該目的関数作成ステップにおいて作成される上記第３の目的関数に関するパラメータ、および、各ステップの実行を定める上記スケジュールに関するパラメータを、それぞれ該遺伝子として表現して該染色体の作成を行なう
ことを特徴とする、付記５記載の密度一様化配置問題の最適解探索方法。
【０１７３】
（付記３１）  該遺伝的アルゴリズム実行ステップが、染色体に対する遺伝的オペレーションとして、張り付け交叉を行なう
ことを特徴とする、付記３または付記５に記載の密度一様化配置問題の最適解探索方法。
（付記３２）  該遺伝的アルゴリズム実行ステップが、染色体に対する遺伝的オペレーションとして、遺伝子の値の重みつき平均をもとにした交叉を行なうことを特徴とする、付記３または付記５に記載の密度一様化配置問題の最適解探索方法。
【０１７４】
（付記３３）  該遺伝的アルゴリズム実行ステップが、遺伝子の値を所定の範囲内で無作為に変動させることにより、染色体に対する遺伝的オペレーションとしての突然変異を行なう
ことを特徴とする、付記３または付記５に記載の密度一様化配置問題の最適解探索方法。
【０１７５】
（付記３４）  該遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズムの実行によって得られた上記複数の要素の配置解が一定の基準を満たさない場合に、上記複数の要素の配置解が改善されるような範囲で遺伝子の値を変動させることにより、染色体に対する遺伝的オペレーションとしての突然変異を行なう
ことを特徴とする、付記５に記載の密度一様化配置問題の最適解探索方法。
【０１７６】
（付記３５）  該遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズム実行ステップにおいて得られた結果に基づいて各個体の適応度を評価し、選択した個体について遺伝的アルゴリズムの実行を行なう
ことを特徴とする、付記５記載の密度一様化配置問題の最適解探索方法。
（付記３６）  該遺伝的アルゴリズム実行ステップが、前回の該逐次改善アルゴリズムの実行により得られた上記第１の目的関数の演算値を、各個体の当該適応度として計算する
ことを特徴とする、付記３５記載の密度一様化配置問題の最適解探索方法。
【０１７７】
（付記３７）  該遺伝的アルゴリズム実行ステップが、各個体の染色体に含まれる遺伝子の種類に基づいて複数の個体集団を作成し、作成された前記複数の個体集団の個体を基本的には互いに隔離しつつ、上記スケジュールに従って各個体集団の個体を交流させながら、遺伝的アルゴリズムの実行を行なう
ことを特徴とする、付記３または付記５に記載の密度一様化配置問題の最適解探索方法。
【０１７８】
（付記３８）  該遺伝的アルゴリズム実行ステップが、該目的関数作成ステップにおいて作成される第３の目的関数に関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第１の個体集団と、各ステップの実行を定める上記スケジュールに関するパラメータを表現した遺伝子を含む染色体を有する個体の集団である第２の個体集団と、上記第３の目的関数に関するパラメータを表す遺伝子および上記スケジュールに関するパラメータを表す遺伝子の双方を含む染色体を有する個体の集団である第３の個体集団とを作成する
ことを特徴とする、付記３７記載の密度一様化配置問題の最適解探索方法。
【０１７９】
（付記３９）  該遺伝的アルゴリズム実行ステップが、上記第１の個体集団に属する個体と第２の個体集団に属する個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第３の個体集団に移住させる
ことを特徴とする、付記３８記載の密度一様化配置問題の最適解探索方法。
（付記４０）  該遺伝的アルゴリズム実行ステップが、上記第１または第２の個体集団の個体と上記第３の個体集団の個体とを親として、親の染色体を交叉させて子供の染色体を作成し、得られた子供を上記第１または第２の個体集団および上記第３の染色体集団へ各々移住させる
ことを特徴とする、付記３８記載の密度一様化配置問題の最適解探索方法。
【０１８０】
（付記４１）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する装置であって、
当該配置問題の配置条件を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成する目的関数作成部と、
該目的関数作成ステップで作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を探索する該最適解探索部とをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索装置。
【０１８１】
（付記４２）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索する装置であって、
複数の要素の初期配置状態を取得する初期配置状態取得部と、
当該配置問題の配置条件を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成する目的関数作成部と、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成部で作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行部とをそなえた
ことを特徴とする、密度一様化配置問題の最適解探索装置。
【０１８２】
（付記４３）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、上記密度一様化配置問題に対する最適解を探索する装置であって、
複数の要素の初期配置状態を取得する初期配置状態取得部と、
当該配置問題の上記配置条件を表す第１の目的関数に上記密度一様化条件を表す第２の目的関数を線形結合した関数を、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成する目的関数作成部と、
上記初期配置状態を初期解として逐次改善アルゴリズムを実行することにより、該目的関数作成部で作成された上記第３の目的関数を最適化しながら、当該密度一様化配置問題の上記最適解を求める逐次改善アルゴリズム実行部と、
該目的関数作成部における上記第３の目的関数の作成に関する情報、および、該逐次改善アルゴリズム実行部における上記逐次改善アルゴリズムの実行に関する情報のうち少なくとも一方を遺伝子として表現し、当該遺伝子の配列からなる染色体を個体として用いながら遺伝的アルゴリズムを実行する遺伝的アルゴリズム実行部とをそなえ、
該目的関数作成部および該逐次改善アルゴリズム実行部のうち少なくとも一方が、前記遺伝的アルゴリズムの実行により得られた個体の染色体に含まれる遺伝子が表す情報に基づいて、上記第３の目的関数の作成および上記逐次改善アルゴリズムの実行を実施する
ことを特徴とする、密度一様化配置問題の最適解探索装置。
【０１８３】
（付記４４）  該目的関数作成部による上記第３の目的関数の作成および該逐次改善アルゴリズム実行部による上記逐次改善アルゴリズムの実行に関するスケジュールを取得するとともに、新たな上記第３の目的関数の作成および上記逐次改善アルゴリズムの実行が順次繰り返し実施されるように、上記スケジュールに従って、該目的関数作成部および該逐次改善アルゴリズム実行部を制御するスケジュール管理部をさらにそなえた
ことを特徴とする、付記４２記載の密度一様化配置問題の最適解探索装置。
【０１８４】
（付記４５）  該目的関数作成部による上記第３の目的関数の作成，該逐次改善アルゴリズム実行部による上記逐次改善アルゴリズムの実行および該遺伝的アルゴリズム実行部による上記遺伝的アルゴリズムの実行に関するスケジュールを取得するとともに、上記遺伝的アルゴリズムの実行，新たな上記第３の目的関数の作成および上記逐次改善アルゴリズムの実行が順次繰り返し実施されるように、上記スケジュールに従って、該目的関数作成部，該逐次改善アルゴリズム実行部および該遺伝的アルゴリズム実行部をそれぞれ制御するスケジュール管理部をさらにそなえた
ことを特徴とする、付記４３記載の密度一様化配置問題の最適解探索装置。
【０１８５】
（付記４６）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、
付記１〜４０のいずれか１項に記載の密度一様化配置問題の最適解探索方法における各ステップに対応する動作を実行する装置としてコンピュータを機能させる
ことを特徴とする、密度一様化配置問題の最適解探索プログラム。
【０１８６】
（付記４７）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムであって、
付記４１〜４５のいずれか１項に記載の密度一様化配置問題の最適解探索装置としてコンピュータを機能させる
ことを特徴とする、密度一様化配置問題の最適解探索プログラム。
【０１８７】
（付記４８）  複数の要素を所定の領域に一定の条件の下で配置する問題（以下、配置問題という）に対して、更に複数の要素の密度を一様にするとの条件を加えた問題（以下、密度一様化配置問題という）が与えられた場合に、当該密度一様化配置問題に対する最適解を探索するプログラムを記録した記録媒体であって、
付記４６または付記４７に記載の密度一様化配置問題の最適解探索プログラムをコンピュータが読み取り可能な方式で記録した
ことを特徴とする、密度一様化配置問題の最適解探索プログラムを記録した記録媒体。
【０１８８】
【実施例】
本発明を、ＬＳＩの設計における多数のセル（回路素子）の配置問題に適用する場合について考える。
ＬＳＩ設計においては、各セルの接続関係を元にして、セル間の総配線長をできるだけ短くするように、多数のセルを回路基板上に配置することが要求される。さらに、各セルは一定の大きさを有するため、これらのセルが重なることなく、一様の密度で回路基板上に配置するという要求も課せられる。各セルを配置要素と見なせば、これは本発明が対象とする密度一様化配置問題に相当する。
【０１８９】
こうした問題に従来技術を適用して、セル間の総配線長を目的関数に設定し、逐次改善アルゴリズムを用いて最適解（正確には近似最適解）を求めた上で、この配置解の疎密を逐次改善若しくは遺伝的アルゴリズムにより解消していくことは、可能ではあるものの、膨大な演算処理が必要となってしまい、極めて多くの時間を要してしまう。特に、実用的な規模の問題においては、セルの数は膨大でその接続関係も極めて複雑であり、これを従来技術で効率的に解くのは困難である。
【０１９０】
それに対して、こうした問題に本発明を適用することにより、比較的に低次かつ簡略な単一の目的関数（第３の目的関数）のみを使用することによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となるはずである。
こうした問題に本発明の方法を適用した実施例を以下に説明する。
【０１９１】
セル数１００００の実データに、本発明の実施形態の第２変形例の構成（すなわち、初期配置状態の取得、目的関数の作成、逐次改善アルゴリズムの実行およびこれらのスケジュールによる管理）に基づく方法を適用した。
セル（配置要素）の初期配置状態としては、セルを配置領域にランダムに配置したものを用いた。第１の目的関数としては、接続関係にある２つのセルの組の各々について、セル間のユークリッド距離を算出して二乗し、これを接続関係にある全てのセルの組について足し合わせたものを用いた。第２の目的関数としては、セルの仮想的配置を利用する手法（すなわち、パッキング法）を用いて作成した関数を用いた。逐次改善アルゴリズムの手法としては、非線形計画法の一つである共役勾配法を用いた。さらに、第１の目的関数と第２の目的関数との線形結合係数αについては、初期値α0を０．１とし、これを逐次改善アルゴリズムの繰り返し回数（ステップ数）５回毎に０．０５ずつ増大させた。
【０１９２】
セルの初期配置状態を図２７に、逐次改善アルゴリズムを７９０ステップにわたって実施して得られた配置状態（配置解）を図２８に示す。初期配置状態においては著しかったセルの疎密が、本発明の方法の適用によって大きく解消され、セルの配置状態が一様となっているのが、目測によっても確認できる。
セルの疎密を評価する指標として、各配置状態におけるセル間の重なりの面積の総和を求めた。セルの配置の際の長さの単位１ｇｒｉｄ＝２，５００ｎｍを用いて、ｇｒｉｄの二乗を面積の単位として評価した。
【０１９３】
初期配置状態におけるセル間の重なりの面積の総和は４６４×１０6ｇｒｉｄ2、本発明の方法の適用後（逐次改善アルゴリズム７９０ステップの実行後）におけるセル間の重なりの面積の総和は１×１０6ｇｒｉｄ2であった。本発明の方法を適用したことにより、セルの疎密は４６４分の１に減少したことになる。
【０１９４】
【発明の効果】
以上詳述したように、本発明の密度一様化配置問題の最適解探索方法の第１の態様（請求項１）によれば、対象となる密度一様化配置問題について、密度一様化条件以外の配置条件（密度一様化配置問題の基になる配置問題の配置条件）を表す第１の目的関数に密度一様化条件を表す第２の目的関数を線形結合した関数が、当該密度一様化配置問題の配置条件を表す第３の目的関数として作成され、この第３の目的関数を最適化しながら当該密度一様化配置問題の最適解が探索される。すなわち、比較的に低次かつ簡略な単一の目的関数（第３の目的関数）のみを使用することによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【０１９５】
また、本発明の密度一様化配置問題の最適解探索方法の第２の態様（請求項２）によれば、複数の要素の初期配置状態を初期解として逐次改善アルゴリズムが実行され、上述した第３の目的関数を最適化しながら当該密度一様化配置問題の最適解が探索される。すなわち、配置要素の数が多く配置条件が複雑な場合でも、比較的に低次かつ簡略な単一の目的関数（第３の目的関数）のみを用いて初期解の逐次改善を行なうことによって、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【０１９６】
さらに、本発明の密度一様化配置問題の最適解探索方法の第３の態様（請求項３）によれば、上述した目的関数作成ステップにおける第３目的関数の作成に関する情報や、上述した逐次改善アルゴリズム実行ステップにおける逐次改善アルゴリズムの実行に関する情報がそれぞれ遺伝子として表現され、これらの遺伝子の配列からなる染色体を用いて遺伝的アルゴリズムが実行された上で、その結果得られた染色体が有する遺伝子が表す情報を用いて上述の目的関数の作成および逐次改善アルゴリズムの実行が行なわれる。すなわち、配置要素の数がさらに多く配置条件がより複雑な場合でも、目的関数（第３の目的関数）の作成および逐次改善アルゴリズムの実行に必要な情報を、当該密度一様化配置問題の特徴に応じて高速かつ適切に設定することができるので、配置要素の疎密解消の手順を特に必要とすることなく、密度一様化配置問題の最適解を高速かつ効率的に探索することが可能となる。
【０１９７】
また、第２の態様および第３の態様においては、所定のスケジュールに従って、上述の遺伝的アルゴリズム実行ステップ（第３の態様のみ），目的関数作成ステップ，逐次改善アルゴリズム実行ステップが繰り返し実行される。これによって、逐次改善の過程に応じて適切な目的関数（第３の目的関数）を随時設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する（請求項４）。
【０１９８】
さらに、第２の態様および第３の態様においては、密度一様化問題の密度一様化条件を除く配置条件に対応する目的関数（第１の目的関数）を最適化する解が求められ、これが密度一様化問題に対する初期配置状態として用いられる。これによって、密度一様化条件を除く配置条件を反映した適切な配置状態を高速に求め、これを初期配置状態として密度一様化問題の最適解探索を行なうことが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する（請求項５）。
【０１９９】
また、第２の態様および第３の態様においては、複数の要素が実際の配置位置を考慮して密度が一様となるように仮想的に配置され、複数の要素の仮想的な配置位置と実際の配置位置との関係を表す関数が第２の目的関数として作成され、これが第３の目的関数の作成に使用される。これによって、密度一様化条件を的確に反映した簡潔な関数（第２の目的関数）を使用して目的関数（第３の目的関数）を設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する（請求項６）。
【０２００】
さらに、第３の態様においては、第３の目的関数の作成に関するパラメータや各ステップの実行スケジュールに関するパラメータが、それぞれ遺伝子として表現されて染色体の作成が行われ、遺伝的アルゴリズムが実行される。これによって、目的関数（第３の目的関数）に関するパラメータや各ステップの実行に関するパラメータを、当該密度一様化配置問題の特徴に応じて高速かつ適切に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する（請求項７）。
【０２０１】
また、遺伝的アルゴリズムが実行される際に、前回の逐次改善アルゴリズムの実行により得られた結果に基づいて各個体の適応度が評価され、この評価に基づいて選択された染色体について遺伝的アルゴリズムの実行が行なわれる。これによって、密度一様化条件以外の配置条件について十分な評価を行ないながら、適切な目的関数（第３の目的関数）を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する（請求項８）。
【０２０２】
さらに、各染色体の有する遺伝子の種類に基づいて複数の染色体集団が作成され、これらの染色体集団が互いに隔離されながら遺伝的アルゴリズムが実行される。これによって、染色体の多様性を保ちながら、適切な目的関数（第３の目的関数）を効率的に設定することが可能となり、ひいては最適解の探索の高速化および効率化にも寄与する（請求項９）。
【０２０３】
なお、上述の方法の各ステップに対応する動作を実行する手段としてコンピュータを機能させるプログラムが提供される。これによって、上述の各方法を多種多様な環境で実行することができ、本発明を様々な局面における密度一様化配置問題に応用することが可能となる（請求項１０）。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の構成を示すブロック図である。
【図２】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の要部の構成を示す機能ブロック図である。
【図３】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の概略的な動作（本発明の一実施形態にかかる密度一様化配置問題の最適解探索方法）を示すフローチャートである。
【図４】（ａ），（ｂ）はいずれも本発明において用いられるレンガ積み方式のパッキング手法を説明するための図である。
【図５】（ａ），（ｂ）はいずれも本発明において用いられるテトリス方式のパッキング手法を説明するための図である。
【図６】（ａ），（ｂ）はいずれも本発明において用いられる凝縮方式のパッキング手法を説明するための図である。
【図７】（ａ），（ｂ）はいずれも本発明において用いられる拡散方式のパッキング手法を説明するための図である。
【図８】（ａ），（ｂ）はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図９】（ａ），（ｂ）はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図１０】（ａ），（ｂ）はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図１１】（ａ），（ｂ）はいずれも本発明において用いられる配置禁止領域の回避手法の一例を説明するための図である。
【図１２】（ａ），（ｂ）はいずれも本発明において用いられる配置要素数密度関数を求める手法を説明するための図である。
【図１３】本発明において用いられる配置要素面積密度関数を求める手法を説明するための図である。
【図１４】本発明において用いられる配置要素重複数関数を求める手法を説明するための図である。
【図１５】本発明において用いられる配置要素重複面積関数を求める手法を説明するための図である。
【図１６】本発明において行なわれる逐次改善アルゴリズムの繰り返し回数とパラメータαとの関係を説明するための図である。
【図１７】（ａ），（ｂ）  ，（ｃ）はいずれも本発明において行なわれる逐次改善アルゴリズムの繰り返し回数とスロットのパッキングの実行との関係を説明するための図である。
【図１８】（ａ），（ｂ），（ｃ），（ｄ），（ｅ），（ｆ）はいずれも本発明の遺伝的アルゴリズムにおいて作成される染色体の構成を説明するための図である。
【図１９】本発明の遺伝的アルゴリズムにおいて行なわれる、張り付け交叉を説明するための図である。
【図２０】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータの重み付け平均をもとにした交叉を説明するための図である。
【図２１】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータをランダムに動かす突然変異を説明するための図である。
【図２２】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータを小さくする突然変異を説明するための図である。
【図２３】本発明の遺伝的アルゴリズムにおいて行なわれる、パラメータを大きくする突然変異を説明するための図である。
【図２４】本発明の遺伝的アルゴリズムにおいて用いられる「島」モデルを説明するための図である。
【図２５】本発明の一実施形態の変形例にかかる密度一様化配置問題の最適解探索装置の概略的な動作（本発明の一実施形態の変形例にかかる密度一様化配置問題の最適解探索方法）を示すフローチャートである。
【図２６】本発明の一実施形態にかかる密度一様化配置問題の最適解探索装置の概略的な動作（本発明の一実施形態にかかる密度一様化配置問題の最適解探索方法）を示すフローチャートである。
【図２７】本発明の実施例における、セルの初期配置状態を説明するための図である。
【図２８】本発明の実施例における、本発明の方法の適用後のセルの配置状態を説明するための図である。
【符号の説明】
１  密度一様化配置問題の最適解探索装置
３  作業用メモリ（ＲＡＭ）
４  ＣＰＵ
５  表示制御部
５Ａ  表示部
６  外部記憶媒体読出書込部
６Ａ  外部記憶媒体
７Ａ  印字部
７Ｂ  入力部表示部
７Ｃ  印字制御部
７Ｄ  入力制御部
８  ディスク装置
９  通信インターフェース部
９Ａ  外部ネットワーク
４１  初期配置状態取得部
４２  目的関数作成部
４３  逐次改善アルゴリズム実行部
４４  遺伝的アルゴリズム実行部
４５  スケジュール管理部
【図１】
0004723740.tif 000002
【図２】
0004723740.tif 000003
【図３】
0004723740.tif 000004
【図４】
0004723740.tif 000005
【図５】
0004723740.tif 000006
【図６】
0004723740.tif 000007
【図７】
0004723740.tif 000008
【図８】
0004723740.tif 000009
【図９】
0004723740.tif 000010
【図１０】
0004723740.tif 000011
【図１１】
0004723740.tif 000012
【図１２】
0004723740.tif 000013
【図１３】
0004723740.tif 000014
【図１４】
0004723740.tif 000015
【図１５】
0004723740.tif 000016
【図１６】
0004723740.tif 000017
【図１７】
0004723740.tif 000018
【図１８】
0004723740.tif 000019
【図１９】
0004723740.tif 000020
【図２０】
0004723740.tif 000021
【図２１】
0004723740.tif 000022
【図２２】
0004723740.tif 000023
【図２３】
0004723740.tif 000024
【図２４】
0004723740.tif 000025
【図２５】
0004723740.tif 000026
【図２６】
0004723740.tif 000027
【図２７】
0004723740.tif 000028
【図２８】
0004723740.tif 000029