図1はコンピュータ装置1の構成の一例を示すブロック図である。コンピュータ装置1は、配置空間での複数の被配置物の配置を自動的に決定する自動配置設計を行う自動配置設計システムとして機能する。言い換えれば、コンピュータ装置1は、自動配置設計を行う自動配置設計装置として機能する。また、コンピュータ装置1は、自動配置設計システムで使用されるパラメータを機械学習する学習処理を行う学習装置としても機能する。以後、自動配置設計を単に配置設計と呼ぶことがある。配置設計と、その前処理である学習処理とを合わせて、自動設計処理と呼ぶことがある。以下の説明では、配置空間に被配置物を配置するという処理は、コンピュータ上での仮想的な処理である。また、配置空間において被配置物を移動させるという処理も、コンピュータ上での仮想的な処理である。
図1に示されるように、コンピュータ装置1は、例えば、制御部2、記憶部3、通信部4、表示部5及び入力部6を備える。制御部2、記憶部3、通信部4、表示部5及び入力部6は、例えば、バス7で互いに電気的に接続されている。
制御部2は、コンピュータ装置1の他の構成要素を制御することによって、コンピュータ装置1の動作を統括的に管理することが可能である。制御部2は制御装置あるいは制御回路とも言える。制御部2は、以下にさらに詳細に述べられるように、種々の機能を実行するための制御及び処理能力を提供するために、少なくとも1つのプロセッサを含む。
種々の実施形態によれば、少なくとも1つのプロセッサは、単一の集積回路(IC)として、または複数の通信可能に接続された集積回路(IC)及び/またはディスクリート回路(discrete circuits)として実行されてもよい。少なくとも1つのプロセッサは、種々の既知の技術に従って実行されることが可能である。
1つの実施形態において、プロセッサは、例えば、関連するメモリに記憶された指示を実行することによって1以上のデータ計算手続又は処理を実行するように構成された1以上の回路又はユニットを含む。他の実施形態において、プロセッサは、1以上のデータ計算手続き又は処理を実行するように構成されたファームウェア(例えば、ディスクリートロジックコンポーネント)であってもよい。
種々の実施形態によれば、プロセッサは、1以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、デジタル信号処理装置、プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイ、またはこれらのデバイス若しくは構成の任意の組み合わせ、または他の既知のデバイス及び構成の組み合わせを含み、以下に説明される機能を実行してもよい。本例では、制御部2は、例えばCPU(Central Processing Unit)を備えている。
記憶部3は、ROM(Read Only Memory)及びRAM(Random Access Memory)などの、制御部2のCPUが読み取り可能な非一時的な記録媒体を含む。記憶部3には、コンピュータ装置1を自動配置設計装置として機能させるための配置設計プログラム3aが記憶されている。また、記憶部3には、コンピュータ装置1を学習装置として機能させるための学習プログラム3bが記憶されている。制御部2のCPUが記憶部3内の配置設計プログラム3aを実行することによって、コンピュータ装置1は自動配置設計装置(言い換えれば、自動配置設計システム)として機能する。また、制御部2のCPUが記憶部3内の学習プログラム3bを実行することによって、コンピュータ装置1が学習装置として機能する。
通信部4は、有線あるいは無線で、インターネット等を含む通信ネットワークに接続されている。通信部4は、通信ネットワークを通じて、クラウドサーバ及びウェブサーバ等の他の装置と通信することが可能である。通信部4は、通信ネットワークから受け取った情報を制御部2に入力することが可能である。また通信部4は、制御部2から受け取った情報を通信ネットワークに出力することが可能である。
表示部5は、例えば、液晶表示ディスプレイあるいは有機ELディスプレイである。表示部5は、制御部2によって制御されることによって、文字、記号、図形などの各種情報を表示することが可能である。
入力部6は、コンピュータ装置1に対するユーザからの入力を受け付けることが可能である。入力部6は、例えば、キーボード及びマウスを備える。入力部6は、表示部5の表示面に対するユーザの操作を検出することが可能なタッチパネルを備えてもよい。
なお、コンピュータ装置1の構成は上記の例に限られない。例えば、制御部2は、複数のCPUを備えてもよい。また制御部2は、少なくとも一つのDSP(Digital Signal Processor)を備えてもよい。また、制御部2の全ての機能あるいは制御部2の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また記憶部3は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えていてもよい。記憶部3は、例えば、小型のハードディスクドライブ及びSSD(Solid State Drive)などを備えてもよい。また記憶部3は、コンピュータ装置1に対して着脱可能な、USB(Universal Serial Bus)メモリ等のメモリを備えてもよい。
<自動設計処理について>
次に自動設計処理について詳細に説明する。以下では、電子機器の部品に関する自動設計処理について説明するが、被配置物は電子機器の部品以外であってもよい。以後、被配置物を被配置部品と呼ぶことがある。
コンピュータ装置1は、自動配置設計システム(言い換えれば、自動配置設計装置)で使用されるパラメータを機器学習する学習処理を行う。コンピュータ装置1は、学習処理において例えば強化学習を使用する。コンピュータ装置1は、学習されたパラメータに基づいて配置設計を行うことができる。学習処理で使用される強化学習としては、例えば深層強化学習が採用される。なお、学習処理で使用される強化学習は深層強化学習以外であってもよい。またコンピュータ装置1は、パラメータを強化学習以外の方法で学習してもよい。以後、単に、強化学習あるいは深層強化学習と言えば、コンピュータ装置1での自動配置設計システムのパラメータの学習を意味する。
図2はコンピュータ装置1の自動設計処理に関する構成の一例を示す図である。図2に示されるように、コンピュータ装置1は、自動設計処理で使用されるニューラルネットワーク10を備える。ニューラルネットワーク10は、例えば、畳み込みニューラルネットワーク(CNN(Convolutional Neural Network))である。強化学習では、ニューラルネットワーク10のパラメータが学習される。ニューラルネットワーク10のパラメータには、人工ニューロン間の結合の重みを示す重み付け係数が含まれる。以後、ニューラルネットワーク10のパラメータをNNパラメータと呼ぶことがある。また、学習済みのNNパラメータを学習済みNNパラメータと呼ぶことがある。ニューラルネットワーク10が、入力されるデータに対して学習済みNNパラメータに基づく演算を行うことによって、コンピュータ装置1では配置設計が可能となる。
図2に示されるように、ニューラルネットワーク10は、例えば、入力層11と、隠れ層13と、出力層12とを備える。隠れ層13は中間層とも呼ばれる。隠れ層13は、例えば、複数の畳み込み層130と、複数のプーリング層131と、全結合層132とを備える。ニューラルネットワーク10では、出力層12の前段に全結合層132が存在する。そして、ニューラルネットワーク10では、入力層11と全結合層132との間において、畳み込み層130とプーリング層131とが交互に配置されている。なお、ニューラルネットワーク10の構成は図2の例には限られない。例えば、ニューラルネットワーク10は、入力層11と全結合層132との間に、1つの畳み込み層130と1つのプーリング層131とを備えてもよい。
学習処理では、例えば、価値反復法を用いた強化学習が使用される。学習処理では、例えば、価値反復法の一種であるQ学習を用いた強化学習が使用される。Q学習を用いた深層強化学習は、DQN(Deep Q-Network)と呼ばれる。
自動設計処理では、観測空間に、被配置物を配置する対象の配置空間が規定される。そして、配置空間に複数の被配置物が配置される。強化学習では、配置空間での複数の被配置物の状態が観測される。また、強化学習では、被配置物の移動が行動として採用される。強化学習のエージェントとして機能する制御部2は、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、配置空間において複数の被配置物を仮想的に移動させることによって、配置空間での複数の被配置物の配置を自動的に決定する。配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係は、NNパラメータによって決定される。強化学習では、NNパラメータが学習されることによって、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係が学習される。NNパラメータには、例えば、隠れ層13で使用されるパラメータが含まれる。具体的には、NNパラメータには、畳み込み層130で使用されるフィルタ係数と、全結合層132で使用される重み付け係数とが含まれる。本例では、制御部2は、配置空間において、複数の被配置物のそれぞれが他の物体と干渉しないように、当該複数の被配置物の配置を決定する。
ニューラルネットワーク10の入力層11には、配置空間での複数の被配置物の状態を表す状態データが入力される。ニューラルネットワーク10の出力層12からは、各行動に応じた行動価値関数の値、つまり行動価値が出力される。ある状態を表す状態データが入力層11に入力されたときに出力層12から出力される行動価値は、当該ある状態において当該行動価値に対応する行動が採用される確率を示す。以後、入力層11に入力される状態データを入力状態データと呼ぶことがある。また、出力層12から出力される行動価値をQ値と呼ぶことがある。
本例の自動設計処理においては、図3に示される、XYZ直交座標系に定められた直方体の観測空間20が使用される。そして、観測空間20内に固定の配置空間30が規定される。被配置物はXYZ直交座標系において仮想的に移動される。本例では、配置空間30は三次元空間である。
配置空間30は、例えば、電子機器の外装を構成するケースによって規定される。電子機器のケースは、配置空間30を規定する空間規定物体であると言える。本例では、強化学習の行動としては、「+X方向の移動」と、「−X方向の移動」と、「+Y方向の移動」と、「−Y方向の移動」と、「+Z方向の移動」と、「−Z方向の移動」と、「移動させない」の7種類が定められる。ニューラルネットワーク10の出力層12からは、「+X方向の移動」、「−X方向の移動」、「+Y方向の移動」、「−Y方向の移動」、「+Z方向の移動」、「−Z方向の移動」及び「移動させない」にそれぞれ対応する7つのQ値が出力される。出力層12は7つの出力素子を有し、当該7つの出力素子から7つのQ値がそれぞれ出力される。
配置設計において、エージェントして機能する制御部2は、出力層12から出力される7つのQ値に基づいて、被配置物に行うべき移動を決定する。配置設計において、制御部2は、出力層12から出力される7つのQ値のうち最大のQ値に対応する行動を被配置物に行う。なお、強化学習の行動に「移動させない」が含まれなくてもよい。
<入力状態データについて>
入力状態データは、配置空間30を表す配置空間データと、被配置部品を表す部品データとに基づいて生成される。入力状態データは、例えば、CADデータに基づいて生成される。CADは“computer-aided design”の略語である。記憶部3には、電子機器の各部品についてのCADデータが記憶されている。制御部2は、記憶部3内のCADデータに基づいて、配置空間データ及び部品データを生成し、生成した配置空間データ及び部品データに基づいて入力状態データを生成する。なお、記憶部3内に配置空間データ及び部品データが予め記憶されていてもよい。
本例では、制御部2は、観測空間20を複数の分割要素21に分割する。これにより、観測空間20に定められる配置空間30と、観測空間20内の被配置部品のそれぞれは、複数の分割要素21に分割される。図4は被配置部品60が複数の分割要素21に分割される様子の一例を示す図である。分割要素21の形状は、例えば立方体である。分割要素21の形状は他の形状であってもよい。
制御部2は、CADデータから被配置部品60の形状を特定し、特定した形状に基づいて被配置部品60を複数の分割要素21に分割する。そして制御部2は、被配置部品60を構成する複数の分割要素21に対して複数のデータをそれぞれ割り当てる。制御部2は、被配置部品60を構成する複数の分割要素21に対してそれぞれ割り当てた複数のデータから成る配列データを、当該被配置部品60を表す部品データとする。部品データは三次元配列データとなっている。部品データは、被配置部品60の形状を表す形状データであるとも言える。
また制御部2は、CADデータに基づいて電子機器のケース(言い換えれば外装ケース)の形状を特定し、特定して形状に基づいて配置空間30を観測空間20に定める。そして、制御部2は、配置空間30を複数の分割要素21に分割し、当該複数の分割要素21に対して複数のデータをそれぞれ割り当てる。制御部2は、配置空間30を構成する複数の分割要素21に対してそれぞれ割り当てた複数のデータから成る配列データを、配置空間30を表す配置空間データとする。配置空間データは、部品データと同様に三次元配列データとなっている。配置空間データは、配置空間の形状を表す形状データであるとも言える。
ここで、電子機器は、ケースと、当該ケースと同じ材料で構成された、部品を保持する保持構造とを備えることがある。そして、電子機器では、保持構造がケースと一体成形されることがある。例えば、ケースが樹脂で構成される場合、樹脂で構成された保持構造がケースと一体成形されることがある。例えば、スマートフォン等の携帯電話機については、カメラを保持する保持構造、モータを保持する保持構造、スピーカを保持する保持構造及びストラップを保持する保持構造がケースと一体成形されることがある。製造された電子機器では、保持構造はケースの一部であると見ることもできる。以後、特に断らない限り、保持構造と言えば、ケースと一体成形される保持構造を意味する。また、保持構造のように、ケースと一体成形される物を成形構造と呼ぶことがある。
本例では、制御部2は、自動設計処理において、成形構造が形成されていない、表面が平らなケースを考える。そして、制御部2は、成形構造が形成されていないケースによって規定される配置空間30を考える。また制御部2は、保持構造によって保持される部品を配置空間30に配置する場合には、当該部品と当該保持構造をまとめて、移動単位としての一つの被配置部品として扱う。したがって、保持構造によって保持される部品については、自動設計処理において、当該部品と当該保持構造が一体となって仮想的に移動させられる。以後、特に断らない限り、ケースと言えば、成形構造が形成されてないケースを意味する。また、被配置部品において、保持構造で保持される部品を被保持部品と呼ぶことがある。
電子機器の製造時には、ケースと保持構造とが一体成形されることから、ケースの一部を保持構造とすることができる。したがって、自動設計処理においては、保持構造が、ケースの肉厚部分(言い換えればケースの構造部分あるいはケース本体)と重なるように配置されても問題とならない。つまり、ケースの肉厚部分にも被配置部品の一部を配置することが可能である。そこで、本例では、配置空間30にケースの肉厚部分が含まれるように、制御部2は、ケースの外側の面よりも内側の空間を配置空間30とする。配置空間30には、ケースの内側に存在する、物が存在しない空洞部分と、ケースの肉厚部分とが含まれる。本例の自動設計処理では、ケースの肉厚部分に保持構造が重なるように当該保持構造を配置空間に配置することが可能である。
また、電子機器を製造する場合には、保持構造同士を一体成形することが可能であることから、複数の被配置部品の間で保持構造を共用することができる。したがって、自動設計処理においては、保持構造同士が重なっても問題とならない。そこで、本例の自動設計処理では、保持構造を他の保持構造と重なるように配置空間に配置することが可能となっている。
また、本例の自動設計処理では、被保持部品などの、ケースと一体成形されない部品は、他の物体と重ねて配置することができない。例えば、被配置部品の被保持部品は、他の被配置部品の被保持部品及び保持構造と重ねて配置することができない。また、保持構造で保持されない部品、言い換えれば、保持構造を備えていない被配置部品は、他の被配置部品と重ねて配置することができない。以後、他の物体と重ねて配置することができない部品を重ね不可部品と呼ぶことがある。
本例では、自動設計処理において、配置空間30の周囲の空間も利用される。以後、配置空間30の周囲の空間を周囲空間と呼ぶことがある。また、配置空間と周囲空間とで構成される空間を対象空間と呼ぶことがある。
図5は対象空間50の一例を示す図である。図5の例では、ケース70の外側の面71よりも内側の空間が配置空間30となっている。配置空間30には、ケース70の外側の面71と内側の面72との間の肉厚部分73(言い換えれば構造部分73)と、内側の面72よりも内側の空洞部分74とが含まれる。対象空間50は、ケース70によって規定される配置空間30と、その周囲に存在する周囲空間40とで構成されている。本例では、観測空間20において、配置空間30よりも外側の部分が周囲空間40となっている。よって、本例では、対象空間50と観測空間20とは一致している。
上述のように、観測空間20は複数の分割要素に分割されることから、周囲空間40も複数の分割要素に分割される。制御部2は、配置空間30及び周囲空間40を含む対象空間50を構成する複数の分割要素に対して複数のデータをそれぞれ割り当てる。これにより、配置空間30を構成する複数の分割要素に対して複数のデータがそれぞれ割り当てられるとともに、周囲空間40を構成する複数の分割要素に対して複数のデータがそれぞれ割り当てられる。制御部2は、周囲空間40を構成する複数の分割要素に対してそれぞれ割り当てられた複数のデータから成る配列データを、周囲空間40を表す周囲空間データとする。また制御部2は、対象空間50を構成する複数の分割要素に対してそれぞれ割り当てた複数のデータから成る配列データを、対象空間50を表す対象空間データとする。対象空間データには、配置空間データと周囲空間データとが含まれる。対象空間データ及び周囲空間データは三次元配列データとなっている。制御部2は、対象空間データと部品データに基づいて入力状態データを生成する。以後、対象空間の分割要素に割り当てられるデータを第1データと呼ぶことがある。また、被配置部品の分割要素に割り当てられるデータを第2データと呼ぶことがある。
図6は、被保持部品61と保持構造62を備える被配置部品60の一例を示す図である。図6の例では、被保持部品61はカメラであって、当該カメラの周囲が保持構造62で保持されている。
図7は、図6に示される被配置部品60を表す部品データ90の一例を示す図である。図7では、部品データ90が二次元データとなっているが、実際には三次元データとなっている。以降の図に示される部品データも同様である。被配置部品60のある分割要素に割り当てられた第2データ82は、部品データ90の三次元のデータ配列において、被配置部品60での当該ある分割要素の位置に対応する位置に配置される。つまり、被配置部品60のある分割要素に割り当てられた第2データ82についての部品データ90のデータ配列内での相対的な位置は、被配置部品60での当該ある分割要素の相対的な位置と同じとなっている。
制御部2は、保持構造の各分割要素に対して、例えば“1”の第2データ82を割り当てる。一方で、制御部2は、重ね不可部品の各分割要素に対して、例えば“2”の第2データ82を割り当てる。図7の例では、図6に示される保持構造62の各分割要素には“1”が割り当てられ、図6に示される被保持部品61の各分割要素には“2”が割り当てられている。
図8は、上述の図5に示される対象空間50を表す対象空間データ100の一例を示す図である。図8では、対象空間データ100が二次元データとなっているが、実際には三次元データとなっている。以降の図に示される対象空間データも同様である。対象空間50のある分割要素に割り当てられた第1データ81は、対象空間データ100の三次元のデータ配列において、対象空間50での当該ある分割要素の位置に対応する位置に配置される。つまり、対象空間50のある分割要素に割り当てられた第1データ81についての対象空間データ100のデータ配列内での相対的な位置は、対象空間50での当該ある分割要素の相対的な位置と同じとなっている。図8では、破線の内側の配列データが配置空間データ110を表しており、破線の外側の配列データが周囲空間データ120を表している。
制御部2は、配置空間30を規定するケースの空洞部分の各分割要素に対して、例えば“0”の第1データ81を割り当てる。また制御部2は、ケースの肉厚部分の各分割要素に対して、保持構造と同様に例えば“1”の第1データ81を割り当てる。そして制御部2は、周囲空間の各分割要素に対して、重ね不可部品と同様に例えば“2”の第1データ81を割り当てる。図8の例では、図5に示されるケース70の空洞部分74の各分割要素には“0”が割り当てられ、ケース70の肉厚部分73の各分割要素には“1”が割り当てられている。また、図8の例では、図5に示される周囲空間40の各分割要素には“2”が割り当てられている。
配置空間での複数の被配置部品の状態を表す入力状態データには、当該複数の被配置部品をそれぞれ表す複数の部品データのそれぞれが、当該部品データに対応する被配置部品の配置空間での位置に応じて対象空間データに対して合成された合成配列データが含まれる。以後、この合成配列データを入力合成データと呼ぶことがある。
本例では、入力状態データには入力合成データだけが含まれる。つまり、本例では、入力状態データは入力合成データとなっている。図9は入力合成データの生成方法(言い換えれば入力状態データの生成方法)の一例を示すフローチャートである。図9の例では、対象空間データに対して複数の部品データが順番に合成されることによって入力合成データが生成される。入力合成データの生成方法は図9の例に限られない。以下の説明では、対象空間データの三次元配列の各位置を第1データ位置と呼ぶことがある。また、部品データの三次元配列の各位置を第2データ位置と呼ぶことがある。
図9に示されるように、ステップs1において、制御部2は、配置空間に存在する複数の被配置部品から一つの被配置部品を選択する。以後、ステップs1で選択された被配置部品を選択部品と呼ぶことがある。
次にステップs2において、制御部2は、対象空間データに対して、選択部品を表す部品データを、配置空間での選択部品の位置に応じて合成する。ステップs2では、制御部2は、まず、対象空間において選択部品が占める領域を選択部品領域として特定する。次に、制御部2は、対象空間データにおいて、特定した選択部品領域の各分割要素に対応する第1データが存在するデータ領域を選択部品領域データとして特定する。選択部品領域データは三次元配列データである。次に、制御部2は、対象空間データにおける、特定した選択部品領域データに対して、選択部品を表す部品データを合成する。これにより、選択部品を表す部品データが合成された対象空間データが得られる。以後、部品データが合成された対象空間データを合成済み対象空間データと呼ぶことがある。
制御部2は、選択部品領域データに対して部品データを合成する場合には、選択部品領域データの三次元配列の各第1データ位置について、当該第1データ位置に存在する第1データに対して、部品データの三次元配列において当該第1データ位置に対応する第2データ位置に存在する第2データを足し合わせて当該第1データを変更する。ただし、対象空間データの第1データ位置での第1データが“1”であって、それに足し合わされる第2データも“1”の場合には、制御部2は、当該第1データ位置の第1データに対して第2データを足し合わせずに、当該第1データを“1”のままとする。
次にステップs3において、制御部2は、配置空間に存在するすべての被配置部品を選択したか否かを判定する。ステップs3においてNOと判定されると、ステップs1が再度実行される。2回目以降のステップs1では、制御部2は、配置空間に存在する複数の被配置部品のうちの未選択の被配置部品から一つの被配置部品を選択する。
次にステップs2において、制御部2は、前回のステップs2で生成された合成済み対象空間データに対して、新たに選択された選択部品を表す部品データを、配置空間での当該選択部品の位置に応じて合成する。
2回目以降のステップs2では、1回目のステップs2と同様に、制御部2は、まず、対象空間において選択部品が占める領域を選択部品領域として特定する。次に、制御部2は、前回のステップs2で得られた合成済み対象空間データにおいて、特定した選択部品領域の各分割要素に対応する第1データが存在する領域を選択部品領域データとして特定する。次に、制御部2は、前回のステップs2で得られた合成済み対象空間データの選択部品領域データに対して、新たな選択部品を表す部品データを合成する。2回目のステップs2では、2つの部品データが合成された合成済み対象空間データが得られる。一般化すると、N回目(N≧1)のステップs2では、N個の部品データが合成された合成済み対象空間データが得られる。ステップs2の後、ステップs3が実行され、以後、制御部2は同様に動作する。
ステップs3においてYESと判定されると、制御部2は、直前のステップs2で得られた合成済み対応空間データを入力合成データとして、入力合成データの生成処理を終了する。配置空間に存在する複数の被配置部品の数をM(≧2)で表すと、M個の部品データが合成された対象空間データが、ニューラルネットワーク10の入力層11に入力される入力合成データとなる。以後、合成済み対象空間データを構成する各データ、第3データあるいは第3データ83と呼ぶことがある。
次に図9に示される処理の具体例を、上述の図7及び図8に示される部品データ90及び対象空間データ100を用いて説明する。
例えば、図10に示されるように、配置空間30に、図6に示される被配置部品60が2個配置される場合を考える。2個の被配置部品60をそれぞれ被配置部品60a及び60bと呼ぶ。制御部2は、被配置部品60a及び60bのうち、例えば、まず被配置部品60aを選択する(1回目のステップs1)。このときの選択部品領域データ101aは図11のようになる。ステップs2において、制御部2が、選択部品領域データ101aに対して、上述の図7に示される、被配置部品60aを表す部品データ90を合成すると、ステップs2で得られる合成済み対象空間データ100aは図12のようになる。
次に制御部2は被配置部品60bを選択する(2回目のステップs1)。このときの選択部品領域データ101bは図13のようになる。2回目のステップs2において、制御部2が、選択部品領域データ101bに対して、上述の図7に示される、被配置部品60bを表す部品データ90を合成すると、2回目のステップs2で得られる合成済み対象空間データ100bは図14のようになる。図10の例では、図14に示される合成済み対象空間データ100bが入力合成データとして使用される。
図14に示される合成済み対象空間データ100bを見ると、配置空間での被配置部品60a及び60bの状態を特定することができる。例えば、合成済み対象空間データ100bでの“4”を示すデータ領域は、配置空間において、被配置部品60aの被保持部品と、被配置部品60bの被保持部品とが重なっている領域を示している。また、合成済み対象空間データ100bでの“3”を示すデータ領域は、配置空間において、被配置部品60a及び被配置部品60bの一方の被保持部品と、被配置部品60a及び被配置部品60bの他方の保持構造とが重なっている領域を示している。
<学習処理について>
強化学習では、報酬に基づいてNNパラメータが学習される。本例では、対象空間において被配置部品が他の物体と干渉するか否かに応じて報酬が決定される。強化学習では、対象空間において被配置部品が他の物体と干渉している場合には負の報酬(つまり、罰則)が与えられる。一方で、対象空間において各被配置部品が他の物体と干渉してない場合には正の報酬が与えられる。
上述のように、本例では、保持構造がケースの肉厚部分と重なって配置されることが許容されている。したがって、強化学習では、保持構造がケースの肉厚部分と重なったとしても干渉とは扱われない。また本例では、保持構造が他の保持構造と重なって配置されることが許容されている。したがって、強化学習では、保持構造が他の保持構造と重なったとしても干渉とは扱われない。
一方で、被保持部品などの重ね不可部品については他の物体と重ねて配置することが許容されていない。したがって、強化学習では、重ね不可部品が他の物体と重なった場合には干渉と扱われる。これにより、配置設計において、重ね不可部品が他の物体と重なって自動配置される可能性を低減することができる。
また強化学習では、被配置部品の少なくとも一部が配置空間外に存在する場合には干渉として扱われる。これにより、配置設計において、被配置部品の少なくとも一部が配置空間外に自動配置される可能性を低減することができる。
対象空間において干渉が発生しているか否かは、入力合成データから特定することができる。上述のように、ケースの肉厚部分の分割要素には“1”が割り当てられ、ケースの空洞部分の分割要素には“0”が割り当てられる。また、保持構造の分割要素には“1”が割り当てられる。また、入力合成データの生成処理で説明したように、対象空間データの第1データ位置での第1データが“1”であって、それに足し合わせられる第2データも“1”の場合には、当該第1データ位置の第1データに対して第2データが足し合わされずに、当該第1データが“1”のままとされる。これらの規則から、入力合成データでの“2”以下のデータ領域は、配置空間における、当該データ領域に対応する部分空間で干渉が発生していないことを示している。一方で、入力合成データでの“3”以上のデータ領域は、配置空間における、当該データ領域に対応する部分空間で干渉が発生していることを示している。以後、入力合成データに基づいて、対象空間において干渉が発生しているか否かを判断することを、干渉判定と呼ぶことがある。
図15は学習処理の一例を示すフローチャートである。制御部2が記憶部3内の学習プログラム3bを実行することによって、図15に示される学習処理が制御部2で実行される。図15は、制御部2が、電子機器を構成する複数の被配置部品を対象空間で移動させながら強化学習を行う場合の制御部2の動作の一例が示されている。制御部2は、例えば2つのニューラルネットワーク10を使用して強化学習を行う。以後、強化学習で使用される、電子機器を構成する複数の被配置部品のそれぞれを使用対象部品と呼ぶことがある。また、強化学習で使用される2つのニューラルネットワーク10を、それぞれ第1ニューラルネットワーク及び第2ニューラルネットワークと呼ぶことがある。
第1ニューラルネットワークは、それに対応する使用対象部品に行うべき行動を決定するためのQ値を出力する。制御部2は、第1ニューラルネットワークから出力される7つのQ値に基づいて、それに対応する使用対象部品に行うべき行動を決定する。同様に、第2ニューラルネットワークは、それに対応する使用対象部品に行うべき行動を決定するためのQ値を出力する。制御部2は、第2ニューラルネットワークから出力される6つのQ値に基づいて、それに対応する使用対象部品に行うべき行動を決定する。
学習処理では、対象空間において干渉が発生しなくなるまで複数の使用対象部品を移動させながら第1及び第2ニューラルネットワークのNNパラメータを学習する単位学習処理が、規定回数実行される。図15に示されるように、ステップs11において、制御部2は単位学習処理を実行して第1及び第2ニューラルネットワークのNNパラメータを学習する。次にステップs12において、制御部2は、単位学習処理を規定回数実行したか否かを判定する。規定回数は例えば数十回〜数百回に設定される。ステップs2においてYESと判定されると学習処理が終了する。これにより、配置設計で利用される学習済みNNパラメータが得られる。一方で、ステップs2においてNOと判定されると、ステップs11が再度実行される。制御部2は以後同様に動作する。2回目以降のステップs11では、直前のステップs11で学習されたNNパラメータがさらに学習される。したがって、単位学習処理が実行されるたびに、第1及び第2ニューラルネットワークのNNパラメータの学習が進んでいく。そして、単位学習処理が規定回数実行された後の第1及び第2ニューラルネットワークのNNパラメータが、配置設計で利用される学習済みNNパラメータとなる。学習処理の終了後、制御部2は、第1及び第2ニューラルネットワークについての学習済みNNパラメータを記憶部3に記憶する。
図16は単位学習処理の一例を示す図である。図16に示されるように、単位学習処理では、まずステップs21が実行される。ステップs21では、制御部2が、複数の使用対象部品のうちの2つの使用対象部品を操作対象として決定する。制御部2は、例えば、体積が最大の使用対象部品を第1操作対象部品とし、体積が2番目に大きい使用対象部品を第2操作対象部品とする。そして、制御部2は、第1操作対象部品を第1ニューラルネットワークに対応する使用対象部品とし、第2操作対象部品を第2ニューラルネットワークに対応する使用対象部品とする。
次にステップs22において、制御部2は、第1及び第2操作対象部品を対象空間に配置する。このとき、制御部2は、第1及び第2操作対象部品が互いに干渉するように配置空間に第1及び第2操作対象部品を配置する。ステップs22において、例えば、制御部2は、配置空間の中心の位置と、第1操作対象部品の中心の位置と、第2操作対象部品の中心の位置とが一致するように、対象空間に第1及び第2操作対象部品を配置する。
次にステップs23において、制御部2は、配置空間での第1及び第2操作対象部品の状態を表す入力状態データ(言い換えれば、入力合成データ)を、上述の図9に示される処理を実行して生成する。例えば、第1及び第2操作対象部品が上述の図10に示される被配置部品60a及び60bであり、ステップs22において、第1及び第2操作対象部品が図10のように配置空間30に配置される場合には、ステップs23では、上述の図14のような入力合成データが生成される。
次にステップs24において、制御部2は、入力合成データを用いて、第1及び第2ニューラルネットワークのNNパラメータを学習する。制御部2は、対象空間において干渉が発生しなくなるまで第1及び第2操作対象部品を移動させながら第1及び第2ニューラルネットワークのNNパラメータを学習する。制御部2は、第1ニューラルネットワークの出力に基づいて第1操作対象部品に行う行動を決定し、第2ニューラルネットワークの出力に基づいて第2操作対象部品に行う行動を決定する。制御部2は、第1及び第2操作対象部品のそれぞれが他の物体と干渉しなくなると、ステップs24を終了して、ステップs25を実行する。なお、ステップs24の処理については後で詳細に説明する。
ステップs25において、制御部2は、すべての使用対象部品が操作対象となったか否かを判定する。ステップs25においてYESと判定されると、ステップs11の単位学習処理が終了する。一方で、ステップs25においてNOと判定されると、ステップs26が実行される。ステップs26において、制御部2は、第1操作対象部品とした使用対象部品を、対象空間において、ステップs24が終了した時点(言い換えれば、対象空間において干渉が発生しなくなった時点)での位置に固定する。これにより、単位学習処理での以後の処理においては、第1操作対象部品とされた使用対象部品が対象空間に配置されたままとなる。
ステップs26の後、制御部2はステップs21を再度実行する。2回目以降のステップs21では、制御部2は、前回のステップs21において第2操作対象部品とした使用対象部品を、新たな第1操作対象部品に決定する。そして、制御部2は、未だ操作対象とされてない使用対象部品のうち、最も体積が大きな使用対象部品を新たな第2操作対象部品に決定する。
次に、制御部2は、ステップs22を実行して、新たな第1及び第2操作対象部品が互いに干渉するように、当該第1及び第2操作対象部位品を配置空間に配置する。これにより、対象空間には、それまでに実行されたステップs26において対象空間に固定された使用対象部品と、新たな第1及び第2操作対象部品とが配置される。
次に、制御部2は、ステップs23を実行して、対象空間において現在存在している、第1及び第2操作対象部品を含む複数の使用対象部品についての配置空間での状態を表す入力合成データを、図9に示される処理を実行して生成する。そして、制御部2は、ステップs24を実行し、以後同様に動作する。ステップs25においてYESと判定された時点においては、電子機器の各使用対象部品が他の物体と干渉しないように配置空間に配置されている。単位学習処理は、電子機器の各使用対象部品が他の物体と干渉しないように配置空間に配置されたとき終了すると言える。
図17及び18は、ステップs24の処理の一例を詳細に示すフローチャートである。図17に示されるように、ステップs24では、まずステップs31aが実行される。ステップs31aにおいて、制御部2は、ステップs23で生成された入力状態データ(つまり入力合成データ)を第1ニューラルネットワークに入力する。ニューラルネットワーク10の複数の入力素子に対しては、入力状態データを構成する複数の第3データがそれぞれ入力される。入力合成データが、例えば、(50×50×50)個の第3データから成る三次元配列データである場合、入力層11は125000個の入力素子で構成される。
次にステップs32aにおいて、制御部2は、第1ニューラルネットワークに対応する第1操作対象部品の行動を決定し、決定した行動を第1操作対象部分に行う。制御部2は、例えばEpsilon-Greedy法を用いて、第1操作対象部品の行動を決定する。制御部2は、第1操作対象部品の行動を確率αでランダムに決定する。そして、制御部2は、確率(1−α)で、ステップs31bにおいて入力状態データが入力された第1ニューラルネットワークの出力に基づいて第1操作対象部品の行動を決定する。制御部2は、ステップs32aの実行回数が大きくなるにつれて確率αを小さくする。制御部2は、第1ニューラルネットワークの出力に基づいて第1操作対象部品の行動を決定する場合には、第1ニューラルネットワークから出力される7個のQ値のうち、最大のQ値に対応する行動を第1操作対象部品に対して行う。
ステップs32aにおいて、制御部2は、第1操作対象部品を移動させる場合には、例えば、分割要素の1つ分だけ、第1操作対象部品を移動させる。例えば、制御部2は、第1操作対象部品を+X方向に移動させる場合、分割要素の1つ分だけ+X方向に第1操作対象部品を移動させる。
ステップs32aの後、ステップs33aが実行される。ステップs33aにおいて、制御部2は、ステップs32aでの第1操作対象部品の行動に応じて、入力状態データ(つまり入力合成データ)を更新する。制御部2は、ステップs32aにおいて第1操作対象部品を移動させると、移動させた後における配置空間での複数の使用対象部品の状態を表す入力状態データを生成して、入力状態データを更新する。なお、ステップs32aでの第1操作対象部品の行動が「移動させない」の場合、制御部2は、ステップs31aで使用した入力状態データを、更新後の入力状態データとして使用する。
次にステップs34aにおいて、制御部2は、最新の入力状態データ(言い換えれば、更新後の入力状態データ)に基づいて報酬を決定する。言い換えれば、制御部2は、第1操作対象部品の行動後における配置空間での複数の使用対象部品の状態に基づいて報酬を決定する。制御部2は、対象空間において干渉が発生していない場合には報酬を大きくし、対象空間において干渉が発生している場には報酬を小さくする。以下に報酬の決定方法の一例について説明する。
制御部2は、最新の入力合成データにおいて、3以上の値を示す第3データが含まれているか否かを判断する。制御部2は、入力合成データにおいて、3以上の値を示す第3データが含まれていないと判断すると、報酬の値を、例えば、正の固定値に決定する。この固定値は、例えば、入力合成データを構成する複数の第3データの数等に応じて決定される。
ここで、上述のように、入力合成データでの3以上のデータ領域は、配置空間における、当該データ領域に対応する部分空間で干渉が発生していることを示している。したがって、制御部2は、ステップs32aでの第1操作対象部品の行動後の対象空間において干渉が発生していない場合、報酬の値を正の値に決定すると言える。
一方で、制御部2は、入力合成データにおいて、3以上の値を示す第3データが含まれていると判断すると、報酬の値を負の値とする。言い換えれば、制御部2は、ステップs32aでの第1操作対象部品の行動後の対象空間において干渉が発生している場合、報酬の値を負の値とする。制御部2は、入力合成データにおける、3以上の値をすべて足し合わせて、それによって得られる値の負の値を報酬として決定する。例えば、入力合成データが、上述の図14に示される合成済み対象空間データ100bと同じである場合を考える。この場合、入力合成データには、“3”の値を示す第3データ83が8個含まれ、“4”を示す第3データ83が2個含まれる。したがって、報酬の値は“−32”となる。対象空間において干渉が発生している領域が大きいほど、報酬は小さくなる。
ステップs34aにおいて報酬が決定されると、ステップs35aにおいて、制御部2は、NNパラメータの学習で使用される参照リストを更新する。そしてステップs36aにおいて、制御部2は、更新後の参照リストに基づいて第1ニューラルネットワーク及び第2ニューラルネットワークのNNパラメータを学習する。ステップs35a及びs36aの詳細については後述する。
次にステップs37aにおいて、制御部2は干渉判定を行う。具体的には、制御部2は、ステップs32aでの第1操作対象部品の行動後の対象空間において干渉が発生しているか否かを、最新の入力状態データに基づいて判断する。つまり、制御部2は、対象空間に配置された複数の使用対象部品のうちの少なくとも一つが他の物体と干渉しているか否かを判断する。ステップs37aにおいてNOと判断されると、ステップs24の処理が終了する。一方で、ステップs37aにおいてYESと判断されると、ステップs31bが実行される。
図18に示されるように、ステップs31bにおいて、制御部2は、現在の入力状態データ(つまり、現在の入力合成データ)を第2ニューラルネットワークに入力する。言い換えれば、制御部2は、ステップs33aで更新された入力合成データを第2ニューラルネットワークに入力する。
次にステップs32bにおいて、制御部2は、対象空間において、第2ニューラルネットワークに対応する第2操作対象部品の行動を決定し、決定した行動を第2操作対象部品に行う。制御部2は、第1操作対象部品の行動を決定する場合と同様に、例えばEpsilon-Greedy法を用いて、第2操作対象部品の行動を決定する。制御部2は、第2操作対象部品の行動を確率βでランダムに決定する。そして、制御部2は、確率(1−β)で、ステップs31bにおいて入力状態データが入力された第2ニューラルネットワークの出力に基づいて第2操作対象部品の行動を決定する。制御部2は、ステップs32bの実行回数が大きくなるにつれて確率βを小さくする。制御部2は、第2ニューラルネットワークの出力に基づいて第2操作対象部品の行動を決定する場合には、第2ニューラルネットワークから出力される7個のQ値のうち、最大のQ値に対応する行動を第2操作対象部品に対して行う。ステップs32bでは、制御部2は、例えば、分割要素の1つ分だけ、第2操作対象部品を移動させる。
ステップs32bの後、ステップs33bが実行される。ステップs33bにおいて、制御部2は、ステップs33aと同様に、ステップs32bでの第2操作対象部品の行動に応じて、入力状態データ(つまり入力合成データ)を更新する。
次にステップs34bにおいて、制御部2は、ステップs34aと同様にして、最新の入力状態データに基づいて報酬を決定する。次にステップs35bにおいて、制御部2は参照リストを更新する。そしてステップs36bにおいて、制御部2は、更新後の参照リストに基づいて、ステップs36aで学習された第1ニューラルネットワーク及び第2ニューラルネットワークのNNパラメータをさらに学習する。ステップs35b及びs36bの詳細については後述する。
次にステップs37bにおいて、制御部2は干渉判定を行う。具体的には、制御部2は、ステップs32bでの第2操作対象部品の行動後の対象空間において干渉が発生しているか否かを判断する。ステップs37bにおいてNOと判断されると、ステップs24の処理が終了する。一方で、ステップs37bにおいてYESと判断されると、ステップs31aが再度実行される。以後、制御部2は同様に動作する。2回目以降のステップs31aでは、直前のステップs33bで更新された入力状態データが第1ニューラルネットワークに入力される。2回目以降のステップs31bでは、直前のステップs33aで更新された入力状態データが第2ニューラルネットワークに入力される。
以上のように、ステップs24の処理においては、第1操作対象部品の行動と第2操作対象部品の行動とが交互に決定される。そして、操作対象の使用対象部品の行動が決定されるたびに、入力状態データの更新、報酬の決定、参照リストの更新、NNパラメータの学習及び干渉判定が行われる。干渉判定において、干渉が発生してないと判断されると、ステップs24の処理が終了する。
以後、参照リストの更新前に実行されるステップs31a〜s34aから成る処理と、参照リストの更新前に実行されるステップs31b〜s34bから成る処理のそれぞれを、更新前処理SSと呼ぶことがある。また、ステップs31a〜s34aから成る更新前処理SSを更新前処理SSaと呼び、ステップs31b〜s34bから成る更新前処理SSを更新前処理SSbと呼ぶことがある。
次にステップs35a及び35bとステップs36a及び36bについて詳細に説明する。図19は参照リスト200の一例を示す図である。図19に示されるように、参照リスト200では、更新前処理SSの実行回数ごとに、データセット210が記録されている。更新前処理SSの実行回数は、更新前処理SSaが実行されると増加し、更新前処理SSbが実行されると増加する。更新前処理SSの実行回数は、更新前処理SSaの実行回数と更新前処理SSbの実行回数とを足し合わせた数となる。参照リスト200には、複数のデータセット210が含まれる。
ここで、p回目(p≧1)の更新前処理SSにおいて、ニューラルネットワーク10に入力される入力状態データ(つまり入力合成データ)をSDpで表す。また、p回目の更新前処理SSにおいて、操作対象の使用対象部品に行われる行動を表す行動データをMVpで表す。また、p回目の更新前処理SSにおいて決定される報酬をRpで表す。報酬Rpは、使用対象部品の行動後に得られる報酬を表しているとも言える。p回目の更新前処理SSにおいて、使用対象部品の行動に応じて更新された入力状態データは、p+1回目の更新前処理SSにおいてニューラルネットワーク10に入力される。したがって、p回目の更新前処理SSにおいて、使用対象部品の行動に応じて更新された入力状態データはSDp+1で表される。
更新前処理SSの実行回数がp回の場合のデータセット210には、入力状態データSDp、行動データMVp、入力状態データSDp+1及び報酬Rpが含まれる。入力状態データSDp、行動データMVp、入力状態データSDp+1及び報酬Rpを(SDp,MVp、SDp+1,Rp)で表すと、p回目の更新前処理SSに対応するデータセット210には、(SDp,MVp、SDp+1,Rp)が含まれる。
q回目(q≧1)の更新前処理SSaが、p回目の更新前処理SSである場合、q回目の更新前処理SSaの直後のステップs35aにおいて、制御部2は、q回目の更新前処理SSaに基づいて、p回目の更新前処理SSに対応するデータセット210を生成する。具体的には、制御部2は、q回目の更新前処理SSaのステップs31aにおいて第1ニューラルネットワークに入力される入力状態データを、入力状態データSDpとする。また、制御部2は、q回目の更新前処理SSaのステップs32aにおいて第1操作対象部品に行われた行動を表す行動データを、行動データMVpとする。制御部2は、q回目の更新前処理SSaのステップs32aにおいて第1操作対象部品に行われた行動が例えば「+X方向の移動」である場合、「+X方向の移動」を表す行動データMVpを生成する。また、制御部2は、q回目の更新前処理SSaのステップs33aにおいて更新した入力状態データを、入力状態データSDp+1とする。また、制御部2は、q回目の更新前処理SSaのステップs34aにおいて決定した報酬を報酬Rpとする。そして、制御部2は、q回目の更新前処理SSaから得られた(SDp,MVp、SDp+1,Rp)を、p回目の更新前処理SSに対応するデータセット210として参照リスト200に追加する。これにより、参照リスト200が更新される。
同様に、r回目(r≧1)の更新前処理SSbが、p回目の更新前処理SSである場合、r回目の更新前処理SSbの直後のステップs35bにおいて、制御部2は、r回目の更新前処理SSbに基づいて、p回目の更新前処理SSに対応するデータセット210を生成する。具体的には、制御部2は、r回目の更新前処理SSbのステップs31bにおいて第2ニューラルネットワークに入力される入力状態データを、入力状態データSDpとする。また、制御部2は、r回目の更新前処理SSbのステップs32bにおいて第2操作対象部品に行われた行動を表す行動データを、行動データMVpとする。また、制御部2は、r回目の更新前処理SSbのステップs33bにおいて更新した入力状態データを、入力状態データSDp+1とする。また、制御部2は、r回目の更新前処理SSbのステップs34bにおいて決定した報酬を報酬Rpとする。そして、制御部2は、r回目の更新前処理SSbから得られた(SDp,MVp、SDp+1,Rp)を、p回目の更新前処理SSに対応するデータセット210として参照リスト200に追加する。これにより、参照リスト200が更新される。
制御部2は、以上のようにして更新される参照リスト200に基づいて、第1及び第2ニューラルネットワークのNNパラメータを学習する。ステップs36aにおいて、制御部2は、直前のステップs35aにおいて更新された参照リスト200から、所定数のデータセット210をランダムに抽出する。そして、制御部2は、抽出した所定数のデータセット210を用いて教師データを生成し、生成した教師データと第1ニューラルネットワークの出力との差が小さくなるように、第1ニューラルネットワークのNNパラメータを調整する。これにより、第1ニューラルネットワークのNNパラメータが学習される。このような学習方法はミニバッチ学習法を呼ばれることがある。
ステップs36bにおいても同様にして、第2ニューラルネットワークのNNパラメータが学習される。ステップs36bにおいて、制御部2は、直前のステップs35bにおいて更新された参照リスト200から、所定数のデータセット210をランダムに抽出する。そして、制御部2は、抽出した所定数のデータセット210を用いて教師データを生成し、生成した教師データと第2ニューラルネットワークの出力との差が小さくなるように、第2ニューラルネットワークのNNパラメータを調整する。
なお、ステップs35aにおいて更新された参照リスト200に、所定数以上のデータセット210が記録されていない場合には、ステップs36aは実行されずにステップs37aが実行される。同様に、ステップs35bにおいて更新された参照リスト200に、所定数以上のデータセット210が記録されていない場合には、ステップs36bは実行されずにステップs37bが実行される。
<学習処理の具体例>
次に、学習処理の具体例を、図20及び21に示される電子機器300を構成する部品を用いて説明する。図20には、電子機器300を表側から見た様子が示されており、図21には、電子機器300を裏側から見た様子が示されている。
電子機器300は、ケース310と、ボタン320と、複数の電池330と、ストラップ保持構造340とを備える。また電子機器300は、後述する基板350及びネジボス360を備える。ボタン320、複数の電池330及び基板350はケース310内に収納される。ストラップ保持構造340は、ケース310と一体成形される成形構造である。ネジボス360は、ケース310と一体成形される保持構造を備える。電子機器300は、ボタン320が操作されると、電子機器300の外部に信号を送信することが可能である。
ケース310は、フロントケース311及びバックケース312を備える。図22は、フロントケース311のみを示す斜視図である。図23は、バックケース312のみを示す斜視図である。
自動設計処理において、制御部2は、電子機器300を、成形構造が形成されていないケース310と、ボタン320を備えるボタン構造322と、複数の電池330を備える電池構造332と、ストラップ保持構造340と、基板350と、ネジボス360とに分けて考える。制御部2は、自動設計処理において、成形構造が形成されていないケース310によって規定される配置空間を考える。また制御部2は、自動設計処理において、ボタン構造322、電池構造332、ストラップ保持構造340、基板350及びネジボス360のそれぞれを配置空間に配置する被配置部品として使用する。そして、制御部2は、配置空間において、ボタン構造322、電池構造332、ストラップ保持構造340、基板350及びネジボス360を移動させながらNNパラメータを学習する。
図24及び図25は、成形構造が形成されていないケース310を構成するフロントケース311及びバックケース312をそれぞれ示す斜視図である。以後、単にケース310と言えば、成形構造が形成されていないケース310を意味する。制御部2は、対象空間データを生成する場合には、ケース310の各分割要素に対して“1”の第1データを割り当てる。
図26はボタン構造322を示す斜視図である。図26に示されるように、ボタン構造322は、重ね不可部品であるボタン320と、ボタン320を保持する保持構造321とを備える。保持構造321は、ケース310と一体成形される成形構造である。制御部2は、ボタン構造322を表す部品データを生成する場合には、ボタン320の各分割要素に対して“2”の第2データを割り当てる。また制御部2は、保持構造321の各分割要素に対して“1”の第2データを割り当てる。
図27は電池構造332を示す斜視図である。図27に示されるように、電池構造332は、重ね不可部品である複数の電池330と、複数の電池330を保持する保持構造331とを備える。保持構造331は、複数の電池330を収納する電池ケースとも言える。保持構造331は、ケース310と一体成形される成形構造である。制御部2は、電池構造332を表す部品データを生成する場合には、複数の電池330のそれぞれの各分割要素に対して“2”の第2データを割り当てる。また制御部2は、保持構造331の各分割要素に対して“1”の第2データを割り当てる。
図28はストラップ保持構造340を示す斜視図である。図28に示されるように、ストラップ保持構造340は、上面が開口した箱状の本体部341と、突起部342とを備える。突起部342は、本体部341の底面部341aに立設されている。本体部341の側面部341bには、ストラップが通される通し穴343が設けられている。通し穴343に通されたストラップは、突起部342に引っかけられる。突起部342にストラップが引っ掛けられた状態では、本体部341の内側の、突起部342を除く空間344(言い換えれば、本体部341で囲まれた、突起部342を除く空間344)にはストラップが存在することになる。以後、空間344をストラップ配置空間344と呼ぶことがある。
制御部2は、ストラップ保持構造340を表す部品データを生成する場合には、本体部341及び突起部342だけではなく、通し穴343及びストラップ配置空間344にもデータを割り当てる。具体的には、制御部2は、本体部341及び突起部342の各分割要素に対して第2データを割り当てるだけではなく、通し穴343及びストラップ配置空間344の各分割要素に対しても第2データを割り当てる。そして、制御部2は、本体部341、突起部342、通し穴343及びストラップ配置空間344の各分割要素に対して割り当てた第2データから成る配列データを、ストラップ保持構造340を表す部品データとする。
成形構造である本体部341は、自動設計処理において、他の成形構造及びケースと重ねて配置することが可能である。したがって、制御部2は、本体部341の各分割要素に対して“1”の第2データを割り当てる。一方で、突起部342にはストラップが引っ掛けられることから、突起部342は、成形構造であるものの、他の物体に重ねて配置することはできない。そこで、突起部342の各分割要素には、例外的に、重ね不可部品と同様に“2”の第2データを割り当てる。また、ストラップが通される通し穴343には、被配置部品を配置することができない。そこで、通し穴343の各分割要素に対しては、重ね不可部品と同様に“2”の第2データを割り当てる。これにより、配置設計において、通し穴343に被配置部品が自動配置される可能性を低減することができる。同様に、ストラップ配置空間344の各分割要素に対しては“2”の第2データを割り当てる。これにより、配置設計において、ストラップ配置空間344に被配置部品が自動配置される可能性を低減することができる。
図29は基板350を示す斜視図である。図29に示されるように、基板350は、基板本体351と、基板本体351に搭載された電子部品352とを備える。制御部2は、重ね不可部品である基板350を表す部品データを生成する場合には、基板本体351及び電子部品352の各分割要素に対して“2”の第2データを割り当てる。
図30はネジボス360を示す斜視図である。図30に示されるように、ネジボス360は、重ね不可部品であるネジ361と、ネジ361を保持する保持構造362とを備える。保持構造362は、ケース310と一体成形される成形構造である。保持構造362は、ネジ361の軸を収納する第1部分3621と、ネジ361の頭を収納する第2部分3622とを備える。第1部分3621及び第2部分3622の一方がフロントケース311と一体成形され、第1部分3621及び第2部分3622の他方がバックケース312と一体成形される。制御部2は、ネジボス360を表す部品データを生成する場合には、ネジ361の各分割要素に対して“2”の第2データを割り当てる。また、制御部2は、保持構造362の各分割要素に対して“1”の第2データを割り当てる。
ボタン構造322、電池構造332、ストラップ保持構造340、基板350及びネジボス360を用いた学習処理の単位学習処理が開始すると、制御部2は、最初のステップs21において、体積が最大の電池構造332を第1操作対象部品とし、体積が2番目に大きい基板350を第2操作対象部品とする。そして、制御部2は、ステップs22〜s24を実行する。
ステップs24では、制御部2は、電池構造332の行動と基板350の行動とを交互に決定する。そして制御部2は、電池構造332の行動を決定するたびに(ステップs32a)、入力状態データの更新(ステップs33a)、報酬の決定(ステップs34a)、参照リストの更新(ステップs35a)、NNパラメータの学習(ステップs36a)及び干渉判定(ステップs37a)を行う。また、制御部2は、基板350の行動を決定するたびに(ステップs32b)、入力状態データの更新(ステップs33b)、報酬の決定(ステップs34b)、参照リストの更新(ステップs35b)、NNパラメータの学習(ステップs36b)及び干渉判定(ステップs37b)を行う。制御部2は、干渉判定において、干渉が発生してないと判断すると、ステップs24の処理を終了する。
ステップs24の後、制御部2は、ステップs25を実行する。このステップs25ではNOと判定され、ステップs26が実行される。ステップs26では、第1操作対象部品とされた電池構造332が対象空間に固定される。
ステップs26の後、ステップs21が再度実行される。このステップs21においては、基板350が第1操作対象部品とされる。また、体積が3番目に大きいボタン構造322が第2操作対象部品とされる。その後、ステップs22〜s24が実行される。ステップs24では、電池構造332が固定配置された対象空間において、基板350とボタン構造322が移動させられる。
ステップs24の後、ステップs25が実行される。このステップs25ではNOと判定され、ステップs26が実行される。ステップs26では、第1操作対象部品とされた基板350が対象空間に固定される。
ステップs26の後、ステップs21が再度実行される。このステップs21においては、ボタン構造322が第1操作対象部品とされる。また、体積が4番目に大きいストラップ保持構造340が第2操作対象部品とされる。その後、ステップs22〜s24が実行される。ステップs24では、電池構造332及び基板350が固定配置された対象空間において、ボタン構造322とストラップ保持構造340が移動させられる。
ステップs24の後、ステップs25が実行される。このステップs25ではNOと判定され、ステップs26が実行される。ステップs26では、第1操作対象部品とされたボタン構造322が対象空間に固定される。
ステップs26の後、ステップs21が再度実行される。このステップs21においては、ストラップ保持構造340が第1操作対象部品とされる。また、体積が最も小さいネジボス360が第2操作対象部品とされる。その後、ステップs22〜s24が実行される。ステップs24では、電池構造332、基板350及びボタン構造322が固定配置された対象空間において、ストラップ保持構造340とネジボス360が移動させられる。
ステップs24の後、ステップs25が実行される。このステップs25ではYESと判定され、単位学習処理が終了する。
以上のような、ボタン構造322、電池構造332、ストラップ保持構造340、基板350及びネジボス360を用いた単位学習処理が規定回数実行されると(ステップs12のYES)、学習処理が終了する。学習処理が終了すると、制御部2は、学習処理が終了した時点の第1及び第2ニューラルネットワークのNNパラメータを学習済みNNパラメータとして記憶部3に記憶する。以後、第1ニューラルネットワークの学習済みNNパラメータを第1学習済みNNパラメータと呼ぶことがある。また、第2ニューラルネットワークの学習済みNNパラメータを第2学習済みNNパラメータと呼ぶことがある。
なお、上記の単位学習処理においては、操作対象の使用対象部品の行動が決定されるたびにNNパラメータの学習が行われているが、ステップs36a及びs36bのうちの一方が実行されなくてもよい。
また、単位学習処理においては、ステップs35aが複数回実行されるたびにステップs36aが実行されてもよい。また、単位学習処理においては、ステップs35bが複数回実行されるたびにステップs36bが実行されてもよい。
また、ステップs36aにおいて、第1及び第2ニューラルネットワークの一方のNNパラメータを学習し、ステップs36bにおいて、第1及び第2ニューラルネットワークの他方のNNパラメータを学習してもよい。
また制御部2は、学習処理を複数回実行した後の第1及び第2ニューラルネットワークのNNパラメータを、学習済みNNパラメータとして記憶部3に記憶してもよい。制御部2は、複数回の学習処理において同じ電子機器を使用してもよいし、学習処理ごとに異なる電子機器を使用してもよい。
また上記の例では、ケースの肉厚部分の各分割要素に“1”のデータが割り当てられているが、ケースの肉厚部分の一部の各分割要素には“2”のデータが割り当てられてもよい。この場合、学習処理においては、ケースにおいて“2”のデータが割り当てられた部分に他の物体が重なった場合には干渉として扱われる。
また、ケースの内側の面よりも内側の空洞部分だけを配置空間としてもよい。この場合には、ケースの肉厚部分の各分割要素には“2”のデータが割り当てられる。
以上のように、本例では、制御部2は、入力状態データに基づいてNNパラメータを学習することによって、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係を学習している。そして、制御部2は、当該関係を、配置空間において複数の被配置部品を仮想的に移動させながら機械学習している。これにより、当該関係を適切に学習することができる。よって、制御部2は、配置設計に必要な時間を短くすることができる。その結果、設計コストの削減が可能となる。
<配置設計について>
図31は配置設計の一例を示すフローチャートである。制御部2が記憶部3内の配置設計プログラム3aを実行することによって、図31に示される配置設計が制御部2で実行される。図31は、制御部2が、電子機器が備える複数の被配置部品についての配置空間での配置を自動的に決定する場合の制御部2の動作の一例が示されている。配置設計では、対象空間において干渉が発生しなくなるまで複数の被配置部品が移動させられることによって、配置空間での当該複数の被配置部品の配置が決定される。以後、配置設計において配置が決定される被配置部品を設計対象部品と呼ぶことがある。
制御部2は、強化学習と同様に、例えば2つのニューラルネットワーク10を使用して配置設計を行う。以後、配置設計で使用される2つのニューラルネットワーク10を、それぞれ第3ニューラルネットワーク及び第4ニューラルネットワークと呼ぶことがある。
第3ニューラルネットワークのNNパラメータとしては、第1学習済みNNパラメータが使用される。第4ニューラルネットワークのNNパラメータとしては、第2学習済みNNパラメータが使用される。第3ニューラルネットワークは、それに対応する設計対象部品に行うべき行動を決定するためのQ値を出力する。制御部2は、第3ニューラルネットワークから出力される7つのQ値に基づいて、それに対応する設計対象部品に行うべき行動を決定する。同様に、第4ニューラルネットワークは、それに対応する設計対象部品に行うべき行動を決定するためのQ値を出力する。制御部2は、第4ニューラルネットワークから出力される7つのQ値に基づいて、それに対応する設計対象部品に行うべき行動を決定する。
図31に示されるように、配置設計では、まずステップs41が実行される。ステップs41において、制御部2は、配置空間での配置を決定する複数の設計対象部品のうちの2つの設計対象部品を操作対象として決定する。制御部2は、上述のステップs21と同様に、例えば、体積が最大の設計対象部品を第3操作対象部品とし、体積が2番目に大きい設計対象部品を第4操作対象部品とする。そして、制御部2は、第3操作対象部品を第3ニューラルネットワークに対応する設計対象部品とし、第4操作対象部品を第4ニューラルネットワークに対応する設計対象部品とする。
次にステップs42において、制御部2は、第3及び第4操作対象部品を対象空間に仮配置する。ステップs42では、制御部2は、上述のステップs22と同様に、第3及び第4操作対象部品が互いに干渉するように配置空間に第3及び第5操作対象部品を配置する。
次にステップs43において、制御部2は、配置空間での第3及び第4操作対象部品の状態を表す入力状態データ(言い換えれば、入力合成データ)を、上述の図9に示される処理を実行して生成する。
次にステップs44において、制御部2は、ステップs42で生成した入力合成データと、第3及び第4ニューラルネットワークとを用いて、配置空間での第3操作対象部品の配置を決定する。ステップs43の処理は後で詳細に説明する。
次にステップs45において、制御部2は、すべての設計対象部品の配置を決定したか否かを判定する。ステップs45においてYESと判定されると、配置設計が完了する。一方で、ステップs45においてNOと判定されると、ステップs41が再度実行される。2回目以降のステップs41では、制御部2は、前回のステップs41において第4操作対象部品とした設計対象部品を、新たな第3操作対象部品に決定する。そして、制御部2は、未だ操作対象とされてない設計対象部品のうち、最も体積が大きい設計対象部品を新たな第4操作対象部品に決定する。
次に制御部2は、ステップs42を実行して、新たな第3及び第4操作対象部品が互いに干渉するように、当該第3及び第4操作対象部品を配置空間に仮配置する。これにより、対象空間には、配置が確定されている設計対象部品と、新たな第3及び第4操作対象部品とが配置される。
次に制御部2は、ステップs43を実行して、対象空間において現在配置されている、第3及び第4操作対象部品を含む複数の設計対象部品についての配置空間での状態を表す入力合成データを、図9に示される処理を実行して生成する。そして、制御部2は、ステップs44を実行し、以後同様に動作する。ステップs45においてYESと判定された時点においては、配置を決定すべきすべての設計対象部品のそれぞれが他の物体と干渉しないように配置空間に配置されている。これにより、すべての設計対象部品の配置が完了して配置設計が完了する。
図32は、ステップs44の処理の一例を詳細に示すフローチャートである。図32に示されるように、ステップs44では、まずステップs51が実行される。ステップs51において、制御部2は、ステップs43で生成された入力状態データ(つまり入力合成データ)を第3ニューラルネットワークに入力する。
次にステップs52において、制御部2は、第3ニューラルネットワークに対応する第3操作対象部品の行動を決定し、決定した行動を第3操作対象部品に行う。制御部2は、ステップs51において入力状態データが入力された第3ニューラルネットワークの出力に基づいて、第3操作対象部品に行う行動を決定する。具体的には、制御部2は、第3ニューラルネットワークから出力される7個のQ値のうち、最大のQ値に対応する行動を第3操作対象部品に対して行う。制御部2は、学習処理と同様に、例えば、分割要素の1つ分だけ、第3操作対象部品を移動させる。例えば、制御部2は、第3操作対象部品を+Z方向に移動させる場合、分割要素の1つ分だけ+Z方向に第3操作対象部品を移動させる。
ステップs52の後、ステップs53が実行される。ステップs53において、制御部2は、上述のステップs33a及びs33bと同様に、ステップs52での第3操作対象部品の行動に応じて、入力状態データ(つまり入力合成データ)を更新する。制御部2は、ステップs52において第3操作対象部品を移動させた後における配置空間での複数の設計対象部品の状態を表す入力状態データを生成して、入力状態データを更新する。
次にステップs54において、制御部2は、上述のステップs37a及びs37bと同様に、更新後の入力状態データに基づいて干渉判定を行う。ステップs54においてYESと判定されると、つまり、対象空間において干渉が発生していると判定されると、ステップs55が実行される。一方で、ステップs54においてNOと判定されると、つまり、対象空間において干渉が発生していないと判定されると、ステップs59が実行される。
ステップs59において、制御部2は、第3操作対象部品としている設計対象部品の配置を確定する。具体的には、制御部2は、第3操作対象部品としている設計対象部品についての配置空間での現在の位置を、当該設計対象部品の最終的な配置位置とする。第3操作対象部品としている設計対象部品の配置が確定すると、ステップs44が終了する。
ステップs55においては、制御部2は、現在の入力状態データ(つまり、現在の入力合成データ)を第4ニューラルネットワークに入力する。言い換えれば、制御部2は、ステップs53で更新された入力合成データを第4ニューラルネットワークに入力する。
次にステップs56において、制御部2は、第4ニューラルネットワークに対応する第4操作対象部品の行動を決定し、決定した行動を第4操作対象部品に行う。制御部2は、第3操作対象部品の行動を決定する場合と同様に、最新の入力状態データが入力されている第4ニューラルネットワークの出力に基づいて第4操作対象部品の行動を決定する。ステップs56において、制御部2は、例えば、分割要素の1つ分だけ、第4操作対象部品を移動させる。
ステップs56の後、ステップs57が実行される。ステップs57において、制御部2は、ステップs53と同様に、ステップs56での第4操作対象部品の行動に応じて、入力状態データ(つまり入力合成データ)を更新する。
次にステップs58において、制御部2は干渉判定を行う。ステップs58においてNOと判断されると、ステップs59が実行される。一方で、ステップs58においてYESと判断されると、ステップs51が再度実行される。以後、制御部2は同様に動作する。2回目以降のステップs51では、直前のステップs57で更新された入力状態データが第3ニューラルネットワークに入力される。2回目以降のステップs55では、直前のステップs53で更新された入力状態データが第4ニューラルネットワークに入力される。
以上のように、ステップs44の処理においては、第3操作対象部品の行動と第4操作対象部品の行動が交互に決定される。そして、操作対象の設計対象部品の行動が決定されるたびに干渉判定が行われる。干渉判定において、干渉が発生してないと判断されると、第3操作対象部品とされている設計対象部品の配置が確定する。第3操作対象部品とされている設計対象部品の配置が確定すると、第3及び第4操作対象部品が変更されて同様の処理が行われる。このような処理が、すべての設計対象部品の配置が確定するまで実行されることによって、配置空間での複数の設計対象部品の配置が自動的に決定される。
配置設計が終了すると、制御部2は、複数の設計対象部品についての決定した配置を、表示部5に表示させてもよい。また制御部2は、決定した配置を、通信部4を通じて他の装置に通知してもよい。
なお、制御部2は、配置設計が開始してから所定時間が経過するまでに配置設計が終了しなければ、配置空間での複数の設計対象部品の配置が自動的に決定できなかったとして、配置設計を途中で終了してもよい。
また、制御部2は、配置を決定する複数の設計対象部品はそのままで、配置空間についての複数種類の大きさのそれぞれについて配置設計を行ってもよい。図33はこの場合の制御部2の動作の一例を示すフローチャートである。
図33に示されるように、制御部2は、ステップs61において、配置空間のサイズを初期値に設定する。制御部2は、ケースのサイズを初期値に設定することによって、配置空間のサイズを初期値に設定する。
次にステップs62において、制御部2は、ステップs61でサイズが設定された配置空間(言い換えればケース)での複数の設計対象部品の配置を決定する配置設計を開始する。その後、制御部2は、ステップs63において、配置設計が所定時間内に終了するか否かを判定する。制御部2は、配置設計が開始してから所定時間内に終了しない場合には、配置設計を途中で終了して、処理を終了する。一方、制御部2は、配置設計が開始してから所定時間内に終了した場合には、ステップs64を実行する、ステップs64においては、制御部2は配置空間のサイズを小さくする。制御部2は、ケースのサイズを小さくすることによって、配置空間のサイズを小さくする。ステップs64の後、制御部2は、再度ステップs62を実行する。このステップs62では、制御部2は、ステップs63でサイズを小さくした配置空間(言い換えればケース)での複数の設計対象部品の配置を決定する配置設計を開始する。その後、制御部2は、再度ステップs63を実行する。ステップs63においてYESと判定されると、ステップs64が再度実行されて、配置空間のサイズがさらに小さくされる。以後、制御部2は同様に動作する。
このように、配置空間のサイズを小さくしながら配置設計を繰り返すことによって、制御部2は、複数の設計対象部品を配置することが可能な最小空間を特定することができる。言い換えれば、制御部2は、複数の設計対象部品を配置することが可能なケースの最小サイズを特定することができる。ステップs63においてNOと判定された時点の配置空間のサイズが最小サイズとなる。
なお、ステップs63においてNOと判定された場合にも、ステップs64が実行されてもよい。この場合、配置空間の最小サイズを設定し、最小サイズの配置空間が使用された配置設計が実行されると、処理が終了してもよい。また、互いに異なるサイズの配置空間が使用される配置設計が並列的に実行されてもよい。
制御部2は、ユーザによって指定される設計対象部品について配置設計を行ってもよい。また制御部2は、ユーザによって指定されるケースを用いて配置設計を行ってもよい。ユーザは、例えば、コンピュータ装置1の入力部6を利用して、制御部2に対して設計対象部品あるいはケースを指定してもよい。また、コンピュータ装置1は、通信部4を通じて、ユーザからの設計対象部品あるいはケースの指定を受けとってもよい。図34は、この場合における、コンピュータ装置1を含む設計システム400の構成例を示す図である。
図34に示されるように、設計システム400は、コンピュータ装置1と、サーバ装置410と、複数の端末装置420とを備える。サーバ装置410は、各端末装置420と通信することが可能である。サーバ装置410は、各端末装置420を制御することが可能である。また、サーバ装置410は、インターネット等を含むネットワーク430を通じてコンピュータ装置1と通信することが可能である。コンピュータ装置1の通信部4はネットワーク430に接続されている。サーバ装置410及び端末装置420のそれぞれは、一種のコンピュータ装置であって、例えばコンピュータ装置1と同様の構成を備えている。
一般ユーザは、端末装置420を利用して、コンピュータ装置1の配置設計を利用することができる。一般ユーザは、端末装置420を利用することによって、コンピュータ装置1に対して設計対象部品及びケースの指定を行うことができる。
図35は、端末装置420の表示部に表示される、一般ユーザが利用する画面500の一例を示す図である。一般ユーザは、図35に示される画面500を利用して、コンピュータ装置1に対して設計対象部品及びケースの指定等を行うことができる。サーバ装置410は、端末装置420を制御して、端末装置420に画面500を表示させる。
図35に示されるように、画面500には、コンピュータ装置1に対して配置設計の実行を指示するための開始ボタン560が含まれている。ユーザは、端末装置420の入力部を操作することによって、開始ボタン560を操作することができる。開始ボタン560が操作されると、端末装置420から配置設計の実行を指示する実行指示が出力される。実行指示は、サーバ装置410、ネットワーク430及びコンピュータ装置1の通信部4を通じて制御部2に通知される。制御部2は、実行指示が通知されると、配置設計を実行する。コンピュータ装置1は、配置設計が終了すると、複数の設計対象部品についての決定した配置を、サーバ装置410を通じて、開始ボタン560が操作された端末装置420に通知してもよい。この場合、端末装置420は、コンピュータ装置1から通知された配置を表示してもよい。これにより、ユーザは、コンピュータ装置1が決定した配置を視覚的に確認することができる。ユーザは、コンピュータ装置1が決定した配置をそのまま採用して電子機器の製造を行ったり、コンピュータ装置1が決定した配置を修正した上で電子機器の製造を行ったりする。
画面500には、開始ボタン560以外にも、複数のチェックボックスが含まれる。ユーザは、端末装置420の入力部を操作することによって、チェックボックスにチェックを入れることができる。
画面500には、ユーザが設計対象部品を指定するための複数のチェックボックス510が含まれる。チェックボックス510がチェックされると、チェックされたチェックボックス510に対応する部品が選択される。部品が選択された状態で開始ボタン560が操作されると、選択された部品が、端末装置420から、サーバ装置410、ネットワーク430及び通信部4を通じて制御部2に通知される。制御部2は、ユーザによって選択された部品を設計対象部品として使用して配置設計を行う。このとき、制御部2は、ユーザによって選択された部品を保持する保持構造が存在する場合には、選択された部品とそれを保持する保持構造を一つの設計対象部品とする。このようにして、設計対象部品がユーザによって指定される。
図35の例では、2本の単三乾電池と、温度センサーと、気圧センサーと、アンテナとがユーザによって選択されている。制御部2は、選択された2本の単3乾電池と、それらを保持する保持構造とを備える電池構造を設計対象部品とする。また制御部2は、選択された温度センサーと、それを保持する保持構造とを備える温度センサー構造を設計対象部品とする。また制御部2は、選択された気圧センサーと、それを保持する保持構造とを備える気圧センサー構造を設計対象部品とする。そして制御部2は、選択されたアンテナと、それを保持する保持構造とを備えるアンテナ構造を設計対象部品とする。配置設計では、制御部2は、配置空間での電池構造、温度センサー構造、気圧センサー構造及びアンテナ構造の配置を決定する。
また画面500には、ユーザがケースの外形(詳細には外形形状)だけを指定する際にチェックを入れるチェックボックス520と、ケースの外形を具体的に指定するための複数のチェックボックス521とが含まれている。チェックボックス520にチェックが入れられると、チェックボックス521のチェックが可能となる。チェックされたチェックボックス521に対応する外形がケースの外形として選択される。図35の例では、正方形がケースの外形として選択されている。チェックボックス520及び521がチェックされた状態で、開始ボタン560が操作されると、端末装置420から、ユーザによって選択されたケースの外形が、サーバ装置410等を介して制御部2に通知される。これにより、ケースの外形がユーザによって指定される。ユーザによって、ケースの外形だけが指定される場合には、配置設計では、コンピュータ装置1に予め登録されているサイズがケースのサイズとして使用される。
また画面500には、ケースの構造を表すケース構造データをコンピュータ装置1に送信するためのチェックボックス530が含まれる。ケース構造データは例えばCADデータである。チェックボックス530がチェックされた状態で、開始ボタン560が操作されると、端末装置420はケース構造データを送信する。ケース構造データは、サーバ装置410等を通じて制御部2に入力される。制御部2は、受信したケース構造データに基づいて配置空間データを生成する。そして、制御部2は、ケース構造データに基づいて生成した配置空間データを用いて配置設計を行う。
また画面500には、コンピュータ装置1に、複数の設計対象部品を配置することが可能なケースの最小サイズを特定させるためのチェックボックス540が含まれる。チェックボックス540がチェックされた状態で、開始ボタン560が操作されると、制御部2は、上述の図33に示される処理を実行して、ユーザによって指定された複数の設計対象部品を配置することが可能なケースの最小サイズを特定する。コンピュータ装置1は、図33の処理が終了すると、サーバ装置410を通じて、開始ボタン560が操作された端末装置420に対して、特定したケースの最小サイズを通知してもよい。この場合、端末装置420は通知された最小サイズを表示してもよい。
また画面500には、ユーザがケースのサイズを指定するためのチェックボックス550が含まれる。チェックボックス550がチェックされると、端末装置420には、ケースのサイズを指定するためのサイズ指定画面が表示される。チェックボックス550がチェックされた場合には、ケースの外形は例えば直方体となる。ユーザは、サイズ指定画面を利用して、ケースの長さ、幅及び高さのサイズを指定することができる。ユーザが、サイズ指定画面を利用してケースのサイズを指定すると、端末装置420の表示が、サイズ指定画面から画面500に切り替わる。そして、画面500の開始ボタン560が操作されると、ユーザによって指定されたケースのサイズが、サーバ装置410等を通じて制御部2に通知される。制御部2は、ユーザによって指定されたケースのサイズに基づいて配置空間を設定し、設定した配置空間を用いて配置設計を行う。
図36は、端末装置420に表示される、一般ユーザが利用する画面の他の例を示す図である。図36の例では、端末装置420はタブレット端末である。図36に示される画面600には、上述の開始ボタン560及びチェックボックス510,520,530,540が含まれる。図36の例では、2本の単四乾電池と、ボタン及びストラップ保持構造が選択されている。制御部2は、選択された2本の単4乾電池と、それらを保持する保持構造とを備える電池構造を設計対象部品とする。また制御部2は、選択されたボタンと、それを保持する保持構造とを備えるボタン構造を設計対象部品とする。そして制御部2は、選択されたストラップ保持構造を設計対象部品とする。配置設計では、制御部2は、配置空間での電池構造、ボタン構造及びストラップ保持構造の配置を決定する。
なお、画面500は、コンピュータ装置1の表示部5に表示されてもよい。また、画面600は、コンピュータ装置1の表示部5に表示されてもよい。
設計システム400は、サーバ装置410を備えていなくてもよい。この場合、各端末装置420にはネットワーク430が接続される。各端末装置420は、ネットワーク430を通じてコンピュータ装置1と通信する。
以上のように、本例では、制御部2は、自動設計処理で使用する対象空間及び被配置物のそれぞれを複数の分割要素に分割している。そして、制御部2は、対象空間及び被配置物のそれぞれの各分割要素に割り当てたデータに基づいて入力状態データを生成している。これにより、自動設計処理で扱うデータ量を低減することができる。よって、自動設計処理に必要な時間を短くすることができる。
また本例では、入力状態データはCADデータに基づくデータであることから、入力状態データを簡単に生成することができる。
また本例では、配置空間において被配置物が他の物体と干渉するか否かに基づいて学習処理及び配置設計を行っている。これにより、複数の被配置物のそれぞれが他の物体と干渉しないように当該複数の被配置物を自動的に配置空間に配置することが可能となる。
また本例では、複数の被配置部品の保持構造同士が重なった場合であっても干渉と扱われない。これにより、配置設計において、複数の被配置部品の保持構造同士を重ねて配置することが可能となる。その結果、複数の被配置部品の配置面積を小さくすることが可能となる。
また本例では、ケースは、保持構造と重なったとしても干渉と扱われない部分を有している。これにより、配置設計において、保持構造をケースに重ねて配置することが可能となる。よって、被配置部品の配置面積を小さくすることが可能となる。
また本例では、被配置部品の少なくとも一部が配置空間外に存在する場合には干渉と扱われる。これにより、被配置部品の少なくとも一部が配置空間外に存在することを、物体間の干渉と同じように扱うことができる。よって、自動設計処理が簡素化される。
また本例では、制御部2は、保持構造を有する被配置部品を表す部品データを生成する場合には、保持構造の分割要素と被保持部品の分割要素に対して互いに異なる値を割り当てる。これにより、自動設計処理において、保持構造と被保持部品とを容易に区別することができる。よって、自動設計処理が簡素化される。
また本例では、ケースの分割要素と保持構造の分割要素に対して同じ値が割り当てられる。これにより、自動設計処理において、ケースを表すデータと保持構造を表すデータとを同じように扱うことができる。よって、自動設計処理が簡素化される。
また本例では、配置空間の周囲に存在する周囲空間の分割要素に対しては、他の物体と重なった場合に干渉と扱われる部品の分割要素と同じ値が割り当てられる。これにより、自動設計処理において、被配置部品の少なくとも一部が配置空間外に存在することを干渉として容易に扱うことが可能となる。よって、自動設計処理が簡素化される。
<自動設計処理の他の例>
以下に、自動設計処理についての複数の他の例について説明する。
<第1の他の例>
本例では、分割要素のサイズが複数用意される。そして、制御部2は、各サイズについて、分割要素が当該サイズに設定された場合の入力状態データを用いて学習処理及び配置設計を行う。
学習処理では、第1及び第2ニューラルネットワークから成る第1のニューラルネットワーク対が、分割要素のサイズの数と同じ数だけ使用される。複数の第1のニューラルネットワーク対は、分割要素の複数のサイズとそれぞれ対応する。同様に、配置設計では、第3及び第4ニューラルネットワークから成る第2のニューラルネットワーク対が、分割要素のサイズの数と同じ数だけ使用される。複数の第2のニューラルネットワーク対は、分割要素の複数のサイズとそれぞれ対応する。
制御部2は、複数の第1のニューラルネットワーク対のそれぞれについて、当該第1のニューラルネットワーク対を用いた学習処理を行う。制御部2は、ある第1のニューラルネットワーク対を用いて学習処理を行う場合には、当該ある第1のニューラルネットワーク対に対応するサイズに分割要素が設定された場合の入力状態データを、当該ある第1のニューラルネットワーク対を構成する第1及び第2ニューラルネットワークのそれぞれに入力する。
例えば、分割要素の複数のサイズに、第1のサイズと第2のサイズが含まれているとする。第2のサイズは第1のサイズよりも大きいものする。分割要素が立方体である場合、第2のサイズに設定された分割要素を構成する立方体は、第1のサイズに設定された分割要素を構成する立方体よりも大きくなる。
制御部2は、第1のサイズに対応する第1のニューラルネットワーク対を用いた学習処理では、分割要素が第1のサイズに設定された場合の入力状態データを、上述のステップs31aにおいて、当該第1のニューラルネットワーク対の第1ニューラルネットワークに入力する。また、制御部2は、上述のステップs31bにおいて、分割要素が第1のサイズに設定された場合の入力状態データを、当該第1のニューラルネットワーク対の第2ニューラルネットワークに入力する。
同様に、制御部2は、第2のサイズに対応する第1のニューラルネットワーク対を用いた学習処理では、分割要素が第2のサイズに設定された場合の入力状態データを、当該第1のニューラルネットワーク対の第1及び第2ニューラルネットワークのそれぞれに入力する。
分割要素のサイズが第1のサイズに設定される場合、分割要素のサイズが第2のサイズに設定される場合よりも、配置空間及び被配置物が細かく分割される。したがって、入力状態データのデータ量が大きくなる。よって、第1のサイズに対応する第1のニューラルネットワーク対の第1及び第2ニューラルネットワークのそれぞれの入力素子の数は、第2のサイズに対応する第1のニューラルネットワーク対の第1及び第2ニューラルネットワークのそれぞれの入力素子の数よりも大きくなる。また、第1のサイズに対応する第1のニューラルネットワーク対が用いられた学習処理では、第2のサイズに対応する第1のニューラルネットワーク対が用いられた学習処理よりも、被配置物の1回の移動量(つまり、ステップs32aでの移動量及びステップs32bで移動量)が小さくなる。つまり、第1のサイズに対応する第1のニューラルネットワーク対が用いられた学習処理では、被配置物を細かく移動させることができる。分割要素のサイズによって、配置空間データ、部品データ及び入力状態データのデータ量が変化することから、分割要素のサイズは、配置空間データ、部品データ及び入力状態データの情報量あるいは解像度を示していると言える。
制御部2は、複数の第2のニューラルネットワーク対のそれぞれについて、当該第2のニューラルネットワーク対を用いた配置設計を行う。制御部2は、ある第2のニューラルネットワーク対を用いて配置設計を行う場合には、当該ある第2のニューラルネットワーク対に対応するサイズに分割要素が設定された場合の入力状態データを、当該ある第2のニューラルネットワーク対を構成する第3及び第4ニューラルネットワークのそれぞれに入力する。また制御部2は、分割要素のあるサイズに対応する第2のニューラルネットワーク対を用いた配置設計においては、当該第2のニューラルネットワーク対の第3及び第4ニューラルネットワークのNNパラメータとして、当該あるサイズに対応する第1のニューラルネットワーク対の第1及び第2ニューラルネットワークの学習済みNNパラメータをそれぞれ使用する。
例えば、分割要素の複数のサイズに、上述の第1のサイズ及び第2のサイズが含まれる場合を考える。制御部2は、第1のサイズに対応する第2のニューラルネットワーク対を用いた配置設計では、分割要素が第1のサイズに設定された場合の入力状態データを、上述のステップs51において、当該第2のニューラルネットワーク対の第3ニューラルネットワークに入力する。そして、当該第3ニューラルネットワークのNNパラメータとして、第1のサイズに対応する第1のニューラルネットワーク対の第1ニューラルネットワークの学習済みNNパラメータを使用する。また、制御部2は、上述のステップs55において、分割要素が第1のサイズに設定された場合の入力状態データを、当該第2のニューラルネットワーク対の第4ニューラルネットワークに入力する。そして、制御部2は、当該第4ニューラルネットワークのNNパラメータとして、第1のサイズに対応する第1のニューラルネットワーク対の第2ニューラルネットワークの学習済みNNパラメータを使用する。
同様に、制御部2は、第2のサイズに対応する第2のニューラルネットワーク対を用いた配置設計では、分割要素が第2のサイズに設定された場合の入力状態データを、当該第2のニューラルネットワーク対の第3及び第4ニューラルネットワークのそれぞれに入力する。そして、制御部2は、当該第3及び第4ニューラルネットワークのNNパラメータとして、第2のサイズに対応する第1のニューラルネットワーク対の第1及び第2ニューラルネットワークの学習済みNNパラメータをそれぞれ使用する。
上述の説明から理解できるように、分割要素のサイズが大きくなると、入力状態データのデータ量が減少する。したがって、分割要素のサイズを大きくすることによって、学習処理及び配置設計に必要な時間を減少させることができる。また、分割要素のサイズを大きくすることによって、配置設計が所定時間内に完了する可能性が増加する。
一方で、分割要素のサイズが大きくなると、学習処理及び配置設計での被配置部品の1回の移動量が大きくなる。そのため、配置設計において、複数の被配置部品の配置面積が大きくなる可能がある。
分割要素のサイズが複数用意される場合には、制御部2は、分割要素のサイズを小さくしながら配置設計を繰り返してもよい。言い換えれば、制御部2は、入力状態データの情報量(言い換えれば解像度)を大きくしながら配置設計を繰り返してもよい。図37はこの場合の制御部2の動作の一例を示すフローチャートである。
図37に示されるように、ステップs71において、制御部2は、分割要素を最大サイズに設定する。次にステップs72において、制御部2は、最大サイズに対応する第2のニューラルネットワーク対を用いた配置設計を行う。コンピュータ装置1は、ステップs72での配置設計の結果を、サーバ装置410を介して端末装置420に通知してもよい。この場合、端末装置420は通知された結果を表示してもよい。
次にステップs73において、制御部2は、分割要素のサイズを1段階小さくする。そしてステップs74において、制御部2は、設定されたサイズに対応する第2のニューラルネットワーク対を用いた配置設計を行う。コンピュータ装置1は、ステップs74での配置設計の結果を、サーバ装置410を介して端末装置420に通知してもよい。この場合、端末装置420は通知された結果を表示してもよい。
次にステップs75において、制御部2は、分割要素のサイズが最小サイズであるか否かを判断する。ステップs75においてYESと判定されると、処理が終了する。一方で、ステップs75においてNOと判定されると、ステップs73が再度実行されて、分割要素のサイズがさらに1段階小さくされる。その後、ステップs74が実行されて、設定されたサイズに対応する第2のニューラルネットワーク対を用いた配置設計が行われる。その後、制御部2は同様に動作する。
なお、制御部2は、ユーザの指示に応じて図37に示される処理を実行してもよい。ユーザは、例えば、入力部6を操作することによって、図37に示される処理の実行を制御部2に指示してもよい。また、端末装置420が表示する上述の画面500あるいは画面600に、図37に示される処理の実行を指示するための指示用チェックボックスを設けてもよい。この場合、指示用チェックボックスがチャックされた状態で開始ボタン560が操作されると、端末装置420から、図37に示される処理の実行指示が、サーバ装置410及び通信部4を通じて制御部2に通知される。制御部2は、実行指示が通知されると、図37に示される処理を実行する。
<第2の他の例>
2つの部品の組み合わせによって、当該2つの部品を一定距離以上あけて配置する必要がある。例えば、アンテナと金属物とは一定距離以上あけて配置する必要がある。また、ノイズの影響を受けやすい部品と、ノイズを発生しやすい部品とは、一定距離以上あけて配置する必要がある。また、熱に弱い部品と、熱を発生しやすい部品とは、一定距離以上あけて配置する必要がある。また、振動を発生する部品と、振動により悪影響を受けやすい部品とは、一定距離以上あけて配置する必要がある。
そこで、本例では、互いに離して配置すべき2つの設計対象部品の一方のサイズを本来の値よりも一時的に大きくして配置設計を行うことによって、配置設計において、当該2つの設計対象部品が互いに離れて自動配置される可能性を向上させる。以下に本例の配置設計について詳細に説明する。以下の説明では、互いに離して配置すべき2つの設計対象部品のそれぞれを離間部品と呼ぶことがある。また、互いに離して配置すべき2つの設計対象部品を第1離間部品及び第2離間部品とそれぞれ呼ぶことがある。
本例の配置設計では、制御部2は、第1離間部品を操作対象とする場合に、配置空間において配置が確定された第2離間部品が存在するときには、操作対象の第1離間部品の行動を決定した後、第1及び第2離間部品の一方のサイズを本来の値よりも大きくした状態で干渉判定を行う。制御部2は、第1離間部品と第2離間部品とを離す必要がある距離の分だけ、第1及び第2離間部品の一方のサイズを本来の値よりも大きくする。
例えば、操作対象の第1離間部品が第3操作対象部品である場合を考える。この場合、制御部2は、図32のステップs52の後、ステップs53において、第1離間部品あるいは第2離間部品の一方の部品のサイズを本来の値よりも大きくした状態での入力状態データを生成する。ステップs53では、サイズを本来の値よりも大きくした離間部品を表す部品データとしては、本来のサイズでの離間部品を構成する複数の分割要素に割り当てられたデータから成る配列データではなく、サイズを本来の値よりも大きくした場合の離間部品を構成する複数の分割要素に割り当てられたデータから成る配列データが使用される。
ステップs53の後、ステップs54において、制御部2は、ステップs53で生成した入力状態データ、つまり、第1離間部品あるいは第2離間部品の一方の部品のサイズを本来の値よりも大きくした状態での入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップs54においてNOと判定されると、ステップs59が実行されて、第1離間部品の配置が決定される。一方で、ステップs54においてYESと判定されると、制御部2は、サイズを変更した離間部品を本来のサイズに戻し、本来のサイズの離間部品を表す部品データを用いた入力状態データを生成する。そして、制御部2は、ステップs55において、当該入力状態データを第4ニューラルネットワークに入力する。以後、制御部2は同様に動作する。
図38は、離間部品を表す部品データ90の一例を示す図である。図38には、保持構造を備える離間部品を表す部品データ90が示されている。図38の左側には、本来のサイズに設定された離間部品を表す部品データ90が示されている。図38の右側には、サイズが本来の値よりも大きくされた離間部品を表す部品データ90が示されている。保持構造を備える離間部品のサイズを本来の値から大きくする場合には、被保持部品のサイズだけが大きくされる。したがって、図38に示されるように、サイズが本来の値よりも大きくされた離間部品を表す部品データ90では、保持構造を表す“1”のデータ領域のサイズは変化しておらず、被保持部品を表す“2”のデータ領域が大きくなっている。制御部2は、ステップs53において、図38の右側に示される部品データ90を用いて入力状態データを生成する。そして、制御部2は、ステップs54においてYESと判定されると、図38の左側に示される部品データ90を用いて入力状態データを生成する。
なお制御部2は、ステップs53において、第1及び第2離間部品の両方のサイズを本来の値よりも大きくした状態での入力状態データを生成してもよい。
また、操作対象の第1離間部品が第4操作対象部品である場合には、ステップs56の後、ステップs57において、制御部2は、第1離間部品あるいは第2離間部品の一方の部品のサイズを本来の値よりも大きくした状態での入力状態データを生成する。そして、ステップs58において、制御部2は、ステップs57で生成した入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップs58においてYESと判定されると、制御部2は、サイズを変更した離間部品を本来のサイズに戻し、本来のサイズの離間部品を表す部品データを用いた入力状態データを生成する。そして、制御部2は、ステップs51において、当該入力状態データを第3ニューラルネットワークに入力する。以後、制御部2は同様に動作する。なお、制御部2は、ステップs57において、第1及び第2離間部品の両方のサイズを本来の値よりも大きくした状態での入力状態データを生成してもよい。
以上のように、本例では、制御部2は、配置空間において第1及び第2離間部品が存在する状態において、第1離間部品の配置を決定する場合には、第1及び第2離間部品の少なくとも一方のサイズを本来の値から一時的に大きくしている。これにより、配置設計において、第1及び第2離間部品が互いに離れて自動配置される可能性を向上させることができる。本例では、離間部品のサイズを大きくするといった簡単な処理で、2つの離間部品が互いに離れて配置される可能性を向上させることができることから、配置設計を簡素化することができる。
なお、配置空間において配置が確定された第2離間部品が複数存在する場合には、制御部2は、操作対象としての第1離間部品のサイズを大きくするか、あるいは、複数の第2離間部品のそれぞれのサイズを大きくした状態で干渉判定を行う。
<第3の他の例>
ケース内に配置される部品によっては、製造上の問題で、当該部品の周囲に他の部品を配置できないことがある。例えば、ケースがフロントケース及びバックケースで構成されている場合を考える。この場合、バックケースに一体成形される、USB等のコネクタの挿入口を有する成形構造については、成形で使用する金型のスライド領域を確保するために、当該成形構造の周囲の特定の空間には、同じバックケースに一体成形されるボス等の部品を配置することができないことがある。
そこで、本例では、設計対象部品の周囲の所定空間に他の設計対象部品を配置することができない場合に、当該所定空間に当該他の設計対象部品が配置されない可能性を向上することが可能な配置設計について説明する。以下の説明では、その周囲の所定空間に他の操作対象部品を配置できない操作対象部品を第1特定部品と呼ぶことがある。また、第1特定部品の周囲の所定空間に配置することができない操作対象部品を不可部品と呼ぶことがある。また、単に、第1特定部品の周囲の所定空間と言えば、不可部品を配置することができない、第1特定部品の周囲の所定空間を意味する。第1特定部品としては、例えば、バックケースに一体成形される、USBのコネクタの挿入口を有する成形構造が考えられる。また、不可部品としては、例えば、バックケースに一体成形されるボスが考えられる。なお、フロントケースに一体成形されるボスについては、バックケースに一体成形される、USBのコネクタの挿入口を有する成形構造の周囲に配置することは可能である。
本例の配置設計では、制御部2は、配置空間において第1特定部品及び不可部品が存在する状態で、第1特定部品あるいは不可部品の配置を決定する場合、第1特定部品の周囲の所定空間の各分割要素に対して“2”を割り当てる。つまり、制御部2は、第1特定部品の周囲の所定空間の各分割要素に対して、他の物体と重なった場合に干渉と扱われる部品の分割要素に割り当てられる値と同じ値を割り当てる。
例えば、第1特定部品及び不可部品の一方の部品についての配置空間での配置が確定している状態において、第1特定部品及び不可部品の他方の部品が第3操作対象部品である場合を考える。この場合、制御部2は、ステップs53において、第1特定部品を表す部品データに対して、第1特定部品の周囲の所定空間を表す特定空間データを一時的に含める。具体的には、制御部2は、第1特定部品の各分割要素に割り当てられたデータと、その周囲の所定空間の各分割要素に割り当てられたデータとから成る3次元配列データを、一時的に、第1特定部品を表す部品データとして使用する。制御部2は、第1特定部品の周囲の所定空間の各分割要素に対しては“2”を割り当てる。以後、第1特定部品の周囲の所定空間を表す特定空間データを含む、第1特定部品を表す部品データを、第1変形部品データと呼ぶことがある。
図39は、第1変形部品データ90aの一例を示す図である。図39の左側には、第1特定部品の周囲の所定空間を表す特定空間データを含まない、本来の部品データ90が示されている。図39の右側には、図39の左側の部品データ90に対応する第1変形部品データ90aが示されている。第1変形部品データ90aには、本来の部品データ90と同じ構成のデータ領域91と、第1特定部品の周囲の所定空間を表す特定空間データ92とが含まれる。特定空間データ92の各値は“2”に設定されている。
ステップs53において、制御部2は、第1特定部品についての第1変形部品データを生成すると、第1特定部品を表す本来の部品データの代わりに第1変形部品データを用いて、現在の配置空間における、第1特定部品及び不可部品を含む複数の操作対象部品の状態を表す入力状態データを生成する。なお、不可部品を表す部品データについては本来のデータが使用される。ステップs53の後、ステップs54において、制御部2は、ステップs53で生成した入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップs54においてNOと判定されると、ステップs59が実行されて、第1特定部品品及び不可部品の他の部品の配置が決定される。一方で、ステップs54においてYESと判定されると、制御部2は、第1特定部品を表す本来の部品データを用いて入力状態データを生成する。そして、制御部2は、ステップs55において、当該入力状態データを第4ニューラルネットワークに入力する。以後、制御部2は同様に動作する。
なお、第1特定部品及び不可部品の他方の部品が第4操作対象部品である場合には、ステップs57において、制御部2は、第1特定部品についての第1変形部品データを生成する。そして、制御部2は、第1特定部品を表す本来の部品データの代わりに第1変形部品データを用いて入力状態データを生成する。ステップs57の後、ステップs58において、制御部2は、ステップs57で生成した入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップs58においてYESと判定されると、制御部2は、第1特定部品を表す本来の部品データを用いて入力状態データを生成する。そして、制御部2は、ステップs51において、当該入力状態データを第3ニューラルネットワークに入力する。以後、制御部2は同様に動作する。
以上のように、本例では、制御部2は、配置空間において第1特定部品及び不可部品が存在する状態で、第1特定部品あるいは不可部品の配置を決定するとき場合には、第1特定部品の周囲の所定空間の各分割要素に対して、他の物体と重なった場合に干渉と扱われる部品の分割要素に割り当てられる値と同じ値を割り当てる。これにより、配置設計において、第1特定部品の周囲の所定空間に不可部品が自動配置される可能性を低減することができる。本例では、第1特定部品の周囲の所定空間の各分割要素に対して、被保持部品の分割要素に割り当てられる値と同じ値を割り当てるという簡単な処理で、第1特定部品の周囲の所定空間に不可部品が配置される可能性を低減することができる。よって、配置設計を簡素化することができる。
<第4の他の例>
制御部2は、一般ユーザから指示される、設計対象部品の配置条件に基づいて、配置設計を行ってもよい。一般ユーザは、例えば、入力部6を操作することによって、配置条件を制御部2に指定することができる。また、一般ユーザは、端末装置420を利用して、コンピュータ装置1に配置条件を指定してもよい。
例えば、ユーザが、ある設計対象部品を配置空間の特定の場所に配置するという配置条件を指定する場合を考える。この場合、制御部2は、配置設計を開始する時点において、対象の設計対象部品を、配置空間において、ユーザによって指定された特定の場所に固定配置する。そして、制御部2は、対象の設計対象部品を特定の場所に固定配置した状態で配置設計を開始する。
他の例として、ユーザが、配置空間の特定の場所にはいずれの設計対象部品についても配置しないという配置条件を指定する場合を考える。この場合、制御部2は、配置設計を開始する時点において、対象空間データにおいて、設計対象部品を配置しない場所として指定された場所に対応するデータ領域の各値を“2”に設定する。そして、制御部は、このように変更された対象空間データを用いて配置設計を開始する。これにより、配置設計において、指定された場所に操作対象部品が自動配置される可能性が低減する。
<第5の他の例>
被配置部品によっては、配置設計において、その一部が配置空間外に位置することが許容されることがある。例えば、上述の図30に示されるネジボス360の保持構造362については、設計段階において、ケースの外側の余分な部分をカットすることができる。そのため、配置設計において、保持構造362の一部は配置空間外に位置することが許容されることがある。
図40は、ネジボス360の断面構造の一例を示す図である。図40に示されるように、ネジボス360の保持構造362の第1部分3621は、ネジ361の軸361bが螺合する第3部分3623と、軸361bが螺合しない第4部分3624とを備える。保持構造362の第2部分3622は、ネジ361の頭361aを受ける第5部分3625と、ネジ361の周方向においてネジ361の頭361aを取り囲む第6部分3626とを備える。
ネジボス360の保持構造362においては、少なくとも第3部分3623及び第5部分3625が存在すれば、ネジ361を保持構造362に取り付けることができる。したがって、設計段階において、第4部分3624及び第6部分3626がケースの外側に存在する場合、第4部分3624及び第6部分3626のケースの外側部分をカットすることができる。そのため、ネジボス360の第4部分3624及び第6部分3626が、配置設計において配置空間外に位置することが許容されることがある。以後、ネジボス360の第4部分3624及び第6部分3626のように、被配置物が有する、配置空間外に位置することが許容される部分を、外配置許容部分と呼ぶことがある。
本例の学習処理及び配置設計では、被配置部品が有する外配置許容部分が配置空間外に存在する場合には、干渉と扱われない。これにより、被配置部品の一部が配置空間外に位置することが許容されるという配置条件が、「干渉」という共通の基準で自動設計処理において考慮されるようになる。よって、自動設計処理を簡素化することができる。
本例では、外配置許可部分を有する被配置部品を表す部品データに対して、被配置部品のどの部分が外配置許容部分であるかを特定するための特定データが付加される。制御部2は、学習処理及び配置設計において、外配置許可部分を有する被配置部品を操作対象とする場合、入力状態データの生成に、当該被配置部品についての特定データを使用する。以下に、本例の学習処理及び設計処理について詳細に説明する。以後、外配置許可部分を有する被配置部品を第2特定部品と呼ぶことがある。
本例の学習処理及び配置設計では、第2特定部品の外配置許容部分が配置空間外に位置する場合に入力状態データを生成する場合には、制御部2は、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“1”から“0”に変更した状態で、第2特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成する。これにより、第2特定部品の外配置許容部分が配置空間外に位置する場合に、干渉と扱われなくなる。制御部2は、特定データに基づいて、第2特定部品の外配置許容部分が配置空間外に位置するか否かを判定する。そして、制御部2は、第2特定部品の外配置許容部分が配置空間外に位置する場合には、外配置許可部分のうち、配置空間外に位置する部分を、特定データに基づいて特定する。
例えば、学習処理において、第2特定部品が第1操作対象部品である場合を考える。この場合、制御部2は、ステップs33aにおいて、第2特定部品の外配置許容部分が配置空間外に位置する場合には、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“1”から“0”に変更した状態で、第2特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成して入力状態データを生成する。その後、ステップs33aで生成された入力状態データが用いられてステップs34a〜37a及びs31bが実行される。以後、制御部2は同様に動作する。
また、学習処理において、配置空間での第2特定部品の配置が確定している場合も同様に、制御部2は、第2特定部品の外配置許可部分が配置空間外に位置する場合には、ステップs33aにおいて、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“1”から“0”に変更した状態で、第2特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成して入力状態データを生成する。
配置設計についても同様である。例えば、配置設計において、第2特定部品が第3操作対象部品である場合を考える。この場合、制御部2は、ステップs53において、第2特定部品の外配置許容部分が配置空間外に位置する場合には、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“1”から“0”に変更した状態で、第2特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成して入力状態データを生成する。その後、ステップs53で生成された入力状態データが用いられてステップs54及びs55が実行される。以後、制御部2は同様に動作する。
なお、第2特定部品は、図40に示されるネジボス360以外であってもよい。また、管理者ユーザが、外配置許可部分を有する被配置部品をコンピュータ装置1に登録できるようにしてもよい。この場合、管理者ユーザは、例えば、入力部6を操作して、外配置許可部分を有する被配置部品をコンピュータ装置1に登録してもよい。また管理者ユーザは、端末装置420を利用して、外配置許可部分を有する被配置部品をコンピュータ装置1に登録してもよい。
図41は、管理者ユーザが、外配置許可部分を有するネジボス360を、端末装置420を利用してコンピュータ装置1に登録する場合に端末装置420に表示される画面700の一例を示す図である。管理者ユーザは、画面700を利用して、外配置許可部分を有するネジボス360をコンピュータ装置1に登録することができる。
図41に示されるように、画面700には、入力欄710及び登録ボタン720が含まれる。入力欄710には、第1入力欄711、第2入力欄712、第3入力欄713及び表示欄714が含まれる。
表示欄714には、ネジボス360の各部位に割り当てられた記号が示されている。表示欄714中の“A”、“B”、“C”、“D”及び“E”は、それぞれ、ネジボス360のネジ361、第4部分3624、第3部分3623、第5部分3625及び第6部分3626を示している。
第1入力欄711は、管理者ユーザが、ネジボス360の各部位について、当該部位を外配置許可部分とするか否かを選択するための入力欄である。管理者ユーザは、第1入力欄711を操作することによって、ネジボス360の各部位について、当該部位を外配置許可部分とするか否かを選択することができる。第1入力欄711中の“〇”は、その左側の記号が割り当てられた部位が、外配置許可部分として指定されていることを示している。言い換えれば、第1入力欄711中の“〇”は、その左側の記号が割り当てられた部位がケース外に存在しているときに、当該部品についてのケース外の部分をカットすることができることを示している。第1入力欄711中の“×”は、その左隣の記号が割り当てられた部位が、外配置許可部分として指定されていないことを示している。
第2入力欄712は、管理者ユーザが、ネジボス360の各部位について、当該部位をフロントケースに対応付けるか、バックケースに対応付けるかを選択するための入力欄である。管理者ユーザは、第2入力欄712を操作することによって、ネジボス360の各部位について、当該部位をフロントケースに対応付けるか、バックケースに対応付けるかを選択することができる。バックケースに対応付けられた部位は、バックケースと一体成形される。フロントケースに対応付けられた部位は、フロントケースと一体成形される。第2入力欄712中の“Case Front”は、その左隣に位置する、表示欄714中の記号が割り当てられた部位に対して、フロントケースが対応付けられていることを意味する。第2入力欄712中の“Case Back”は、その左隣に位置する、表示欄714中の記号が割り当てられた部位に対して、バックケースが対応付けられていることを意味する。
第3入力欄713は、管理者ユーザが、ネジボス360の各外配置許可部分について、CADデータ上のどの位置に外配置許可部分を割り当てるかを指定するための入力欄である。管理者ユーザは、第3入力欄713を操作することによって、ネジボス360の各外配置許可部分について、CADデータ上のどの位置に外配置許可部分を割り当てるかを指定することができる。第3入力欄713中の“D165”及び“D170”は、CADデータ上での位置を表すパラメータである。
登録ボタン720は、管理者ユーザが入力欄710を使用して端末装置420に入力したデータを、コンピュータ装置1に登録するためのボタンである。登録ボタン720が操作されると、管理者ユーザが入力した、ネジボス360に関するデータが、端末装置420から、サーバ装置410を通じてコンピュータ装置1に入力される。コンピュータ装置1では、端末装置420からのデータが通信部4を通じて制御部2に入力される。制御部2は、入力されたネジボス360に関するデータを記憶部3に記憶する。これにより、外配置許可部分を有するネジボス360がコンピュータ装置1に登録される。制御部2は、端末装置420から受け取ったネジボス360に関するデータに基づいて、ネジボス360についての上述の特定データを生成することができる。コンピュータ装置1に外配置許可部分を有するネジボス360が登録されると、一般ユーザは、例えば、端末装置420に表示される上述の画面600あるいは画面600を利用して、外配置許可部分を有するネジボス360を設計対象部品として指定することができる。なお、画面700は、コンピュータ装置1の表示部5に表示されてもよい。
<第6の他の例>
入力状態データには、入力合成データだけではなく、入力合成データ以外のデータが含まれてもよい。入力状態データには、例えば、入力合成データと、配置空間での被配置物単体の状態を表す単体状態データとが含まれてもよい。単体状態データには、被配置物全体についての配置空間での状態を表すデータが含まれてもよいし、被配置物の一部についての配置空間での状態を表すデータが含まれてもよいし。以下に、学習処理及び配置設計において、第2特定部品、つまり外配置許可部分を有する被配置部品が使用される場合を例に挙げて、本例について説明する。本例では、第2特定部品と言えば、上述のネジボス360のように、外配置許可部分を含む保持構造を有する被配置部品を意味する。また本例では、保持構造に含まれる外配置許可部分を保持部分(許可)と呼ぶことがある。また本例では、保持構造における、外配置許可部分以外の部分を、保持部分(不許可)と呼ぶことがある。
例えば、学習処理において、第2特定部品が操作対象とされている場合を考える。この場合、制御部2は、図16のステップs23において、入力合成データと、配置空間での第2特定部品単体の状態を表す単体状態データとを含む入力状態データを生成する。
単体状態データには、例えば、第2特定部品の保持構造の保持部分(不許可)についての配置空間での状態を表す第1単体状態データが含まれる。さらに、単体状態データには、第2特定部品の保持構造の保持部分(許可)についての配置空間での状態を表す第2単体状態データが含まれる。
制御部2は、保持部分(不許可)を表す第1形状データを、当該保持部分(不許可)の配置空間での位置に応じて対象空間データに対して合成し、それによって得られる3次元配列データを、第1単体状態データとする。このとき、制御部2は、対象空間データの各値を例外的に“0”に設定し、各値が“0”に設定された対象空間データに対して第1形状データを合成する。制御部2は、保持部分(不許可)の各分割要素に対して“1”を割り当てることによって得られる配列データを第1形状データとする。第1形状データは、第2特定部分を表す部品データのうち、保持部分(不許可)を表すデータ領域と同じである。
また制御部2は、保持部分(許可)(つまり、外配置許可部分)を表す第2形状データを、当該保持部分(許可)の配置空間での位置に応じて対象空間データに対して合成し、それによって得られる3次元配列データを、第2単体状態データとする。このとき、制御部2は、対象空間データの各値を例外的に“0”に設定し、各値が“0”に設定された対象空間データに対して第2単体形状データを合成する。制御部2は、保持部分(許可)の各分割要素に対して“1”を割り当てることによって得られる配列データを第2形状データとする。第2単体形状データは、第2特定部分を表す部品データのうち、保持部分(許可)を表すデータ領域と同じである。
図42は、各値が例外的に“0”に設定された対象空間データ100Aの一例を示す図である。図43は、第2特定部品を表す部品データ90と、当該第2特定部品の保持部分(不許可)を表す第1形状データ901と、当該第2特定部品の保持部分(許可)を表す第2形状データ902の一例を示す図である。図43に示されるように、部品データ90のうち、保持部分(不許可)を表すデータ領域93が、第1形状データ901となっている。また、部品データ90のうち、保持部分(許可)を表すデータ領域94が、第2形状データ902となっている。
例えば、第2特定部品65が、対象空間50において、図44のように配置されている場合を考える。この場合、図42及び図43の例においては、第1単体状態データ151は図45のようになり、第2単体状態データ152は図46のようになる。図42に示される対象空間データ100Aにおいて、第2特定部品65の保持部分(不許可)が対象空間50で占める領域に対応するデータ領域の各値を、“0”から“1”に変更したものが、第1単体状態データ151となる。また、対象空間データ100Aにおいて、第2特定部品65の保持部分(許可)が対象空間50で占める領域に対応するデータ領域の各値を、“0”から“1”に変更したものが、第2単体状態データ152となる。
図17に示されるステップs31aでは、ステップs23で生成された、入力合成データ及び単体状態データを含む入力状態データが第1ニューラルネットワークに入力される。本例でのニューラルネットワーク10の入力素子の数は、入力合成データを構成する値の数と、第1単体状態データを構成する値の数と、第2単体状態データを構成する値の数とを足し合わせた数となる。つまり、ニューラルネットワーク10の入力素子の数は、対象空間データを構成する値の数の3倍となる。
ステップs31aの後、ステップs32aが実行されると、ステップs32aにおいて入力状態データが更新される。このとき、ステップs32aにおいて第2特定部品が移動させられると、その移動に応じて、第1及び第2単体状態データが更新される。その後のステップs31bでは、ステップs33aで更新された入力状態データが第2ニューラルネットワークに入力される。以後、制御部2は同様に動作する。
学習処理において、第2特定部品が操作対象とされていない場合であって、第2特定部品についての配置空間での配置が確定している場合には、ステップs33a及び33bでは、配置が固定された第2特定部品についての配置空間での状態を表す単体状態データが生成される。したがって、第2特定部品についての配置空間での配置が確定している場合、ステップs33a及びステップs33bのそれぞれでは、常に同じ単体状態データが生成される。
また学習処理において、第2特定部品が操作対象とされていない場合であって、第2特定部品についての配置空間での配置が確定していない場合には、つまり、配置空間に第2特定部品が存在しない場合には、ステップs23、ステップs33a及びステップs33bにおいて、すべての値が“0”に設定された第1単体状態データ及び第2単体状態データが生成される。
配置設計についても同様である。例えば、配置設計において、第2特定部品が操作対象である場合を考える。この場合、制御部2は、図31のステップs43において、入力合成データと、第1単体状態データ及び第2単体状態データを含む入力状態データを生成する。そして、制御部2は、図32に示されるステップs51において、ステップs43で生成した、入力合成データ及び単体状態データを含む入力状態データを第3ニューラルネットワークに入力する。ステップs51の後、ステップs52が実行されると、ステップs53において入力状態データが更新される。このとき、ステップs51において第2特定部品が移動させられていると、その移動に応じて、第1及び第2単体状態データが更新される。その後のステップs55では、ステップs53で更新された入力状態データが第4ニューラルネットワークに入力される。以後、制御部2は同様に動作する。配置設計において、配置空間に第2特定部品が存在しない場合には、すべての値が“0”に設定された第1単体状態データ及び第2単体状態データが使用される。
このように、入力状態データに、入力合成データと、配置空間での被配置物単体の状態を表す単体状態データとが含まれる場合には、入力状態データによって、配置空間での複数の被配置物の状態をより詳細に表現することができる。よって、学習処理をより適切に実行することができる。その結果、配置設計に必要な時間をより短くすることができる。
なお、単体状態データには、被配置部品全体についての配置空間での状態を表す第3単体状態データが含まれてもよい。この場合、制御部2は、例えば、被配置部品を表す部品データを、当該被配置部品の配置空間での位置に応じて対象空間データ100Aに対して合成することによって得られる3次元配列データを、第3単体状態データとする。例えば、上述の図44のように第2特定部品65が配置されている場合、第2特定部品65についての第3単体状態データ153は図47のようになる。
<その他の例>
上記の例では、学習処理と配置設計とが、同じコンピュータ装置で実行されていたが、互いに異なるコンピュータ装置で実行されてもよい。この場合には、学習処理を実行するコンピュータ装置で生成された学習済みNNパラメータが、配置設計を行うコンピュータ装置に入力される。
また上記の例では、電子機器の部品に関する配置設計について説明したが、上記の開示は、電子機器の部品以外の物体に関する配置設計についても適用することができる。例えば、上記の開示は、半導体回路の回路配置設計についても適用することができる。また、上記の開示は、箱の中に複数のお菓子を自動的に配置する場合にも適用することができる。また、家の各部屋を被配置物と見なすことによって、上記の開示は、家の間取り設計にも適用することができる。
以上のように、コンピュータ装置1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この開示がそれに限定されるものではない。また、上述した各種例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の例が、この開示の範囲から外れることなく想定され得るものと解される。