(57)【特許請求の範囲】
【請求項１】
装置で実行される学習方法であって、
配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、前記配置空間において複数の被配置物を仮想的に移動させることによって、前記配置空間での複数の被配置物の配置を自動的に決定する配置設計を行うシステムに関して、前記配置空間において複数の第１被配置物を仮想的に移動させ、前記配置空間において前記第１被配置物が他の物体と干渉するか否かに応じて報酬を決定し、前記報酬に基づいて前記関係を機械学習する学習処理を行う、学習方法。
【請求項２】
請求項１に記載の学習方法であって、
前記配置空間は三次元空間である、学習方法。
【請求項３】
請求項１及び請求項２のいずれか一つに記載の学習方法であって、
前記配置空間での前記複数の第１被配置物の状態を表す第１状態データに基づいて、前記配置空間において前記第１被配置物が他の物体と干渉するか否かを判断する、学習方法。
【請求項４】
請求項３に記載の学習方法であって、
前記第１状態データは、ＣＡＤデータに基づくデータである、学習方法。
【請求項５】
請求項３及び請求項４のいずれか一つに記載の学習方法であって、
前記配置空間を含む第１空間及び前記第１被配置物のそれぞれが複数の要素に分割され、
前記学習処理においては、前記第１空間の各要素に第１データが割り当てられることによって得られる、前記第１空間を表す第１配列データと、前記第１被配置物の各要素に第２データが割り当てられることによって得られる、前記第１被配置物を表す第２配列データとが使用され、
前記第１状態データは、前記複数の第１被配置物をそれぞれ表す複数の第２配列データのそれぞれが、当該第２配列データに対応する前記第１被配置物の前記配置空間での位置に応じて、前記第１配列データに対して合成された合成配列データを含む、学習方法。
【請求項６】
請求項５に記載の学習方法であって、
前記第１状態データは、前記合成配列データと、前記配置空間での前記第１被配置物単体の状態を表す単体状態データとを含む、学習方法。
【請求項７】
請求項１から請求項６のいずれか一つに記載の学習方法であって、
前記複数の第１被配置物の少なくとも一部は、それ同士が重なったとしても干渉と扱われない第１部分と、他の物体と重なった場合に干渉と扱われる第２部分とを有する、学習方法。
【請求項８】
請求項７に記載の学習方法であって、
前記配置空間は、当該配置空間を規定する空間規定物体を含み、
前記空間規定物体は、前記第１部分と重なったとしても干渉と扱われない第３部分を有する、学習方法。
【請求項９】
請求項１から請求項８のいずれか一つに記載の学習方法であって、
前記複数の第１被配置物は、前記配置空間外に存在する場合に干渉と扱われる第４部分を有する前記第１被配置物を含む、学習方法。
【請求項１０】
請求項９に記載の学習方法であって、
前記複数の第１被配置物は、前記第４部分と、前記配置空間外に存在する場合に干渉と扱われない第５部分とを有する前記第１被配置物を含む、学習方法。
【請求項１１】
請求項１に記載の学習方法であって、
前記配置空間を含む第１空間及び前記第１被配置物のそれぞれが複数の要素に分割され、
前記学習処理においては、前記第１空間の各要素に第１データが割り当てられることによって得られる、前記第１空間を表す第１配列データと、前記第１被配置物の各要素に第２データが割り当てられることによって得られる、前記第１被配置物を表す第２配列データとが使用され、
前記複数の第１被配置物をそれぞれ表す複数の第２配列データのそれぞれが、当該第２配列データに対応する前記第１被配置物の前記配置空間での位置に応じて、前記第１配列データに対して合成された合成配列データに基づいて、前記配置空間において前記第１被配置物が他の物体と干渉するか否かを判定する、学習方法。
【請求項１２】
請求項１１に記載の学習方法であって、
前記複数の第１被配置物の少なくとも一部は、それ同士が重なったとしても干渉と扱われない第１部分と、他の物体と重なった場合に干渉と扱われる第２部分とを有し、
前記第１部分の前記要素に対しては、第１の値が前記第２データとして割り当てられ、
前記第２部分の前記要素に対しては、前記第１の値とは異なる第２の値が前記第２データとして割り当てられる、学習方法。
【請求項１３】
請求項１２に記載の学習方法であって、
前記配置空間は、当該配置空間を規定する空間規定物体を含み、
前記空間規定物体は、前記第１部分と重なったとしても干渉と扱われない第３部分を有し、
前記第３部分の前記要素に対して、前記第１部分と同じ前記第１の値が前記第１データとして割り当てられる、学習方法。
【請求項１４】
請求項１２及び請求項１３のいずれか一つに記載の学習方法であって、
前記第１空間に含まれる、前記配置空間の周囲の第２空間の前記要素に対して、前記第２部分と同じ前記第２の値が前記第１データとして割り当てられる、学習方法。
【請求項１５】
装置で実行される学習方法であって、
配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、前記配置空間において複数の被配置物を仮想的に移動させることによって、前記配置空間での複数の被配置物の配置を自動的に決定する配置設計を行うシステムに関して、前記配置空間において複数の第１被配置物を仮想的に移動させながら、前記配置空間での前記複数の第１被配置物の状態を表す第１状態データに基づいて前記関係を学習する学習処理を行い、
前記配置空間を含む第１空間及び前記第１被配置物のそれぞれが複数の要素に分割され、
前記学習処理においては、前記第１空間の各要素に第１データが割り当てられることによって得られる、前記第１空間を表す第１配列データと、前記第１被配置物の各要素に第２データが割り当てられることによって得られる、前記第１被配置物を表す第２配列データとが使用され、
前記第１状態データは、前記複数の第１被配置物をそれぞれ表す複数の第２配列データのそれぞれが、当該第２配列データに対応する前記第１被配置物の前記配置空間での位置に応じて、前記第１配列データに対して合成された合成配列データを含む、学習方法。
【請求項１６】
請求項５及び請求項１１から請求項１５のいずれか一つに記載の学習方法であって、
前記要素が第１の大きさに設定されたときの前記合成配列データに基づいた前記学習処理である第１学習処理と、前記要素が、前記第１の大きさとは異なる第２の大きさに設定されたときの前記合成配列データに基づいた前記学習処理である第２学習処理とを行う、学習方法。
【請求項１７】
請求項１から請求項１６のいずれか一つに記載の学習方法をコンピュータ装置に実行させるための学習プログラム。
【請求項１８】
請求項１から請求項１６のいずれか一つに記載の学習方法を実行する学習装置。
【請求項１９】
装置で実行される自動配置設計方法であって、
請求項１から請求項１５のいずれか一つに記載の学習方法で学習された前記関係に基づいて、前記配置空間において複数の第２被配置物を仮想的に移動させることによって、前記配置空間での前記複数の第２被配置物の配置を自動的に決定する配置設計を行い、
前記配置空間についての複数種類の大きさのそれぞれについて、前記配置空間での前記複数の第２被配置物の配置を決定する、自動配置設計方法。
【請求項２０】
装置で実行される自動配置設計方法であって、
請求項１６に記載の学習方法での前記第１学習処理によって学習された前記関係に基づいて、前記配置空間において複数の第２被配置物を仮想的に移動させることによって、前記配置空間での前記複数の第２被配置物の配置を自動的に決定する第１配置設計と、
請求項１６に記載の学習方法での前記第２学習処理によって学習された前記関係に基づいて、前記配置空間において複数の第２被配置物を仮想的に移動させることによって、前記配置空間での前記複数の第２被配置物の配置を自動的に決定する第２配置設計と
を行う、自動配置設計方法。
【請求項２１】
装置で実行される自動配置設計方法であって、
請求項１に記載の学習方法で学習された前記関係に基づいて、前記配置空間において複数の第２被配置物を仮想的に移動させることによって、前記複数の第２被配置物のそれぞれが他の物体と干渉しないように前記配置空間での前記複数の第２被配置物の配置を自動的に決定する配置設計を行い、
前記配置空間を含む第１空間及び前記第２被配置物のそれぞれが複数の要素に分割され、
前記配置設計では、前記第１空間の各要素に第１データが割り当てられることによって得られる、前記第１空間を表す第１配列データと、前記第２被配置物の各要素に第２データが割り当てられることによって得られる、前記第２被配置物を表す第２配列データとが使用され、
前記複数の第２被配置物をそれぞれ表す複数の第２配列データのそれぞれが、当該第２配列データに対応する前記第２被配置物の前記配置空間での位置に応じて、前記第１配列データに対して合成された合成配列データに基づいて、前記配置空間において前記第２被配置物が他の物体と干渉するか否かを判定する、自動配置設計方法。
【請求項２２】
請求項２１に記載の自動配置設計方法であって、
前記複数の第２被配置物の少なくとも一部は、それ同士が重なったとしても干渉と扱われない第１部分と、他の物体と重なった場合に干渉と扱われる第２部分とを有し、
前記第１部分の前記要素に対しては、第１の値が前記第２データとして割り当てられ、
前記第２部分の前記要素に対しては、前記第１の値とは異なる第２の値が前記第２データとして割り当てられる、自動配置設計方法。
【請求項２３】
請求項２２に記載の自動配置設計方法であって、
前記配置空間は、当該配置空間を規定する空間規定物体を含み、
前記空間規定物体は、前記第１部分と重なったとしても干渉と扱われない第３部分を有し、
前記第３部分の前記要素に対して、前記第１部分と同じ前記第１の値が前記第１データとして割り当てられる、自動配置設計方法。
【請求項２４】
請求項２２及び請求項２３のいずれか一つに記載の自動配置設計方法であって、
前記第１空間に含まれる、前記配置空間の周囲の第２空間の前記要素に対して、前記第２部分と同じ前記第２の値が前記第１データとして割り当てられる、自動配置設計方法。
【請求項２５】
請求項２２から請求項２４のいずれか一つに記載の自動配置設計方法であって、
前記複数の第２被配置物は、第３被配置物と、当該第３被配置物の周囲の第３空間に配置できない第４被配置物とを含み、
前記配置空間において前記第３及び第４被配置物が存在する状態において、前記第３被配置物あるいは前記第４被配置物の配置を決定する場合には、前記第３空間の前記要素に対して、前記第２部分と同じ前記第２の値を割り当てる、自動配置設計方法。
【請求項２６】
装置で実行される自動配置設計方法であって、
配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、前記配置空間において複数の被配置物を仮想的に移動させることによって、前記配置空間での複数の被配置物の配置を自動的に決定する配置設計を行うシステムに関して、前記配置空間において複数の第１被配置物を仮想的に移動させながら機械学習させた前記関係に基づいて、前記配置空間において複数の第２被配置物を仮想的に移動させることによって、前記配置空間についての複数種類の大きさのそれぞれについて、前記配置空間での前記複数の第２被配置物の配置を自動的に決定する配置設計を行う、自動配置設計方法。
【請求項２７】
請求項１９から請求項２６のいずれか一つに記載の自動配置設計方法をコンピュータ装置に実行させるための自動配置設計プログラム。
【請求項２８】
請求項１９から請求項２６のいずれか一つに記載の自動配置設計方法を実行する自動配置設計装置。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、日本国出願２０１９−０１３２７４号（２０１９年１月２９日出願）の優先権を主張するものであり、当該出願の開示全体を、ここに参照のために取り込む。
【技術分野】
【０００２】
本開示は、被配置物の配置設計に関する。
【背景技術】
【０００３】
従来、部品配置設計に関する技術が提案されている。
【発明の概要】
【０００４】
学習方法、学習プログラム、学習装置、自動配置設計方法、自動配置設計プログラム及び自動配置設計装置が開示される。一の実施の形態では、学習方法は、装置で実行される学習方法である。学習方法は、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、配置空間において複数の被配置物を仮想的に移動させることによって、配置空間での複数の被配置物の配置を自動的に決定する配置設計を行うシステムに関する学習方法である。学習方法は、配置空間において複数の第１被配置物を仮想的に移動させながら当該関係を機械学習する学習処理を行う。
【０００５】
また、一の実施の形態では、学習プログラムは、上記の学習方法をコンピュータ装置に実行させるためのプログラムである。
【０００６】
また、一の実施の形態では、学習装置は、上記の学習方法を実行する。
【０００７】
また、一の実施の形態では、自動配置設計方法は、上記の学習方法で学習された上記の関係に基づいて、配置空間において複数の第２被配置物を仮想的に移動させることによって、配置空間での複数の第２被配置物の配置を自動的に決定する配置設計を行う。
【０００８】
また、一の実施の形態では、自動配置設計プログラムは、上記の自動配置設計方法をコンピュータ装置に実行させるためのプログラムである。
【０００９】
また、一の実施の形態では、自動配置設計装置は、上記の自動配置設計方法を実行する。
【図面の簡単な説明】
【００１０】
【図１】コンピュータ装置の構成の一例を示す図である。
【図２】ニューラルネットワークの構成の一例を示す図である。
【図３】観測空間の一例を示す図である。
【図４】被配置物が複数の要素に分割される様子の一例を示す図である。
【図５】対象空間の一例を示す図である。
【図６】被配置物の一例を示す図である。
【図７】部品データの一例を示す図である。
【図８】対象空間データの一例を示す図である。
【図９】コンピュータ装置の動作の一例を示すフローチャートである。
【図１０】配置空間に被配置物が配置されている様子の一例を示す図である。
【図１１】対象空間データの一例を示す図である。
【図１２】合成済み対象空間データの一例を示す図である。
【図１３】合成済み対象空間データの一例を示す図である。
【図１４】合成済み対象空間データの一例を示す図である。
【図１５】コンピュータ装置の動作の一例を示すフローチャートである。
【図１６】コンピュータ装置の動作の一例を示すフローチャートである。
【図１７】コンピュータ装置の動作の一例を示すフローチャートである。
【図１８】コンピュータ装置の動作の一例を示すフローチャートである。
【図１９】参照リストの一例を示す図である。
【図２０】電子機器の一例を示す図である。
【図２１】電子機器の一例を示す図である。
【図２２】フロントケースの一例を示す図である。
【図２３】バックケースの一例を示す図である。
【図２４】フロントケースの一例を示す図である。
【図２５】バックケースの一例を示す図である。
【図２６】ボタン構造の一例を示す図である。
【図２７】電池構造の一例を示す図である。
【図２８】ストラップ保持構造の一例を示す図である。
【図２９】基板の一例を示す図である。
【図３０】ネジボスの一例を示す図である。
【図３１】コンピュータ装置の動作の一例を示すフローチャートである。
【図３２】コンピュータ装置の動作の一例を示すフローチャートである。
【図３３】コンピュータ装置の動作の一例を示すフローチャートである。
【図３４】設計システムの構成の一例を示す図である。
【図３５】表示画面の一例を示す図である。
【図３６】表示画面の一例を示す図である。
【図３７】コンピュータ装置の動作の一例を示すフローチャートである。
【図３８】部品データの一例を示す図である。
【図３９】部品データの一例を示す図である。
【図４０】ネジボスの断面構造の一例を示す図である。
【図４１】表示画面の一例を示す図である。
【図４２】各値が“０”に設定された対象空間データの一例を示す図である。
【図４３】部品データ及び形状データの一例を示す図である。
【図４４】配置空間に被配置物が配置されている様子の一例を示す図である。
【図４５】第１単体状態データの一例を示す図である。
【図４６】第２単体状態データの一例を示す図である。
【図４７】第３単体状態データの一例を示す図である。
【発明を実施するための形態】
【００１１】
図１はコンピュータ装置１の構成の一例を示すブロック図である。コンピュータ装置１は、配置空間での複数の被配置物の配置を自動的に決定する自動配置設計を行う自動配置設計システムとして機能する。言い換えれば、コンピュータ装置１は、自動配置設計を行う自動配置設計装置として機能する。また、コンピュータ装置１は、自動配置設計システムで使用されるパラメータを機械学習する学習処理を行う学習装置としても機能する。以後、自動配置設計を単に配置設計と呼ぶことがある。配置設計と、その前処理である学習処理とを合わせて、自動設計処理と呼ぶことがある。以下の説明では、配置空間に被配置物を配置するという処理は、コンピュータ上での仮想的な処理である。また、配置空間において被配置物を移動させるという処理も、コンピュータ上での仮想的な処理である。
【００１２】
図１に示されるように、コンピュータ装置１は、例えば、制御部２、記憶部３、通信部４、表示部５及び入力部６を備える。制御部２、記憶部３、通信部４、表示部５及び入力部６は、例えば、バス７で互いに電気的に接続されている。
【００１３】
制御部２は、コンピュータ装置１の他の構成要素を制御することによって、コンピュータ装置１の動作を統括的に管理することが可能である。制御部２は制御装置あるいは制御回路とも言える。制御部２は、以下にさらに詳細に述べられるように、種々の機能を実行するための制御及び処理能力を提供するために、少なくとも１つのプロセッサを含む。
【００１４】
種々の実施形態によれば、少なくとも１つのプロセッサは、単一の集積回路（ＩＣ）として、または複数の通信可能に接続された集積回路（ＩＣ）及び／またはディスクリート回路（discrete circuits）として実行されてもよい。少なくとも１つのプロセッサは、種々の既知の技術に従って実行されることが可能である。
【００１５】
１つの実施形態において、プロセッサは、例えば、関連するメモリに記憶された指示を実行することによって１以上のデータ計算手続又は処理を実行するように構成された１以上の回路又はユニットを含む。他の実施形態において、プロセッサは、１以上のデータ計算手続き又は処理を実行するように構成されたファームウェア（例えば、ディスクリートロジックコンポーネント）であってもよい。
【００１６】
種々の実施形態によれば、プロセッサは、１以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号処理装置、プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイ、またはこれらのデバイス若しくは構成の任意の組み合わせ、または他の既知のデバイス及び構成の組み合わせを含み、以下に説明される機能を実行してもよい。本例では、制御部２は、例えばＣＰＵ（Central Processing Unit）を備えている。
【００１７】
記憶部３は、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）などの、制御部２のＣＰＵが読み取り可能な非一時的な記録媒体を含む。記憶部３には、コンピュータ装置１を自動配置設計装置として機能させるための配置設計プログラム３ａが記憶されている。また、記憶部３には、コンピュータ装置１を学習装置として機能させるための学習プログラム３ｂが記憶されている。制御部２のＣＰＵが記憶部３内の配置設計プログラム３ａを実行することによって、コンピュータ装置１は自動配置設計装置（言い換えれば、自動配置設計システム）として機能する。また、制御部２のＣＰＵが記憶部３内の学習プログラム３ｂを実行することによって、コンピュータ装置１が学習装置として機能する。
【００１８】
通信部４は、有線あるいは無線で、インターネット等を含む通信ネットワークに接続されている。通信部４は、通信ネットワークを通じて、クラウドサーバ及びウェブサーバ等の他の装置と通信することが可能である。通信部４は、通信ネットワークから受け取った情報を制御部２に入力することが可能である。また通信部４は、制御部２から受け取った情報を通信ネットワークに出力することが可能である。
【００１９】
表示部５は、例えば、液晶表示ディスプレイあるいは有機ＥＬディスプレイである。表示部５は、制御部２によって制御されることによって、文字、記号、図形などの各種情報を表示することが可能である。
【００２０】
入力部６は、コンピュータ装置１に対するユーザからの入力を受け付けることが可能である。入力部６は、例えば、キーボード及びマウスを備える。入力部６は、表示部５の表示面に対するユーザの操作を検出することが可能なタッチパネルを備えてもよい。
【００２１】
なお、コンピュータ装置１の構成は上記の例に限られない。例えば、制御部２は、複数のＣＰＵを備えてもよい。また制御部２は、少なくとも一つのＤＳＰ（Digital Signal Processor）を備えてもよい。また、制御部２の全ての機能あるいは制御部２の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。また記憶部３は、ＲＯＭ及びＲＡＭ以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えていてもよい。記憶部３は、例えば、小型のハードディスクドライブ及びＳＳＤ（Solid State Drive）などを備えてもよい。また記憶部３は、コンピュータ装置１に対して着脱可能な、ＵＳＢ（Universal Serial Bus）メモリ等のメモリを備えてもよい。
【００２２】
＜自動設計処理について＞
次に自動設計処理について詳細に説明する。以下では、電子機器の部品に関する自動設計処理について説明するが、被配置物は電子機器の部品以外であってもよい。以後、被配置物を被配置部品と呼ぶことがある。
【００２３】
コンピュータ装置１は、自動配置設計システム（言い換えれば、自動配置設計装置）で使用されるパラメータを機器学習する学習処理を行う。コンピュータ装置１は、学習処理において例えば強化学習を使用する。コンピュータ装置１は、学習されたパラメータに基づいて配置設計を行うことができる。学習処理で使用される強化学習としては、例えば深層強化学習が採用される。なお、学習処理で使用される強化学習は深層強化学習以外であってもよい。またコンピュータ装置１は、パラメータを強化学習以外の方法で学習してもよい。以後、単に、強化学習あるいは深層強化学習と言えば、コンピュータ装置１での自動配置設計システムのパラメータの学習を意味する。
【００２４】
図２はコンピュータ装置１の自動設計処理に関する構成の一例を示す図である。図２に示されるように、コンピュータ装置１は、自動設計処理で使用されるニューラルネットワーク１０を備える。ニューラルネットワーク１０は、例えば、畳み込みニューラルネットワーク（ＣＮＮ（Convolutional Neural Network））である。強化学習では、ニューラルネットワーク１０のパラメータが学習される。ニューラルネットワーク１０のパラメータには、人工ニューロン間の結合の重みを示す重み付け係数が含まれる。以後、ニューラルネットワーク１０のパラメータをＮＮパラメータと呼ぶことがある。また、学習済みのＮＮパラメータを学習済みＮＮパラメータと呼ぶことがある。ニューラルネットワーク１０が、入力されるデータに対して学習済みＮＮパラメータに基づく演算を行うことによって、コンピュータ装置１では配置設計が可能となる。
【００２５】
図２に示されるように、ニューラルネットワーク１０は、例えば、入力層１１と、隠れ層１３と、出力層１２とを備える。隠れ層１３は中間層とも呼ばれる。隠れ層１３は、例えば、複数の畳み込み層１３０と、複数のプーリング層１３１と、全結合層１３２とを備える。ニューラルネットワーク１０では、出力層１２の前段に全結合層１３２が存在する。そして、ニューラルネットワーク１０では、入力層１１と全結合層１３２との間において、畳み込み層１３０とプーリング層１３１とが交互に配置されている。なお、ニューラルネットワーク１０の構成は図２の例には限られない。例えば、ニューラルネットワーク１０は、入力層１１と全結合層１３２との間に、１つの畳み込み層１３０と１つのプーリング層１３１とを備えてもよい。
【００２６】
学習処理では、例えば、価値反復法を用いた強化学習が使用される。学習処理では、例えば、価値反復法の一種であるＱ学習を用いた強化学習が使用される。Ｑ学習を用いた深層強化学習は、ＤＱＮ（Deep Q-Network）と呼ばれる。
【００２７】
自動設計処理では、観測空間に、被配置物を配置する対象の配置空間が規定される。そして、配置空間に複数の被配置物が配置される。強化学習では、配置空間での複数の被配置物の状態が観測される。また、強化学習では、被配置物の移動が行動として採用される。強化学習のエージェントとして機能する制御部２は、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、配置空間において複数の被配置物を仮想的に移動させることによって、配置空間での複数の被配置物の配置を自動的に決定する。配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係は、ＮＮパラメータによって決定される。強化学習では、ＮＮパラメータが学習されることによって、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係が学習される。ＮＮパラメータには、例えば、隠れ層１３で使用されるパラメータが含まれる。具体的には、ＮＮパラメータには、畳み込み層１３０で使用されるフィルタ係数と、全結合層１３２で使用される重み付け係数とが含まれる。本例では、制御部２は、配置空間において、複数の被配置物のそれぞれが他の物体と干渉しないように、当該複数の被配置物の配置を決定する。
【００２８】
ニューラルネットワーク１０の入力層１１には、配置空間での複数の被配置物の状態を表す状態データが入力される。ニューラルネットワーク１０の出力層１２からは、各行動に応じた行動価値関数の値、つまり行動価値が出力される。ある状態を表す状態データが入力層１１に入力されたときに出力層１２から出力される行動価値は、当該ある状態において当該行動価値に対応する行動が採用される確率を示す。以後、入力層１１に入力される状態データを入力状態データと呼ぶことがある。また、出力層１２から出力される行動価値をＱ値と呼ぶことがある。
【００２９】
本例の自動設計処理においては、図３に示される、ＸＹＺ直交座標系に定められた直方体の観測空間２０が使用される。そして、観測空間２０内に固定の配置空間３０が規定される。被配置物はＸＹＺ直交座標系において仮想的に移動される。本例では、配置空間３０は三次元空間である。
【００３０】
配置空間３０は、例えば、電子機器の外装を構成するケースによって規定される。電子機器のケースは、配置空間３０を規定する空間規定物体であると言える。本例では、強化学習の行動としては、「＋Ｘ方向の移動」と、「−Ｘ方向の移動」と、「＋Ｙ方向の移動」と、「−Ｙ方向の移動」と、「＋Ｚ方向の移動」と、「−Ｚ方向の移動」と、「移動させない」の７種類が定められる。ニューラルネットワーク１０の出力層１２からは、「＋Ｘ方向の移動」、「−Ｘ方向の移動」、「＋Ｙ方向の移動」、「−Ｙ方向の移動」、「＋Ｚ方向の移動」、「−Ｚ方向の移動」及び「移動させない」にそれぞれ対応する７つのＱ値が出力される。出力層１２は７つの出力素子を有し、当該７つの出力素子から７つのＱ値がそれぞれ出力される。
【００３１】
配置設計において、エージェントして機能する制御部２は、出力層１２から出力される７つのＱ値に基づいて、被配置物に行うべき移動を決定する。配置設計において、制御部２は、出力層１２から出力される７つのＱ値のうち最大のＱ値に対応する行動を被配置物に行う。なお、強化学習の行動に「移動させない」が含まれなくてもよい。
【００３２】
＜入力状態データについて＞
入力状態データは、配置空間３０を表す配置空間データと、被配置部品を表す部品データとに基づいて生成される。入力状態データは、例えば、ＣＡＤデータに基づいて生成される。ＣＡＤは“computer-aided design”の略語である。記憶部３には、電子機器の各部品についてのＣＡＤデータが記憶されている。制御部２は、記憶部３内のＣＡＤデータに基づいて、配置空間データ及び部品データを生成し、生成した配置空間データ及び部品データに基づいて入力状態データを生成する。なお、記憶部３内に配置空間データ及び部品データが予め記憶されていてもよい。
【００３３】
本例では、制御部２は、観測空間２０を複数の分割要素２１に分割する。これにより、観測空間２０に定められる配置空間３０と、観測空間２０内の被配置部品のそれぞれは、複数の分割要素２１に分割される。図４は被配置部品６０が複数の分割要素２１に分割される様子の一例を示す図である。分割要素２１の形状は、例えば立方体である。分割要素２１の形状は他の形状であってもよい。
【００３４】
制御部２は、ＣＡＤデータから被配置部品６０の形状を特定し、特定した形状に基づいて被配置部品６０を複数の分割要素２１に分割する。そして制御部２は、被配置部品６０を構成する複数の分割要素２１に対して複数のデータをそれぞれ割り当てる。制御部２は、被配置部品６０を構成する複数の分割要素２１に対してそれぞれ割り当てた複数のデータから成る配列データを、当該被配置部品６０を表す部品データとする。部品データは三次元配列データとなっている。部品データは、被配置部品６０の形状を表す形状データであるとも言える。
【００３５】
また制御部２は、ＣＡＤデータに基づいて電子機器のケース（言い換えれば外装ケース）の形状を特定し、特定して形状に基づいて配置空間３０を観測空間２０に定める。そして、制御部２は、配置空間３０を複数の分割要素２１に分割し、当該複数の分割要素２１に対して複数のデータをそれぞれ割り当てる。制御部２は、配置空間３０を構成する複数の分割要素２１に対してそれぞれ割り当てた複数のデータから成る配列データを、配置空間３０を表す配置空間データとする。配置空間データは、部品データと同様に三次元配列データとなっている。配置空間データは、配置空間の形状を表す形状データであるとも言える。
【００３６】
ここで、電子機器は、ケースと、当該ケースと同じ材料で構成された、部品を保持する保持構造とを備えることがある。そして、電子機器では、保持構造がケースと一体成形されることがある。例えば、ケースが樹脂で構成される場合、樹脂で構成された保持構造がケースと一体成形されることがある。例えば、スマートフォン等の携帯電話機については、カメラを保持する保持構造、モータを保持する保持構造、スピーカを保持する保持構造及びストラップを保持する保持構造がケースと一体成形されることがある。製造された電子機器では、保持構造はケースの一部であると見ることもできる。以後、特に断らない限り、保持構造と言えば、ケースと一体成形される保持構造を意味する。また、保持構造のように、ケースと一体成形される物を成形構造と呼ぶことがある。
【００３７】
本例では、制御部２は、自動設計処理において、成形構造が形成されていない、表面が平らなケースを考える。そして、制御部２は、成形構造が形成されていないケースによって規定される配置空間３０を考える。また制御部２は、保持構造によって保持される部品を配置空間３０に配置する場合には、当該部品と当該保持構造をまとめて、移動単位としての一つの被配置部品として扱う。したがって、保持構造によって保持される部品については、自動設計処理において、当該部品と当該保持構造が一体となって仮想的に移動させられる。以後、特に断らない限り、ケースと言えば、成形構造が形成されてないケースを意味する。また、被配置部品において、保持構造で保持される部品を被保持部品と呼ぶことがある。
【００３８】
電子機器の製造時には、ケースと保持構造とが一体成形されることから、ケースの一部を保持構造とすることができる。したがって、自動設計処理においては、保持構造が、ケースの肉厚部分（言い換えればケースの構造部分あるいはケース本体）と重なるように配置されても問題とならない。つまり、ケースの肉厚部分にも被配置部品の一部を配置することが可能である。そこで、本例では、配置空間３０にケースの肉厚部分が含まれるように、制御部２は、ケースの外側の面よりも内側の空間を配置空間３０とする。配置空間３０には、ケースの内側に存在する、物が存在しない空洞部分と、ケースの肉厚部分とが含まれる。本例の自動設計処理では、ケースの肉厚部分に保持構造が重なるように当該保持構造を配置空間に配置することが可能である。
【００３９】
また、電子機器を製造する場合には、保持構造同士を一体成形することが可能であることから、複数の被配置部品の間で保持構造を共用することができる。したがって、自動設計処理においては、保持構造同士が重なっても問題とならない。そこで、本例の自動設計処理では、保持構造を他の保持構造と重なるように配置空間に配置することが可能となっている。
【００４０】
また、本例の自動設計処理では、被保持部品などの、ケースと一体成形されない部品は、他の物体と重ねて配置することができない。例えば、被配置部品の被保持部品は、他の被配置部品の被保持部品及び保持構造と重ねて配置することができない。また、保持構造で保持されない部品、言い換えれば、保持構造を備えていない被配置部品は、他の被配置部品と重ねて配置することができない。以後、他の物体と重ねて配置することができない部品を重ね不可部品と呼ぶことがある。
【００４１】
本例では、自動設計処理において、配置空間３０の周囲の空間も利用される。以後、配置空間３０の周囲の空間を周囲空間と呼ぶことがある。また、配置空間と周囲空間とで構成される空間を対象空間と呼ぶことがある。
【００４２】
図５は対象空間５０の一例を示す図である。図５の例では、ケース７０の外側の面７１よりも内側の空間が配置空間３０となっている。配置空間３０には、ケース７０の外側の面７１と内側の面７２との間の肉厚部分７３（言い換えれば構造部分７３）と、内側の面７２よりも内側の空洞部分７４とが含まれる。対象空間５０は、ケース７０によって規定される配置空間３０と、その周囲に存在する周囲空間４０とで構成されている。本例では、観測空間２０において、配置空間３０よりも外側の部分が周囲空間４０となっている。よって、本例では、対象空間５０と観測空間２０とは一致している。
【００４３】
上述のように、観測空間２０は複数の分割要素に分割されることから、周囲空間４０も複数の分割要素に分割される。制御部２は、配置空間３０及び周囲空間４０を含む対象空間５０を構成する複数の分割要素に対して複数のデータをそれぞれ割り当てる。これにより、配置空間３０を構成する複数の分割要素に対して複数のデータがそれぞれ割り当てられるとともに、周囲空間４０を構成する複数の分割要素に対して複数のデータがそれぞれ割り当てられる。制御部２は、周囲空間４０を構成する複数の分割要素に対してそれぞれ割り当てられた複数のデータから成る配列データを、周囲空間４０を表す周囲空間データとする。また制御部２は、対象空間５０を構成する複数の分割要素に対してそれぞれ割り当てた複数のデータから成る配列データを、対象空間５０を表す対象空間データとする。対象空間データには、配置空間データと周囲空間データとが含まれる。対象空間データ及び周囲空間データは三次元配列データとなっている。制御部２は、対象空間データと部品データに基づいて入力状態データを生成する。以後、対象空間の分割要素に割り当てられるデータを第１データと呼ぶことがある。また、被配置部品の分割要素に割り当てられるデータを第２データと呼ぶことがある。
【００４４】
図６は、被保持部品６１と保持構造６２を備える被配置部品６０の一例を示す図である。図６の例では、被保持部品６１はカメラであって、当該カメラの周囲が保持構造６２で保持されている。
【００４５】
図７は、図６に示される被配置部品６０を表す部品データ９０の一例を示す図である。図７では、部品データ９０が二次元データとなっているが、実際には三次元データとなっている。以降の図に示される部品データも同様である。被配置部品６０のある分割要素に割り当てられた第２データ８２は、部品データ９０の三次元のデータ配列において、被配置部品６０での当該ある分割要素の位置に対応する位置に配置される。つまり、被配置部品６０のある分割要素に割り当てられた第２データ８２についての部品データ９０のデータ配列内での相対的な位置は、被配置部品６０での当該ある分割要素の相対的な位置と同じとなっている。
【００４６】
制御部２は、保持構造の各分割要素に対して、例えば“１”の第２データ８２を割り当てる。一方で、制御部２は、重ね不可部品の各分割要素に対して、例えば“２”の第２データ８２を割り当てる。図７の例では、図６に示される保持構造６２の各分割要素には“１”が割り当てられ、図６に示される被保持部品６１の各分割要素には“２”が割り当てられている。
【００４７】
図８は、上述の図５に示される対象空間５０を表す対象空間データ１００の一例を示す図である。図８では、対象空間データ１００が二次元データとなっているが、実際には三次元データとなっている。以降の図に示される対象空間データも同様である。対象空間５０のある分割要素に割り当てられた第１データ８１は、対象空間データ１００の三次元のデータ配列において、対象空間５０での当該ある分割要素の位置に対応する位置に配置される。つまり、対象空間５０のある分割要素に割り当てられた第１データ８１についての対象空間データ１００のデータ配列内での相対的な位置は、対象空間５０での当該ある分割要素の相対的な位置と同じとなっている。図８では、破線の内側の配列データが配置空間データ１１０を表しており、破線の外側の配列データが周囲空間データ１２０を表している。
【００４８】
制御部２は、配置空間３０を規定するケースの空洞部分の各分割要素に対して、例えば“０”の第１データ８１を割り当てる。また制御部２は、ケースの肉厚部分の各分割要素に対して、保持構造と同様に例えば“１”の第１データ８１を割り当てる。そして制御部２は、周囲空間の各分割要素に対して、重ね不可部品と同様に例えば“２”の第１データ８１を割り当てる。図８の例では、図５に示されるケース７０の空洞部分７４の各分割要素には“０”が割り当てられ、ケース７０の肉厚部分７３の各分割要素には“１”が割り当てられている。また、図８の例では、図５に示される周囲空間４０の各分割要素には“２”が割り当てられている。
【００４９】
配置空間での複数の被配置部品の状態を表す入力状態データには、当該複数の被配置部品をそれぞれ表す複数の部品データのそれぞれが、当該部品データに対応する被配置部品の配置空間での位置に応じて対象空間データに対して合成された合成配列データが含まれる。以後、この合成配列データを入力合成データと呼ぶことがある。
【００５０】
本例では、入力状態データには入力合成データだけが含まれる。つまり、本例では、入力状態データは入力合成データとなっている。図９は入力合成データの生成方法（言い換えれば入力状態データの生成方法）の一例を示すフローチャートである。図９の例では、対象空間データに対して複数の部品データが順番に合成されることによって入力合成データが生成される。入力合成データの生成方法は図９の例に限られない。以下の説明では、対象空間データの三次元配列の各位置を第１データ位置と呼ぶことがある。また、部品データの三次元配列の各位置を第２データ位置と呼ぶことがある。
【００５１】
図９に示されるように、ステップｓ１において、制御部２は、配置空間に存在する複数の被配置部品から一つの被配置部品を選択する。以後、ステップｓ１で選択された被配置部品を選択部品と呼ぶことがある。
【００５２】
次にステップｓ２において、制御部２は、対象空間データに対して、選択部品を表す部品データを、配置空間での選択部品の位置に応じて合成する。ステップｓ２では、制御部２は、まず、対象空間において選択部品が占める領域を選択部品領域として特定する。次に、制御部２は、対象空間データにおいて、特定した選択部品領域の各分割要素に対応する第１データが存在するデータ領域を選択部品領域データとして特定する。選択部品領域データは三次元配列データである。次に、制御部２は、対象空間データにおける、特定した選択部品領域データに対して、選択部品を表す部品データを合成する。これにより、選択部品を表す部品データが合成された対象空間データが得られる。以後、部品データが合成された対象空間データを合成済み対象空間データと呼ぶことがある。
【００５３】
制御部２は、選択部品領域データに対して部品データを合成する場合には、選択部品領域データの三次元配列の各第１データ位置について、当該第１データ位置に存在する第１データに対して、部品データの三次元配列において当該第１データ位置に対応する第２データ位置に存在する第２データを足し合わせて当該第１データを変更する。ただし、対象空間データの第１データ位置での第１データが“１”であって、それに足し合わされる第２データも“１”の場合には、制御部２は、当該第１データ位置の第１データに対して第２データを足し合わせずに、当該第１データを“１”のままとする。
【００５４】
次にステップｓ３において、制御部２は、配置空間に存在するすべての被配置部品を選択したか否かを判定する。ステップｓ３においてＮＯと判定されると、ステップｓ１が再度実行される。２回目以降のステップｓ１では、制御部２は、配置空間に存在する複数の被配置部品のうちの未選択の被配置部品から一つの被配置部品を選択する。
【００５５】
次にステップｓ２において、制御部２は、前回のステップｓ２で生成された合成済み対象空間データに対して、新たに選択された選択部品を表す部品データを、配置空間での当該選択部品の位置に応じて合成する。
【００５６】
２回目以降のステップｓ２では、１回目のステップｓ２と同様に、制御部２は、まず、対象空間において選択部品が占める領域を選択部品領域として特定する。次に、制御部２は、前回のステップｓ２で得られた合成済み対象空間データにおいて、特定した選択部品領域の各分割要素に対応する第１データが存在する領域を選択部品領域データとして特定する。次に、制御部２は、前回のステップｓ２で得られた合成済み対象空間データの選択部品領域データに対して、新たな選択部品を表す部品データを合成する。２回目のステップｓ２では、２つの部品データが合成された合成済み対象空間データが得られる。一般化すると、Ｎ回目（Ｎ≧１）のステップｓ２では、Ｎ個の部品データが合成された合成済み対象空間データが得られる。ステップｓ２の後、ステップｓ３が実行され、以後、制御部２は同様に動作する。
【００５７】
ステップｓ３においてＹＥＳと判定されると、制御部２は、直前のステップｓ２で得られた合成済み対応空間データを入力合成データとして、入力合成データの生成処理を終了する。配置空間に存在する複数の被配置部品の数をＭ（≧２）で表すと、Ｍ個の部品データが合成された対象空間データが、ニューラルネットワーク１０の入力層１１に入力される入力合成データとなる。以後、合成済み対象空間データを構成する各データ、第３データあるいは第３データ８３と呼ぶことがある。
【００５８】
次に図９に示される処理の具体例を、上述の図７及び図８に示される部品データ９０及び対象空間データ１００を用いて説明する。
【００５９】
例えば、図１０に示されるように、配置空間３０に、図６に示される被配置部品６０が２個配置される場合を考える。２個の被配置部品６０をそれぞれ被配置部品６０ａ及び６０ｂと呼ぶ。制御部２は、被配置部品６０ａ及び６０ｂのうち、例えば、まず被配置部品６０ａを選択する（１回目のステップｓ１）。このときの選択部品領域データ１０１ａは図１１のようになる。ステップｓ２において、制御部２が、選択部品領域データ１０１ａに対して、上述の図７に示される、被配置部品６０ａを表す部品データ９０を合成すると、ステップｓ２で得られる合成済み対象空間データ１００ａは図１２のようになる。
【００６０】
次に制御部２は被配置部品６０ｂを選択する（２回目のステップｓ１）。このときの選択部品領域データ１０１ｂは図１３のようになる。２回目のステップｓ２において、制御部２が、選択部品領域データ１０１ｂに対して、上述の図７に示される、被配置部品６０ｂを表す部品データ９０を合成すると、２回目のステップｓ２で得られる合成済み対象空間データ１００ｂは図１４のようになる。図１０の例では、図１４に示される合成済み対象空間データ１００ｂが入力合成データとして使用される。
【００６１】
図１４に示される合成済み対象空間データ１００ｂを見ると、配置空間での被配置部品６０ａ及び６０ｂの状態を特定することができる。例えば、合成済み対象空間データ１００ｂでの“４”を示すデータ領域は、配置空間において、被配置部品６０ａの被保持部品と、被配置部品６０ｂの被保持部品とが重なっている領域を示している。また、合成済み対象空間データ１００ｂでの“３”を示すデータ領域は、配置空間において、被配置部品６０ａ及び被配置部品６０ｂの一方の被保持部品と、被配置部品６０ａ及び被配置部品６０ｂの他方の保持構造とが重なっている領域を示している。
【００６２】
＜学習処理について＞
強化学習では、報酬に基づいてＮＮパラメータが学習される。本例では、対象空間において被配置部品が他の物体と干渉するか否かに応じて報酬が決定される。強化学習では、対象空間において被配置部品が他の物体と干渉している場合には負の報酬（つまり、罰則）が与えられる。一方で、対象空間において各被配置部品が他の物体と干渉してない場合には正の報酬が与えられる。
【００６３】
上述のように、本例では、保持構造がケースの肉厚部分と重なって配置されることが許容されている。したがって、強化学習では、保持構造がケースの肉厚部分と重なったとしても干渉とは扱われない。また本例では、保持構造が他の保持構造と重なって配置されることが許容されている。したがって、強化学習では、保持構造が他の保持構造と重なったとしても干渉とは扱われない。
【００６４】
一方で、被保持部品などの重ね不可部品については他の物体と重ねて配置することが許容されていない。したがって、強化学習では、重ね不可部品が他の物体と重なった場合には干渉と扱われる。これにより、配置設計において、重ね不可部品が他の物体と重なって自動配置される可能性を低減することができる。
【００６５】
また強化学習では、被配置部品の少なくとも一部が配置空間外に存在する場合には干渉として扱われる。これにより、配置設計において、被配置部品の少なくとも一部が配置空間外に自動配置される可能性を低減することができる。
【００６６】
対象空間において干渉が発生しているか否かは、入力合成データから特定することができる。上述のように、ケースの肉厚部分の分割要素には“１”が割り当てられ、ケースの空洞部分の分割要素には“０”が割り当てられる。また、保持構造の分割要素には“１”が割り当てられる。また、入力合成データの生成処理で説明したように、対象空間データの第１データ位置での第１データが“１”であって、それに足し合わせられる第２データも“１”の場合には、当該第１データ位置の第１データに対して第２データが足し合わされずに、当該第１データが“１”のままとされる。これらの規則から、入力合成データでの“２”以下のデータ領域は、配置空間における、当該データ領域に対応する部分空間で干渉が発生していないことを示している。一方で、入力合成データでの“３”以上のデータ領域は、配置空間における、当該データ領域に対応する部分空間で干渉が発生していることを示している。以後、入力合成データに基づいて、対象空間において干渉が発生しているか否かを判断することを、干渉判定と呼ぶことがある。
【００６７】
図１５は学習処理の一例を示すフローチャートである。制御部２が記憶部３内の学習プログラム３ｂを実行することによって、図１５に示される学習処理が制御部２で実行される。図１５は、制御部２が、電子機器を構成する複数の被配置部品を対象空間で移動させながら強化学習を行う場合の制御部２の動作の一例が示されている。制御部２は、例えば２つのニューラルネットワーク１０を使用して強化学習を行う。以後、強化学習で使用される、電子機器を構成する複数の被配置部品のそれぞれを使用対象部品と呼ぶことがある。また、強化学習で使用される２つのニューラルネットワーク１０を、それぞれ第１ニューラルネットワーク及び第２ニューラルネットワークと呼ぶことがある。
【００６８】
第１ニューラルネットワークは、それに対応する使用対象部品に行うべき行動を決定するためのＱ値を出力する。制御部２は、第１ニューラルネットワークから出力される７つのＱ値に基づいて、それに対応する使用対象部品に行うべき行動を決定する。同様に、第２ニューラルネットワークは、それに対応する使用対象部品に行うべき行動を決定するためのＱ値を出力する。制御部２は、第２ニューラルネットワークから出力される６つのＱ値に基づいて、それに対応する使用対象部品に行うべき行動を決定する。
【００６９】
学習処理では、対象空間において干渉が発生しなくなるまで複数の使用対象部品を移動させながら第１及び第２ニューラルネットワークのＮＮパラメータを学習する単位学習処理が、規定回数実行される。図１５に示されるように、ステップｓ１１において、制御部２は単位学習処理を実行して第１及び第２ニューラルネットワークのＮＮパラメータを学習する。次にステップｓ１２において、制御部２は、単位学習処理を規定回数実行したか否かを判定する。規定回数は例えば数十回〜数百回に設定される。ステップｓ２においてＹＥＳと判定されると学習処理が終了する。これにより、配置設計で利用される学習済みＮＮパラメータが得られる。一方で、ステップｓ２においてＮＯと判定されると、ステップｓ１１が再度実行される。制御部２は以後同様に動作する。２回目以降のステップｓ１１では、直前のステップｓ１１で学習されたＮＮパラメータがさらに学習される。したがって、単位学習処理が実行されるたびに、第１及び第２ニューラルネットワークのＮＮパラメータの学習が進んでいく。そして、単位学習処理が規定回数実行された後の第１及び第２ニューラルネットワークのＮＮパラメータが、配置設計で利用される学習済みＮＮパラメータとなる。学習処理の終了後、制御部２は、第１及び第２ニューラルネットワークについての学習済みＮＮパラメータを記憶部３に記憶する。
【００７０】
図１６は単位学習処理の一例を示す図である。図１６に示されるように、単位学習処理では、まずステップｓ２１が実行される。ステップｓ２１では、制御部２が、複数の使用対象部品のうちの２つの使用対象部品を操作対象として決定する。制御部２は、例えば、体積が最大の使用対象部品を第１操作対象部品とし、体積が２番目に大きい使用対象部品を第２操作対象部品とする。そして、制御部２は、第１操作対象部品を第１ニューラルネットワークに対応する使用対象部品とし、第２操作対象部品を第２ニューラルネットワークに対応する使用対象部品とする。
【００７１】
次にステップｓ２２において、制御部２は、第１及び第２操作対象部品を対象空間に配置する。このとき、制御部２は、第１及び第２操作対象部品が互いに干渉するように配置空間に第１及び第２操作対象部品を配置する。ステップｓ２２において、例えば、制御部２は、配置空間の中心の位置と、第１操作対象部品の中心の位置と、第２操作対象部品の中心の位置とが一致するように、対象空間に第１及び第２操作対象部品を配置する。
【００７２】
次にステップｓ２３において、制御部２は、配置空間での第１及び第２操作対象部品の状態を表す入力状態データ（言い換えれば、入力合成データ）を、上述の図９に示される処理を実行して生成する。例えば、第１及び第２操作対象部品が上述の図１０に示される被配置部品６０ａ及び６０ｂであり、ステップｓ２２において、第１及び第２操作対象部品が図１０のように配置空間３０に配置される場合には、ステップｓ２３では、上述の図１４のような入力合成データが生成される。
【００７３】
次にステップｓ２４において、制御部２は、入力合成データを用いて、第１及び第２ニューラルネットワークのＮＮパラメータを学習する。制御部２は、対象空間において干渉が発生しなくなるまで第１及び第２操作対象部品を移動させながら第１及び第２ニューラルネットワークのＮＮパラメータを学習する。制御部２は、第１ニューラルネットワークの出力に基づいて第１操作対象部品に行う行動を決定し、第２ニューラルネットワークの出力に基づいて第２操作対象部品に行う行動を決定する。制御部２は、第１及び第２操作対象部品のそれぞれが他の物体と干渉しなくなると、ステップｓ２４を終了して、ステップｓ２５を実行する。なお、ステップｓ２４の処理については後で詳細に説明する。
【００７４】
ステップｓ２５において、制御部２は、すべての使用対象部品が操作対象となったか否かを判定する。ステップｓ２５においてＹＥＳと判定されると、ステップｓ１１の単位学習処理が終了する。一方で、ステップｓ２５においてＮＯと判定されると、ステップｓ２６が実行される。ステップｓ２６において、制御部２は、第１操作対象部品とした使用対象部品を、対象空間において、ステップｓ２４が終了した時点（言い換えれば、対象空間において干渉が発生しなくなった時点）での位置に固定する。これにより、単位学習処理での以後の処理においては、第１操作対象部品とされた使用対象部品が対象空間に配置されたままとなる。
【００７５】
ステップｓ２６の後、制御部２はステップｓ２１を再度実行する。２回目以降のステップｓ２１では、制御部２は、前回のステップｓ２１において第２操作対象部品とした使用対象部品を、新たな第１操作対象部品に決定する。そして、制御部２は、未だ操作対象とされてない使用対象部品のうち、最も体積が大きな使用対象部品を新たな第２操作対象部品に決定する。
【００７６】
次に、制御部２は、ステップｓ２２を実行して、新たな第１及び第２操作対象部品が互いに干渉するように、当該第１及び第２操作対象部位品を配置空間に配置する。これにより、対象空間には、それまでに実行されたステップｓ２６において対象空間に固定された使用対象部品と、新たな第１及び第２操作対象部品とが配置される。
【００７７】
次に、制御部２は、ステップｓ２３を実行して、対象空間において現在存在している、第１及び第２操作対象部品を含む複数の使用対象部品についての配置空間での状態を表す入力合成データを、図９に示される処理を実行して生成する。そして、制御部２は、ステップｓ２４を実行し、以後同様に動作する。ステップｓ２５においてＹＥＳと判定された時点においては、電子機器の各使用対象部品が他の物体と干渉しないように配置空間に配置されている。単位学習処理は、電子機器の各使用対象部品が他の物体と干渉しないように配置空間に配置されたとき終了すると言える。
【００７８】
図１７及び１８は、ステップｓ２４の処理の一例を詳細に示すフローチャートである。図１７に示されるように、ステップｓ２４では、まずステップｓ３１ａが実行される。ステップｓ３１ａにおいて、制御部２は、ステップｓ２３で生成された入力状態データ（つまり入力合成データ）を第１ニューラルネットワークに入力する。ニューラルネットワーク１０の複数の入力素子に対しては、入力状態データを構成する複数の第３データがそれぞれ入力される。入力合成データが、例えば、（５０×５０×５０）個の第３データから成る三次元配列データである場合、入力層１１は１２５０００個の入力素子で構成される。
【００７９】
次にステップｓ３２ａにおいて、制御部２は、第１ニューラルネットワークに対応する第１操作対象部品の行動を決定し、決定した行動を第１操作対象部分に行う。制御部２は、例えばEpsilon-Greedy法を用いて、第１操作対象部品の行動を決定する。制御部２は、第１操作対象部品の行動を確率αでランダムに決定する。そして、制御部２は、確率（１−α）で、ステップｓ３１ｂにおいて入力状態データが入力された第１ニューラルネットワークの出力に基づいて第１操作対象部品の行動を決定する。制御部２は、ステップｓ３２ａの実行回数が大きくなるにつれて確率αを小さくする。制御部２は、第１ニューラルネットワークの出力に基づいて第１操作対象部品の行動を決定する場合には、第１ニューラルネットワークから出力される７個のＱ値のうち、最大のＱ値に対応する行動を第１操作対象部品に対して行う。
【００８０】
ステップｓ３２ａにおいて、制御部２は、第１操作対象部品を移動させる場合には、例えば、分割要素の１つ分だけ、第１操作対象部品を移動させる。例えば、制御部２は、第１操作対象部品を＋Ｘ方向に移動させる場合、分割要素の１つ分だけ＋Ｘ方向に第１操作対象部品を移動させる。
【００８１】
ステップｓ３２ａの後、ステップｓ３３ａが実行される。ステップｓ３３ａにおいて、制御部２は、ステップｓ３２ａでの第１操作対象部品の行動に応じて、入力状態データ（つまり入力合成データ）を更新する。制御部２は、ステップｓ３２ａにおいて第１操作対象部品を移動させると、移動させた後における配置空間での複数の使用対象部品の状態を表す入力状態データを生成して、入力状態データを更新する。なお、ステップｓ３２ａでの第１操作対象部品の行動が「移動させない」の場合、制御部２は、ステップｓ３１ａで使用した入力状態データを、更新後の入力状態データとして使用する。
【００８２】
次にステップｓ３４ａにおいて、制御部２は、最新の入力状態データ（言い換えれば、更新後の入力状態データ）に基づいて報酬を決定する。言い換えれば、制御部２は、第１操作対象部品の行動後における配置空間での複数の使用対象部品の状態に基づいて報酬を決定する。制御部２は、対象空間において干渉が発生していない場合には報酬を大きくし、対象空間において干渉が発生している場には報酬を小さくする。以下に報酬の決定方法の一例について説明する。
【００８３】
制御部２は、最新の入力合成データにおいて、３以上の値を示す第３データが含まれているか否かを判断する。制御部２は、入力合成データにおいて、３以上の値を示す第３データが含まれていないと判断すると、報酬の値を、例えば、正の固定値に決定する。この固定値は、例えば、入力合成データを構成する複数の第３データの数等に応じて決定される。
【００８４】
ここで、上述のように、入力合成データでの３以上のデータ領域は、配置空間における、当該データ領域に対応する部分空間で干渉が発生していることを示している。したがって、制御部２は、ステップｓ３２ａでの第１操作対象部品の行動後の対象空間において干渉が発生していない場合、報酬の値を正の値に決定すると言える。
【００８５】
一方で、制御部２は、入力合成データにおいて、３以上の値を示す第３データが含まれていると判断すると、報酬の値を負の値とする。言い換えれば、制御部２は、ステップｓ３２ａでの第１操作対象部品の行動後の対象空間において干渉が発生している場合、報酬の値を負の値とする。制御部２は、入力合成データにおける、３以上の値をすべて足し合わせて、それによって得られる値の負の値を報酬として決定する。例えば、入力合成データが、上述の図１４に示される合成済み対象空間データ１００ｂと同じである場合を考える。この場合、入力合成データには、“３”の値を示す第３データ８３が８個含まれ、“４”を示す第３データ８３が２個含まれる。したがって、報酬の値は“−３２”となる。対象空間において干渉が発生している領域が大きいほど、報酬は小さくなる。
【００８６】
ステップｓ３４ａにおいて報酬が決定されると、ステップｓ３５ａにおいて、制御部２は、ＮＮパラメータの学習で使用される参照リストを更新する。そしてステップｓ３６ａにおいて、制御部２は、更新後の参照リストに基づいて第１ニューラルネットワーク及び第２ニューラルネットワークのＮＮパラメータを学習する。ステップｓ３５ａ及びｓ３６ａの詳細については後述する。
【００８７】
次にステップｓ３７ａにおいて、制御部２は干渉判定を行う。具体的には、制御部２は、ステップｓ３２ａでの第１操作対象部品の行動後の対象空間において干渉が発生しているか否かを、最新の入力状態データに基づいて判断する。つまり、制御部２は、対象空間に配置された複数の使用対象部品のうちの少なくとも一つが他の物体と干渉しているか否かを判断する。ステップｓ３７ａにおいてＮＯと判断されると、ステップｓ２４の処理が終了する。一方で、ステップｓ３７ａにおいてＹＥＳと判断されると、ステップｓ３１ｂが実行される。
【００８８】
図１８に示されるように、ステップｓ３１ｂにおいて、制御部２は、現在の入力状態データ（つまり、現在の入力合成データ）を第２ニューラルネットワークに入力する。言い換えれば、制御部２は、ステップｓ３３ａで更新された入力合成データを第２ニューラルネットワークに入力する。
【００８９】
次にステップｓ３２ｂにおいて、制御部２は、対象空間において、第２ニューラルネットワークに対応する第２操作対象部品の行動を決定し、決定した行動を第２操作対象部品に行う。制御部２は、第１操作対象部品の行動を決定する場合と同様に、例えばEpsilon-Greedy法を用いて、第２操作対象部品の行動を決定する。制御部２は、第２操作対象部品の行動を確率βでランダムに決定する。そして、制御部２は、確率（１−β）で、ステップｓ３１ｂにおいて入力状態データが入力された第２ニューラルネットワークの出力に基づいて第２操作対象部品の行動を決定する。制御部２は、ステップｓ３２ｂの実行回数が大きくなるにつれて確率βを小さくする。制御部２は、第２ニューラルネットワークの出力に基づいて第２操作対象部品の行動を決定する場合には、第２ニューラルネットワークから出力される７個のＱ値のうち、最大のＱ値に対応する行動を第２操作対象部品に対して行う。ステップｓ３２ｂでは、制御部２は、例えば、分割要素の１つ分だけ、第２操作対象部品を移動させる。
【００９０】
ステップｓ３２ｂの後、ステップｓ３３ｂが実行される。ステップｓ３３ｂにおいて、制御部２は、ステップｓ３３ａと同様に、ステップｓ３２ｂでの第２操作対象部品の行動に応じて、入力状態データ（つまり入力合成データ）を更新する。
【００９１】
次にステップｓ３４ｂにおいて、制御部２は、ステップｓ３４ａと同様にして、最新の入力状態データに基づいて報酬を決定する。次にステップｓ３５ｂにおいて、制御部２は参照リストを更新する。そしてステップｓ３６ｂにおいて、制御部２は、更新後の参照リストに基づいて、ステップｓ３６ａで学習された第１ニューラルネットワーク及び第２ニューラルネットワークのＮＮパラメータをさらに学習する。ステップｓ３５ｂ及びｓ３６ｂの詳細については後述する。
【００９２】
次にステップｓ３７ｂにおいて、制御部２は干渉判定を行う。具体的には、制御部２は、ステップｓ３２ｂでの第２操作対象部品の行動後の対象空間において干渉が発生しているか否かを判断する。ステップｓ３７ｂにおいてＮＯと判断されると、ステップｓ２４の処理が終了する。一方で、ステップｓ３７ｂにおいてＹＥＳと判断されると、ステップｓ３１ａが再度実行される。以後、制御部２は同様に動作する。２回目以降のステップｓ３１ａでは、直前のステップｓ３３ｂで更新された入力状態データが第１ニューラルネットワークに入力される。２回目以降のステップｓ３１ｂでは、直前のステップｓ３３ａで更新された入力状態データが第２ニューラルネットワークに入力される。
【００９３】
以上のように、ステップｓ２４の処理においては、第１操作対象部品の行動と第２操作対象部品の行動とが交互に決定される。そして、操作対象の使用対象部品の行動が決定されるたびに、入力状態データの更新、報酬の決定、参照リストの更新、ＮＮパラメータの学習及び干渉判定が行われる。干渉判定において、干渉が発生してないと判断されると、ステップｓ２４の処理が終了する。
【００９４】
以後、参照リストの更新前に実行されるステップｓ３１ａ〜ｓ３４ａから成る処理と、参照リストの更新前に実行されるステップｓ３１ｂ〜ｓ３４ｂから成る処理のそれぞれを、更新前処理ＳＳと呼ぶことがある。また、ステップｓ３１ａ〜ｓ３４ａから成る更新前処理ＳＳを更新前処理ＳＳａと呼び、ステップｓ３１ｂ〜ｓ３４ｂから成る更新前処理ＳＳを更新前処理ＳＳｂと呼ぶことがある。
【００９５】
次にステップｓ３５ａ及び３５ｂとステップｓ３６ａ及び３６ｂについて詳細に説明する。図１９は参照リスト２００の一例を示す図である。図１９に示されるように、参照リスト２００では、更新前処理ＳＳの実行回数ごとに、データセット２１０が記録されている。更新前処理ＳＳの実行回数は、更新前処理ＳＳａが実行されると増加し、更新前処理ＳＳｂが実行されると増加する。更新前処理ＳＳの実行回数は、更新前処理ＳＳａの実行回数と更新前処理ＳＳｂの実行回数とを足し合わせた数となる。参照リスト２００には、複数のデータセット２１０が含まれる。
【００９６】
ここで、ｐ回目（ｐ≧１）の更新前処理ＳＳにおいて、ニューラルネットワーク１０に入力される入力状態データ（つまり入力合成データ）をＳＤｐで表す。また、ｐ回目の更新前処理ＳＳにおいて、操作対象の使用対象部品に行われる行動を表す行動データをＭＶｐで表す。また、ｐ回目の更新前処理ＳＳにおいて決定される報酬をＲｐで表す。報酬Ｒｐは、使用対象部品の行動後に得られる報酬を表しているとも言える。ｐ回目の更新前処理ＳＳにおいて、使用対象部品の行動に応じて更新された入力状態データは、ｐ＋１回目の更新前処理ＳＳにおいてニューラルネットワーク１０に入力される。したがって、ｐ回目の更新前処理ＳＳにおいて、使用対象部品の行動に応じて更新された入力状態データはＳＤｐ＋１で表される。
【００９７】
更新前処理ＳＳの実行回数がｐ回の場合のデータセット２１０には、入力状態データＳＤｐ、行動データＭＶｐ、入力状態データＳＤｐ＋１及び報酬Ｒｐが含まれる。入力状態データＳＤｐ、行動データＭＶｐ、入力状態データＳＤｐ＋１及び報酬Ｒｐを（ＳＤｐ，ＭＶｐ、ＳＤｐ＋１，Ｒｐ）で表すと、ｐ回目の更新前処理ＳＳに対応するデータセット２１０には、（ＳＤｐ，ＭＶｐ、ＳＤｐ＋１，Ｒｐ）が含まれる。
【００９８】
ｑ回目（ｑ≧１）の更新前処理ＳＳａが、ｐ回目の更新前処理ＳＳである場合、ｑ回目の更新前処理ＳＳａの直後のステップｓ３５ａにおいて、制御部２は、ｑ回目の更新前処理ＳＳａに基づいて、ｐ回目の更新前処理ＳＳに対応するデータセット２１０を生成する。具体的には、制御部２は、ｑ回目の更新前処理ＳＳａのステップｓ３１ａにおいて第１ニューラルネットワークに入力される入力状態データを、入力状態データＳＤｐとする。また、制御部２は、ｑ回目の更新前処理ＳＳａのステップｓ３２ａにおいて第１操作対象部品に行われた行動を表す行動データを、行動データＭＶｐとする。制御部２は、ｑ回目の更新前処理ＳＳａのステップｓ３２ａにおいて第１操作対象部品に行われた行動が例えば「＋Ｘ方向の移動」である場合、「＋Ｘ方向の移動」を表す行動データＭＶｐを生成する。また、制御部２は、ｑ回目の更新前処理ＳＳａのステップｓ３３ａにおいて更新した入力状態データを、入力状態データＳＤｐ＋１とする。また、制御部２は、ｑ回目の更新前処理ＳＳａのステップｓ３４ａにおいて決定した報酬を報酬Ｒｐとする。そして、制御部２は、ｑ回目の更新前処理ＳＳａから得られた（ＳＤｐ，ＭＶｐ、ＳＤｐ＋１，Ｒｐ）を、ｐ回目の更新前処理ＳＳに対応するデータセット２１０として参照リスト２００に追加する。これにより、参照リスト２００が更新される。
【００９９】
同様に、ｒ回目（ｒ≧１）の更新前処理ＳＳｂが、ｐ回目の更新前処理ＳＳである場合、ｒ回目の更新前処理ＳＳｂの直後のステップｓ３５ｂにおいて、制御部２は、ｒ回目の更新前処理ＳＳｂに基づいて、ｐ回目の更新前処理ＳＳに対応するデータセット２１０を生成する。具体的には、制御部２は、ｒ回目の更新前処理ＳＳｂのステップｓ３１ｂにおいて第２ニューラルネットワークに入力される入力状態データを、入力状態データＳＤｐとする。また、制御部２は、ｒ回目の更新前処理ＳＳｂのステップｓ３２ｂにおいて第２操作対象部品に行われた行動を表す行動データを、行動データＭＶｐとする。また、制御部２は、ｒ回目の更新前処理ＳＳｂのステップｓ３３ｂにおいて更新した入力状態データを、入力状態データＳＤｐ＋１とする。また、制御部２は、ｒ回目の更新前処理ＳＳｂのステップｓ３４ｂにおいて決定した報酬を報酬Ｒｐとする。そして、制御部２は、ｒ回目の更新前処理ＳＳｂから得られた（ＳＤｐ，ＭＶｐ、ＳＤｐ＋１，Ｒｐ）を、ｐ回目の更新前処理ＳＳに対応するデータセット２１０として参照リスト２００に追加する。これにより、参照リスト２００が更新される。
【０１００】
制御部２は、以上のようにして更新される参照リスト２００に基づいて、第１及び第２ニューラルネットワークのＮＮパラメータを学習する。ステップｓ３６ａにおいて、制御部２は、直前のステップｓ３５ａにおいて更新された参照リスト２００から、所定数のデータセット２１０をランダムに抽出する。そして、制御部２は、抽出した所定数のデータセット２１０を用いて教師データを生成し、生成した教師データと第１ニューラルネットワークの出力との差が小さくなるように、第１ニューラルネットワークのＮＮパラメータを調整する。これにより、第１ニューラルネットワークのＮＮパラメータが学習される。このような学習方法はミニバッチ学習法を呼ばれることがある。
【０１０１】
ステップｓ３６ｂにおいても同様にして、第２ニューラルネットワークのＮＮパラメータが学習される。ステップｓ３６ｂにおいて、制御部２は、直前のステップｓ３５ｂにおいて更新された参照リスト２００から、所定数のデータセット２１０をランダムに抽出する。そして、制御部２は、抽出した所定数のデータセット２１０を用いて教師データを生成し、生成した教師データと第２ニューラルネットワークの出力との差が小さくなるように、第２ニューラルネットワークのＮＮパラメータを調整する。
【０１０２】
なお、ステップｓ３５ａにおいて更新された参照リスト２００に、所定数以上のデータセット２１０が記録されていない場合には、ステップｓ３６ａは実行されずにステップｓ３７ａが実行される。同様に、ステップｓ３５ｂにおいて更新された参照リスト２００に、所定数以上のデータセット２１０が記録されていない場合には、ステップｓ３６ｂは実行されずにステップｓ３７ｂが実行される。
【０１０３】
＜学習処理の具体例＞
次に、学習処理の具体例を、図２０及び２１に示される電子機器３００を構成する部品を用いて説明する。図２０には、電子機器３００を表側から見た様子が示されており、図２１には、電子機器３００を裏側から見た様子が示されている。
【０１０４】
電子機器３００は、ケース３１０と、ボタン３２０と、複数の電池３３０と、ストラップ保持構造３４０とを備える。また電子機器３００は、後述する基板３５０及びネジボス３６０を備える。ボタン３２０、複数の電池３３０及び基板３５０はケース３１０内に収納される。ストラップ保持構造３４０は、ケース３１０と一体成形される成形構造である。ネジボス３６０は、ケース３１０と一体成形される保持構造を備える。電子機器３００は、ボタン３２０が操作されると、電子機器３００の外部に信号を送信することが可能である。
【０１０５】
ケース３１０は、フロントケース３１１及びバックケース３１２を備える。図２２は、フロントケース３１１のみを示す斜視図である。図２３は、バックケース３１２のみを示す斜視図である。
【０１０６】
自動設計処理において、制御部２は、電子機器３００を、成形構造が形成されていないケース３１０と、ボタン３２０を備えるボタン構造３２２と、複数の電池３３０を備える電池構造３３２と、ストラップ保持構造３４０と、基板３５０と、ネジボス３６０とに分けて考える。制御部２は、自動設計処理において、成形構造が形成されていないケース３１０によって規定される配置空間を考える。また制御部２は、自動設計処理において、ボタン構造３２２、電池構造３３２、ストラップ保持構造３４０、基板３５０及びネジボス３６０のそれぞれを配置空間に配置する被配置部品として使用する。そして、制御部２は、配置空間において、ボタン構造３２２、電池構造３３２、ストラップ保持構造３４０、基板３５０及びネジボス３６０を移動させながらＮＮパラメータを学習する。
【０１０７】
図２４及び図２５は、成形構造が形成されていないケース３１０を構成するフロントケース３１１及びバックケース３１２をそれぞれ示す斜視図である。以後、単にケース３１０と言えば、成形構造が形成されていないケース３１０を意味する。制御部２は、対象空間データを生成する場合には、ケース３１０の各分割要素に対して“１”の第１データを割り当てる。
【０１０８】
図２６はボタン構造３２２を示す斜視図である。図２６に示されるように、ボタン構造３２２は、重ね不可部品であるボタン３２０と、ボタン３２０を保持する保持構造３２１とを備える。保持構造３２１は、ケース３１０と一体成形される成形構造である。制御部２は、ボタン構造３２２を表す部品データを生成する場合には、ボタン３２０の各分割要素に対して“２”の第２データを割り当てる。また制御部２は、保持構造３２１の各分割要素に対して“１”の第２データを割り当てる。
【０１０９】
図２７は電池構造３３２を示す斜視図である。図２７に示されるように、電池構造３３２は、重ね不可部品である複数の電池３３０と、複数の電池３３０を保持する保持構造３３１とを備える。保持構造３３１は、複数の電池３３０を収納する電池ケースとも言える。保持構造３３１は、ケース３１０と一体成形される成形構造である。制御部２は、電池構造３３２を表す部品データを生成する場合には、複数の電池３３０のそれぞれの各分割要素に対して“２”の第２データを割り当てる。また制御部２は、保持構造３３１の各分割要素に対して“１”の第２データを割り当てる。
【０１１０】
図２８はストラップ保持構造３４０を示す斜視図である。図２８に示されるように、ストラップ保持構造３４０は、上面が開口した箱状の本体部３４１と、突起部３４２とを備える。突起部３４２は、本体部３４１の底面部３４１ａに立設されている。本体部３４１の側面部３４１ｂには、ストラップが通される通し穴３４３が設けられている。通し穴３４３に通されたストラップは、突起部３４２に引っかけられる。突起部３４２にストラップが引っ掛けられた状態では、本体部３４１の内側の、突起部３４２を除く空間３４４（言い換えれば、本体部３４１で囲まれた、突起部３４２を除く空間３４４）にはストラップが存在することになる。以後、空間３４４をストラップ配置空間３４４と呼ぶことがある。
【０１１１】
制御部２は、ストラップ保持構造３４０を表す部品データを生成する場合には、本体部３４１及び突起部３４２だけではなく、通し穴３４３及びストラップ配置空間３４４にもデータを割り当てる。具体的には、制御部２は、本体部３４１及び突起部３４２の各分割要素に対して第２データを割り当てるだけではなく、通し穴３４３及びストラップ配置空間３４４の各分割要素に対しても第２データを割り当てる。そして、制御部２は、本体部３４１、突起部３４２、通し穴３４３及びストラップ配置空間３４４の各分割要素に対して割り当てた第２データから成る配列データを、ストラップ保持構造３４０を表す部品データとする。
【０１１２】
成形構造である本体部３４１は、自動設計処理において、他の成形構造及びケースと重ねて配置することが可能である。したがって、制御部２は、本体部３４１の各分割要素に対して“１”の第２データを割り当てる。一方で、突起部３４２にはストラップが引っ掛けられることから、突起部３４２は、成形構造であるものの、他の物体に重ねて配置することはできない。そこで、突起部３４２の各分割要素には、例外的に、重ね不可部品と同様に“２”の第２データを割り当てる。また、ストラップが通される通し穴３４３には、被配置部品を配置することができない。そこで、通し穴３４３の各分割要素に対しては、重ね不可部品と同様に“２”の第２データを割り当てる。これにより、配置設計において、通し穴３４３に被配置部品が自動配置される可能性を低減することができる。同様に、ストラップ配置空間３４４の各分割要素に対しては“２”の第２データを割り当てる。これにより、配置設計において、ストラップ配置空間３４４に被配置部品が自動配置される可能性を低減することができる。
【０１１３】
図２９は基板３５０を示す斜視図である。図２９に示されるように、基板３５０は、基板本体３５１と、基板本体３５１に搭載された電子部品３５２とを備える。制御部２は、重ね不可部品である基板３５０を表す部品データを生成する場合には、基板本体３５１及び電子部品３５２の各分割要素に対して“２”の第２データを割り当てる。
【０１１４】
図３０はネジボス３６０を示す斜視図である。図３０に示されるように、ネジボス３６０は、重ね不可部品であるネジ３６１と、ネジ３６１を保持する保持構造３６２とを備える。保持構造３６２は、ケース３１０と一体成形される成形構造である。保持構造３６２は、ネジ３６１の軸を収納する第１部分３６２１と、ネジ３６１の頭を収納する第２部分３６２２とを備える。第１部分３６２１及び第２部分３６２２の一方がフロントケース３１１と一体成形され、第１部分３６２１及び第２部分３６２２の他方がバックケース３１２と一体成形される。制御部２は、ネジボス３６０を表す部品データを生成する場合には、ネジ３６１の各分割要素に対して“２”の第２データを割り当てる。また、制御部２は、保持構造３６２の各分割要素に対して“１”の第２データを割り当てる。
【０１１５】
ボタン構造３２２、電池構造３３２、ストラップ保持構造３４０、基板３５０及びネジボス３６０を用いた学習処理の単位学習処理が開始すると、制御部２は、最初のステップｓ２１において、体積が最大の電池構造３３２を第１操作対象部品とし、体積が２番目に大きい基板３５０を第２操作対象部品とする。そして、制御部２は、ステップｓ２２〜ｓ２４を実行する。
【０１１６】
ステップｓ２４では、制御部２は、電池構造３３２の行動と基板３５０の行動とを交互に決定する。そして制御部２は、電池構造３３２の行動を決定するたびに（ステップｓ３２ａ）、入力状態データの更新（ステップｓ３３ａ）、報酬の決定（ステップｓ３４ａ）、参照リストの更新（ステップｓ３５ａ）、ＮＮパラメータの学習（ステップｓ３６ａ）及び干渉判定（ステップｓ３７ａ）を行う。また、制御部２は、基板３５０の行動を決定するたびに（ステップｓ３２ｂ）、入力状態データの更新（ステップｓ３３ｂ）、報酬の決定（ステップｓ３４ｂ）、参照リストの更新（ステップｓ３５ｂ）、ＮＮパラメータの学習（ステップｓ３６ｂ）及び干渉判定（ステップｓ３７ｂ）を行う。制御部２は、干渉判定において、干渉が発生してないと判断すると、ステップｓ２４の処理を終了する。
【０１１７】
ステップｓ２４の後、制御部２は、ステップｓ２５を実行する。このステップｓ２５ではＮＯと判定され、ステップｓ２６が実行される。ステップｓ２６では、第１操作対象部品とされた電池構造３３２が対象空間に固定される。
【０１１８】
ステップｓ２６の後、ステップｓ２１が再度実行される。このステップｓ２１においては、基板３５０が第１操作対象部品とされる。また、体積が３番目に大きいボタン構造３２２が第２操作対象部品とされる。その後、ステップｓ２２〜ｓ２４が実行される。ステップｓ２４では、電池構造３３２が固定配置された対象空間において、基板３５０とボタン構造３２２が移動させられる。
【０１１９】
ステップｓ２４の後、ステップｓ２５が実行される。このステップｓ２５ではＮＯと判定され、ステップｓ２６が実行される。ステップｓ２６では、第１操作対象部品とされた基板３５０が対象空間に固定される。
【０１２０】
ステップｓ２６の後、ステップｓ２１が再度実行される。このステップｓ２１においては、ボタン構造３２２が第１操作対象部品とされる。また、体積が４番目に大きいストラップ保持構造３４０が第２操作対象部品とされる。その後、ステップｓ２２〜ｓ２４が実行される。ステップｓ２４では、電池構造３３２及び基板３５０が固定配置された対象空間において、ボタン構造３２２とストラップ保持構造３４０が移動させられる。
【０１２１】
ステップｓ２４の後、ステップｓ２５が実行される。このステップｓ２５ではＮＯと判定され、ステップｓ２６が実行される。ステップｓ２６では、第１操作対象部品とされたボタン構造３２２が対象空間に固定される。
【０１２２】
ステップｓ２６の後、ステップｓ２１が再度実行される。このステップｓ２１においては、ストラップ保持構造３４０が第１操作対象部品とされる。また、体積が最も小さいネジボス３６０が第２操作対象部品とされる。その後、ステップｓ２２〜ｓ２４が実行される。ステップｓ２４では、電池構造３３２、基板３５０及びボタン構造３２２が固定配置された対象空間において、ストラップ保持構造３４０とネジボス３６０が移動させられる。
【０１２３】
ステップｓ２４の後、ステップｓ２５が実行される。このステップｓ２５ではＹＥＳと判定され、単位学習処理が終了する。
【０１２４】
以上のような、ボタン構造３２２、電池構造３３２、ストラップ保持構造３４０、基板３５０及びネジボス３６０を用いた単位学習処理が規定回数実行されると（ステップｓ１２のＹＥＳ）、学習処理が終了する。学習処理が終了すると、制御部２は、学習処理が終了した時点の第１及び第２ニューラルネットワークのＮＮパラメータを学習済みＮＮパラメータとして記憶部３に記憶する。以後、第１ニューラルネットワークの学習済みＮＮパラメータを第１学習済みＮＮパラメータと呼ぶことがある。また、第２ニューラルネットワークの学習済みＮＮパラメータを第２学習済みＮＮパラメータと呼ぶことがある。
【０１２５】
なお、上記の単位学習処理においては、操作対象の使用対象部品の行動が決定されるたびにＮＮパラメータの学習が行われているが、ステップｓ３６ａ及びｓ３６ｂのうちの一方が実行されなくてもよい。
【０１２６】
また、単位学習処理においては、ステップｓ３５ａが複数回実行されるたびにステップｓ３６ａが実行されてもよい。また、単位学習処理においては、ステップｓ３５ｂが複数回実行されるたびにステップｓ３６ｂが実行されてもよい。
【０１２７】
また、ステップｓ３６ａにおいて、第１及び第２ニューラルネットワークの一方のＮＮパラメータを学習し、ステップｓ３６ｂにおいて、第１及び第２ニューラルネットワークの他方のＮＮパラメータを学習してもよい。
【０１２８】
また制御部２は、学習処理を複数回実行した後の第１及び第２ニューラルネットワークのＮＮパラメータを、学習済みＮＮパラメータとして記憶部３に記憶してもよい。制御部２は、複数回の学習処理において同じ電子機器を使用してもよいし、学習処理ごとに異なる電子機器を使用してもよい。
【０１２９】
また上記の例では、ケースの肉厚部分の各分割要素に“１”のデータが割り当てられているが、ケースの肉厚部分の一部の各分割要素には“２”のデータが割り当てられてもよい。この場合、学習処理においては、ケースにおいて“２”のデータが割り当てられた部分に他の物体が重なった場合には干渉として扱われる。
【０１３０】
また、ケースの内側の面よりも内側の空洞部分だけを配置空間としてもよい。この場合には、ケースの肉厚部分の各分割要素には“２”のデータが割り当てられる。
【０１３１】
以上のように、本例では、制御部２は、入力状態データに基づいてＮＮパラメータを学習することによって、配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係を学習している。そして、制御部２は、当該関係を、配置空間において複数の被配置部品を仮想的に移動させながら機械学習している。これにより、当該関係を適切に学習することができる。よって、制御部２は、配置設計に必要な時間を短くすることができる。その結果、設計コストの削減が可能となる。
【０１３２】
＜配置設計について＞
図３１は配置設計の一例を示すフローチャートである。制御部２が記憶部３内の配置設計プログラム３ａを実行することによって、図３１に示される配置設計が制御部２で実行される。図３１は、制御部２が、電子機器が備える複数の被配置部品についての配置空間での配置を自動的に決定する場合の制御部２の動作の一例が示されている。配置設計では、対象空間において干渉が発生しなくなるまで複数の被配置部品が移動させられることによって、配置空間での当該複数の被配置部品の配置が決定される。以後、配置設計において配置が決定される被配置部品を設計対象部品と呼ぶことがある。
【０１３３】
制御部２は、強化学習と同様に、例えば２つのニューラルネットワーク１０を使用して配置設計を行う。以後、配置設計で使用される２つのニューラルネットワーク１０を、それぞれ第３ニューラルネットワーク及び第４ニューラルネットワークと呼ぶことがある。
【０１３４】
第３ニューラルネットワークのＮＮパラメータとしては、第１学習済みＮＮパラメータが使用される。第４ニューラルネットワークのＮＮパラメータとしては、第２学習済みＮＮパラメータが使用される。第３ニューラルネットワークは、それに対応する設計対象部品に行うべき行動を決定するためのＱ値を出力する。制御部２は、第３ニューラルネットワークから出力される７つのＱ値に基づいて、それに対応する設計対象部品に行うべき行動を決定する。同様に、第４ニューラルネットワークは、それに対応する設計対象部品に行うべき行動を決定するためのＱ値を出力する。制御部２は、第４ニューラルネットワークから出力される７つのＱ値に基づいて、それに対応する設計対象部品に行うべき行動を決定する。
【０１３５】
図３１に示されるように、配置設計では、まずステップｓ４１が実行される。ステップｓ４１において、制御部２は、配置空間での配置を決定する複数の設計対象部品のうちの２つの設計対象部品を操作対象として決定する。制御部２は、上述のステップｓ２１と同様に、例えば、体積が最大の設計対象部品を第３操作対象部品とし、体積が２番目に大きい設計対象部品を第４操作対象部品とする。そして、制御部２は、第３操作対象部品を第３ニューラルネットワークに対応する設計対象部品とし、第４操作対象部品を第４ニューラルネットワークに対応する設計対象部品とする。
【０１３６】
次にステップｓ４２において、制御部２は、第３及び第４操作対象部品を対象空間に仮配置する。ステップｓ４２では、制御部２は、上述のステップｓ２２と同様に、第３及び第４操作対象部品が互いに干渉するように配置空間に第３及び第５操作対象部品を配置する。
【０１３７】
次にステップｓ４３において、制御部２は、配置空間での第３及び第４操作対象部品の状態を表す入力状態データ（言い換えれば、入力合成データ）を、上述の図９に示される処理を実行して生成する。
【０１３８】
次にステップｓ４４において、制御部２は、ステップｓ４２で生成した入力合成データと、第３及び第４ニューラルネットワークとを用いて、配置空間での第３操作対象部品の配置を決定する。ステップｓ４３の処理は後で詳細に説明する。
【０１３９】
次にステップｓ４５において、制御部２は、すべての設計対象部品の配置を決定したか否かを判定する。ステップｓ４５においてＹＥＳと判定されると、配置設計が完了する。一方で、ステップｓ４５においてＮＯと判定されると、ステップｓ４１が再度実行される。２回目以降のステップｓ４１では、制御部２は、前回のステップｓ４１において第４操作対象部品とした設計対象部品を、新たな第３操作対象部品に決定する。そして、制御部２は、未だ操作対象とされてない設計対象部品のうち、最も体積が大きい設計対象部品を新たな第４操作対象部品に決定する。
【０１４０】
次に制御部２は、ステップｓ４２を実行して、新たな第３及び第４操作対象部品が互いに干渉するように、当該第３及び第４操作対象部品を配置空間に仮配置する。これにより、対象空間には、配置が確定されている設計対象部品と、新たな第３及び第４操作対象部品とが配置される。
【０１４１】
次に制御部２は、ステップｓ４３を実行して、対象空間において現在配置されている、第３及び第４操作対象部品を含む複数の設計対象部品についての配置空間での状態を表す入力合成データを、図９に示される処理を実行して生成する。そして、制御部２は、ステップｓ４４を実行し、以後同様に動作する。ステップｓ４５においてＹＥＳと判定された時点においては、配置を決定すべきすべての設計対象部品のそれぞれが他の物体と干渉しないように配置空間に配置されている。これにより、すべての設計対象部品の配置が完了して配置設計が完了する。
【０１４２】
図３２は、ステップｓ４４の処理の一例を詳細に示すフローチャートである。図３２に示されるように、ステップｓ４４では、まずステップｓ５１が実行される。ステップｓ５１において、制御部２は、ステップｓ４３で生成された入力状態データ（つまり入力合成データ）を第３ニューラルネットワークに入力する。
【０１４３】
次にステップｓ５２において、制御部２は、第３ニューラルネットワークに対応する第３操作対象部品の行動を決定し、決定した行動を第３操作対象部品に行う。制御部２は、ステップｓ５１において入力状態データが入力された第３ニューラルネットワークの出力に基づいて、第３操作対象部品に行う行動を決定する。具体的には、制御部２は、第３ニューラルネットワークから出力される７個のＱ値のうち、最大のＱ値に対応する行動を第３操作対象部品に対して行う。制御部２は、学習処理と同様に、例えば、分割要素の１つ分だけ、第３操作対象部品を移動させる。例えば、制御部２は、第３操作対象部品を＋Ｚ方向に移動させる場合、分割要素の１つ分だけ＋Ｚ方向に第３操作対象部品を移動させる。
【０１４４】
ステップｓ５２の後、ステップｓ５３が実行される。ステップｓ５３において、制御部２は、上述のステップｓ３３ａ及びｓ３３ｂと同様に、ステップｓ５２での第３操作対象部品の行動に応じて、入力状態データ（つまり入力合成データ）を更新する。制御部２は、ステップｓ５２において第３操作対象部品を移動させた後における配置空間での複数の設計対象部品の状態を表す入力状態データを生成して、入力状態データを更新する。
【０１４５】
次にステップｓ５４において、制御部２は、上述のステップｓ３７ａ及びｓ３７ｂと同様に、更新後の入力状態データに基づいて干渉判定を行う。ステップｓ５４においてＹＥＳと判定されると、つまり、対象空間において干渉が発生していると判定されると、ステップｓ５５が実行される。一方で、ステップｓ５４においてＮＯと判定されると、つまり、対象空間において干渉が発生していないと判定されると、ステップｓ５９が実行される。
【０１４６】
ステップｓ５９において、制御部２は、第３操作対象部品としている設計対象部品の配置を確定する。具体的には、制御部２は、第３操作対象部品としている設計対象部品についての配置空間での現在の位置を、当該設計対象部品の最終的な配置位置とする。第３操作対象部品としている設計対象部品の配置が確定すると、ステップｓ４４が終了する。
【０１４７】
ステップｓ５５においては、制御部２は、現在の入力状態データ（つまり、現在の入力合成データ）を第４ニューラルネットワークに入力する。言い換えれば、制御部２は、ステップｓ５３で更新された入力合成データを第４ニューラルネットワークに入力する。
【０１４８】
次にステップｓ５６において、制御部２は、第４ニューラルネットワークに対応する第４操作対象部品の行動を決定し、決定した行動を第４操作対象部品に行う。制御部２は、第３操作対象部品の行動を決定する場合と同様に、最新の入力状態データが入力されている第４ニューラルネットワークの出力に基づいて第４操作対象部品の行動を決定する。ステップｓ５６において、制御部２は、例えば、分割要素の１つ分だけ、第４操作対象部品を移動させる。
【０１４９】
ステップｓ５６の後、ステップｓ５７が実行される。ステップｓ５７において、制御部２は、ステップｓ５３と同様に、ステップｓ５６での第４操作対象部品の行動に応じて、入力状態データ（つまり入力合成データ）を更新する。
【０１５０】
次にステップｓ５８において、制御部２は干渉判定を行う。ステップｓ５８においてＮＯと判断されると、ステップｓ５９が実行される。一方で、ステップｓ５８においてＹＥＳと判断されると、ステップｓ５１が再度実行される。以後、制御部２は同様に動作する。２回目以降のステップｓ５１では、直前のステップｓ５７で更新された入力状態データが第３ニューラルネットワークに入力される。２回目以降のステップｓ５５では、直前のステップｓ５３で更新された入力状態データが第４ニューラルネットワークに入力される。
【０１５１】
以上のように、ステップｓ４４の処理においては、第３操作対象部品の行動と第４操作対象部品の行動が交互に決定される。そして、操作対象の設計対象部品の行動が決定されるたびに干渉判定が行われる。干渉判定において、干渉が発生してないと判断されると、第３操作対象部品とされている設計対象部品の配置が確定する。第３操作対象部品とされている設計対象部品の配置が確定すると、第３及び第４操作対象部品が変更されて同様の処理が行われる。このような処理が、すべての設計対象部品の配置が確定するまで実行されることによって、配置空間での複数の設計対象部品の配置が自動的に決定される。
【０１５２】
配置設計が終了すると、制御部２は、複数の設計対象部品についての決定した配置を、表示部５に表示させてもよい。また制御部２は、決定した配置を、通信部４を通じて他の装置に通知してもよい。
【０１５３】
なお、制御部２は、配置設計が開始してから所定時間が経過するまでに配置設計が終了しなければ、配置空間での複数の設計対象部品の配置が自動的に決定できなかったとして、配置設計を途中で終了してもよい。
【０１５４】
また、制御部２は、配置を決定する複数の設計対象部品はそのままで、配置空間についての複数種類の大きさのそれぞれについて配置設計を行ってもよい。図３３はこの場合の制御部２の動作の一例を示すフローチャートである。
【０１５５】
図３３に示されるように、制御部２は、ステップｓ６１において、配置空間のサイズを初期値に設定する。制御部２は、ケースのサイズを初期値に設定することによって、配置空間のサイズを初期値に設定する。
【０１５６】
次にステップｓ６２において、制御部２は、ステップｓ６１でサイズが設定された配置空間（言い換えればケース）での複数の設計対象部品の配置を決定する配置設計を開始する。その後、制御部２は、ステップｓ６３において、配置設計が所定時間内に終了するか否かを判定する。制御部２は、配置設計が開始してから所定時間内に終了しない場合には、配置設計を途中で終了して、処理を終了する。一方、制御部２は、配置設計が開始してから所定時間内に終了した場合には、ステップｓ６４を実行する、ステップｓ６４においては、制御部２は配置空間のサイズを小さくする。制御部２は、ケースのサイズを小さくすることによって、配置空間のサイズを小さくする。ステップｓ６４の後、制御部２は、再度ステップｓ６２を実行する。このステップｓ６２では、制御部２は、ステップｓ６３でサイズを小さくした配置空間（言い換えればケース）での複数の設計対象部品の配置を決定する配置設計を開始する。その後、制御部２は、再度ステップｓ６３を実行する。ステップｓ６３においてＹＥＳと判定されると、ステップｓ６４が再度実行されて、配置空間のサイズがさらに小さくされる。以後、制御部２は同様に動作する。
【０１５７】
このように、配置空間のサイズを小さくしながら配置設計を繰り返すことによって、制御部２は、複数の設計対象部品を配置することが可能な最小空間を特定することができる。言い換えれば、制御部２は、複数の設計対象部品を配置することが可能なケースの最小サイズを特定することができる。ステップｓ６３においてＮＯと判定された時点の配置空間のサイズが最小サイズとなる。
【０１５８】
なお、ステップｓ６３においてＮＯと判定された場合にも、ステップｓ６４が実行されてもよい。この場合、配置空間の最小サイズを設定し、最小サイズの配置空間が使用された配置設計が実行されると、処理が終了してもよい。また、互いに異なるサイズの配置空間が使用される配置設計が並列的に実行されてもよい。
【０１５９】
制御部２は、ユーザによって指定される設計対象部品について配置設計を行ってもよい。また制御部２は、ユーザによって指定されるケースを用いて配置設計を行ってもよい。ユーザは、例えば、コンピュータ装置１の入力部６を利用して、制御部２に対して設計対象部品あるいはケースを指定してもよい。また、コンピュータ装置１は、通信部４を通じて、ユーザからの設計対象部品あるいはケースの指定を受けとってもよい。図３４は、この場合における、コンピュータ装置１を含む設計システム４００の構成例を示す図である。
【０１６０】
図３４に示されるように、設計システム４００は、コンピュータ装置１と、サーバ装置４１０と、複数の端末装置４２０とを備える。サーバ装置４１０は、各端末装置４２０と通信することが可能である。サーバ装置４１０は、各端末装置４２０を制御することが可能である。また、サーバ装置４１０は、インターネット等を含むネットワーク４３０を通じてコンピュータ装置１と通信することが可能である。コンピュータ装置１の通信部４はネットワーク４３０に接続されている。サーバ装置４１０及び端末装置４２０のそれぞれは、一種のコンピュータ装置であって、例えばコンピュータ装置１と同様の構成を備えている。
【０１６１】
一般ユーザは、端末装置４２０を利用して、コンピュータ装置１の配置設計を利用することができる。一般ユーザは、端末装置４２０を利用することによって、コンピュータ装置１に対して設計対象部品及びケースの指定を行うことができる。
【０１６２】
図３５は、端末装置４２０の表示部に表示される、一般ユーザが利用する画面５００の一例を示す図である。一般ユーザは、図３５に示される画面５００を利用して、コンピュータ装置１に対して設計対象部品及びケースの指定等を行うことができる。サーバ装置４１０は、端末装置４２０を制御して、端末装置４２０に画面５００を表示させる。
【０１６３】
図３５に示されるように、画面５００には、コンピュータ装置１に対して配置設計の実行を指示するための開始ボタン５６０が含まれている。ユーザは、端末装置４２０の入力部を操作することによって、開始ボタン５６０を操作することができる。開始ボタン５６０が操作されると、端末装置４２０から配置設計の実行を指示する実行指示が出力される。実行指示は、サーバ装置４１０、ネットワーク４３０及びコンピュータ装置１の通信部４を通じて制御部２に通知される。制御部２は、実行指示が通知されると、配置設計を実行する。コンピュータ装置１は、配置設計が終了すると、複数の設計対象部品についての決定した配置を、サーバ装置４１０を通じて、開始ボタン５６０が操作された端末装置４２０に通知してもよい。この場合、端末装置４２０は、コンピュータ装置１から通知された配置を表示してもよい。これにより、ユーザは、コンピュータ装置１が決定した配置を視覚的に確認することができる。ユーザは、コンピュータ装置１が決定した配置をそのまま採用して電子機器の製造を行ったり、コンピュータ装置１が決定した配置を修正した上で電子機器の製造を行ったりする。
【０１６４】
画面５００には、開始ボタン５６０以外にも、複数のチェックボックスが含まれる。ユーザは、端末装置４２０の入力部を操作することによって、チェックボックスにチェックを入れることができる。
【０１６５】
画面５００には、ユーザが設計対象部品を指定するための複数のチェックボックス５１０が含まれる。チェックボックス５１０がチェックされると、チェックされたチェックボックス５１０に対応する部品が選択される。部品が選択された状態で開始ボタン５６０が操作されると、選択された部品が、端末装置４２０から、サーバ装置４１０、ネットワーク４３０及び通信部４を通じて制御部２に通知される。制御部２は、ユーザによって選択された部品を設計対象部品として使用して配置設計を行う。このとき、制御部２は、ユーザによって選択された部品を保持する保持構造が存在する場合には、選択された部品とそれを保持する保持構造を一つの設計対象部品とする。このようにして、設計対象部品がユーザによって指定される。
【０１６６】
図３５の例では、２本の単三乾電池と、温度センサーと、気圧センサーと、アンテナとがユーザによって選択されている。制御部２は、選択された２本の単３乾電池と、それらを保持する保持構造とを備える電池構造を設計対象部品とする。また制御部２は、選択された温度センサーと、それを保持する保持構造とを備える温度センサー構造を設計対象部品とする。また制御部２は、選択された気圧センサーと、それを保持する保持構造とを備える気圧センサー構造を設計対象部品とする。そして制御部２は、選択されたアンテナと、それを保持する保持構造とを備えるアンテナ構造を設計対象部品とする。配置設計では、制御部２は、配置空間での電池構造、温度センサー構造、気圧センサー構造及びアンテナ構造の配置を決定する。
【０１６７】
また画面５００には、ユーザがケースの外形（詳細には外形形状）だけを指定する際にチェックを入れるチェックボックス５２０と、ケースの外形を具体的に指定するための複数のチェックボックス５２１とが含まれている。チェックボックス５２０にチェックが入れられると、チェックボックス５２１のチェックが可能となる。チェックされたチェックボックス５２１に対応する外形がケースの外形として選択される。図３５の例では、正方形がケースの外形として選択されている。チェックボックス５２０及び５２１がチェックされた状態で、開始ボタン５６０が操作されると、端末装置４２０から、ユーザによって選択されたケースの外形が、サーバ装置４１０等を介して制御部２に通知される。これにより、ケースの外形がユーザによって指定される。ユーザによって、ケースの外形だけが指定される場合には、配置設計では、コンピュータ装置１に予め登録されているサイズがケースのサイズとして使用される。
【０１６８】
また画面５００には、ケースの構造を表すケース構造データをコンピュータ装置１に送信するためのチェックボックス５３０が含まれる。ケース構造データは例えばＣＡＤデータである。チェックボックス５３０がチェックされた状態で、開始ボタン５６０が操作されると、端末装置４２０はケース構造データを送信する。ケース構造データは、サーバ装置４１０等を通じて制御部２に入力される。制御部２は、受信したケース構造データに基づいて配置空間データを生成する。そして、制御部２は、ケース構造データに基づいて生成した配置空間データを用いて配置設計を行う。
【０１６９】
また画面５００には、コンピュータ装置１に、複数の設計対象部品を配置することが可能なケースの最小サイズを特定させるためのチェックボックス５４０が含まれる。チェックボックス５４０がチェックされた状態で、開始ボタン５６０が操作されると、制御部２は、上述の図３３に示される処理を実行して、ユーザによって指定された複数の設計対象部品を配置することが可能なケースの最小サイズを特定する。コンピュータ装置１は、図３３の処理が終了すると、サーバ装置４１０を通じて、開始ボタン５６０が操作された端末装置４２０に対して、特定したケースの最小サイズを通知してもよい。この場合、端末装置４２０は通知された最小サイズを表示してもよい。
【０１７０】
また画面５００には、ユーザがケースのサイズを指定するためのチェックボックス５５０が含まれる。チェックボックス５５０がチェックされると、端末装置４２０には、ケースのサイズを指定するためのサイズ指定画面が表示される。チェックボックス５５０がチェックされた場合には、ケースの外形は例えば直方体となる。ユーザは、サイズ指定画面を利用して、ケースの長さ、幅及び高さのサイズを指定することができる。ユーザが、サイズ指定画面を利用してケースのサイズを指定すると、端末装置４２０の表示が、サイズ指定画面から画面５００に切り替わる。そして、画面５００の開始ボタン５６０が操作されると、ユーザによって指定されたケースのサイズが、サーバ装置４１０等を通じて制御部２に通知される。制御部２は、ユーザによって指定されたケースのサイズに基づいて配置空間を設定し、設定した配置空間を用いて配置設計を行う。
【０１７１】
図３６は、端末装置４２０に表示される、一般ユーザが利用する画面の他の例を示す図である。図３６の例では、端末装置４２０はタブレット端末である。図３６に示される画面６００には、上述の開始ボタン５６０及びチェックボックス５１０，５２０，５３０，５４０が含まれる。図３６の例では、２本の単四乾電池と、ボタン及びストラップ保持構造が選択されている。制御部２は、選択された２本の単４乾電池と、それらを保持する保持構造とを備える電池構造を設計対象部品とする。また制御部２は、選択されたボタンと、それを保持する保持構造とを備えるボタン構造を設計対象部品とする。そして制御部２は、選択されたストラップ保持構造を設計対象部品とする。配置設計では、制御部２は、配置空間での電池構造、ボタン構造及びストラップ保持構造の配置を決定する。
【０１７２】
なお、画面５００は、コンピュータ装置１の表示部５に表示されてもよい。また、画面６００は、コンピュータ装置１の表示部５に表示されてもよい。
【０１７３】
設計システム４００は、サーバ装置４１０を備えていなくてもよい。この場合、各端末装置４２０にはネットワーク４３０が接続される。各端末装置４２０は、ネットワーク４３０を通じてコンピュータ装置１と通信する。
【０１７４】
以上のように、本例では、制御部２は、自動設計処理で使用する対象空間及び被配置物のそれぞれを複数の分割要素に分割している。そして、制御部２は、対象空間及び被配置物のそれぞれの各分割要素に割り当てたデータに基づいて入力状態データを生成している。これにより、自動設計処理で扱うデータ量を低減することができる。よって、自動設計処理に必要な時間を短くすることができる。
【０１７５】
また本例では、入力状態データはＣＡＤデータに基づくデータであることから、入力状態データを簡単に生成することができる。
【０１７６】
また本例では、配置空間において被配置物が他の物体と干渉するか否かに基づいて学習処理及び配置設計を行っている。これにより、複数の被配置物のそれぞれが他の物体と干渉しないように当該複数の被配置物を自動的に配置空間に配置することが可能となる。
【０１７７】
また本例では、複数の被配置部品の保持構造同士が重なった場合であっても干渉と扱われない。これにより、配置設計において、複数の被配置部品の保持構造同士を重ねて配置することが可能となる。その結果、複数の被配置部品の配置面積を小さくすることが可能となる。
【０１７８】
また本例では、ケースは、保持構造と重なったとしても干渉と扱われない部分を有している。これにより、配置設計において、保持構造をケースに重ねて配置することが可能となる。よって、被配置部品の配置面積を小さくすることが可能となる。
【０１７９】
また本例では、被配置部品の少なくとも一部が配置空間外に存在する場合には干渉と扱われる。これにより、被配置部品の少なくとも一部が配置空間外に存在することを、物体間の干渉と同じように扱うことができる。よって、自動設計処理が簡素化される。
【０１８０】
また本例では、制御部２は、保持構造を有する被配置部品を表す部品データを生成する場合には、保持構造の分割要素と被保持部品の分割要素に対して互いに異なる値を割り当てる。これにより、自動設計処理において、保持構造と被保持部品とを容易に区別することができる。よって、自動設計処理が簡素化される。
【０１８１】
また本例では、ケースの分割要素と保持構造の分割要素に対して同じ値が割り当てられる。これにより、自動設計処理において、ケースを表すデータと保持構造を表すデータとを同じように扱うことができる。よって、自動設計処理が簡素化される。
【０１８２】
また本例では、配置空間の周囲に存在する周囲空間の分割要素に対しては、他の物体と重なった場合に干渉と扱われる部品の分割要素と同じ値が割り当てられる。これにより、自動設計処理において、被配置部品の少なくとも一部が配置空間外に存在することを干渉として容易に扱うことが可能となる。よって、自動設計処理が簡素化される。
【０１８３】
＜自動設計処理の他の例＞
以下に、自動設計処理についての複数の他の例について説明する。
【０１８４】
＜第１の他の例＞
本例では、分割要素のサイズが複数用意される。そして、制御部２は、各サイズについて、分割要素が当該サイズに設定された場合の入力状態データを用いて学習処理及び配置設計を行う。
【０１８５】
学習処理では、第１及び第２ニューラルネットワークから成る第１のニューラルネットワーク対が、分割要素のサイズの数と同じ数だけ使用される。複数の第１のニューラルネットワーク対は、分割要素の複数のサイズとそれぞれ対応する。同様に、配置設計では、第３及び第４ニューラルネットワークから成る第２のニューラルネットワーク対が、分割要素のサイズの数と同じ数だけ使用される。複数の第２のニューラルネットワーク対は、分割要素の複数のサイズとそれぞれ対応する。
【０１８６】
制御部２は、複数の第１のニューラルネットワーク対のそれぞれについて、当該第１のニューラルネットワーク対を用いた学習処理を行う。制御部２は、ある第１のニューラルネットワーク対を用いて学習処理を行う場合には、当該ある第１のニューラルネットワーク対に対応するサイズに分割要素が設定された場合の入力状態データを、当該ある第１のニューラルネットワーク対を構成する第１及び第２ニューラルネットワークのそれぞれに入力する。
【０１８７】
例えば、分割要素の複数のサイズに、第１のサイズと第２のサイズが含まれているとする。第２のサイズは第１のサイズよりも大きいものする。分割要素が立方体である場合、第２のサイズに設定された分割要素を構成する立方体は、第１のサイズに設定された分割要素を構成する立方体よりも大きくなる。
【０１８８】
制御部２は、第１のサイズに対応する第１のニューラルネットワーク対を用いた学習処理では、分割要素が第１のサイズに設定された場合の入力状態データを、上述のステップｓ３１ａにおいて、当該第１のニューラルネットワーク対の第１ニューラルネットワークに入力する。また、制御部２は、上述のステップｓ３１ｂにおいて、分割要素が第１のサイズに設定された場合の入力状態データを、当該第１のニューラルネットワーク対の第２ニューラルネットワークに入力する。
【０１８９】
同様に、制御部２は、第２のサイズに対応する第１のニューラルネットワーク対を用いた学習処理では、分割要素が第２のサイズに設定された場合の入力状態データを、当該第１のニューラルネットワーク対の第１及び第２ニューラルネットワークのそれぞれに入力する。
【０１９０】
分割要素のサイズが第１のサイズに設定される場合、分割要素のサイズが第２のサイズに設定される場合よりも、配置空間及び被配置物が細かく分割される。したがって、入力状態データのデータ量が大きくなる。よって、第１のサイズに対応する第１のニューラルネットワーク対の第１及び第２ニューラルネットワークのそれぞれの入力素子の数は、第２のサイズに対応する第１のニューラルネットワーク対の第１及び第２ニューラルネットワークのそれぞれの入力素子の数よりも大きくなる。また、第１のサイズに対応する第１のニューラルネットワーク対が用いられた学習処理では、第２のサイズに対応する第１のニューラルネットワーク対が用いられた学習処理よりも、被配置物の１回の移動量（つまり、ステップｓ３２ａでの移動量及びステップｓ３２ｂで移動量）が小さくなる。つまり、第１のサイズに対応する第１のニューラルネットワーク対が用いられた学習処理では、被配置物を細かく移動させることができる。分割要素のサイズによって、配置空間データ、部品データ及び入力状態データのデータ量が変化することから、分割要素のサイズは、配置空間データ、部品データ及び入力状態データの情報量あるいは解像度を示していると言える。
【０１９１】
制御部２は、複数の第２のニューラルネットワーク対のそれぞれについて、当該第２のニューラルネットワーク対を用いた配置設計を行う。制御部２は、ある第２のニューラルネットワーク対を用いて配置設計を行う場合には、当該ある第２のニューラルネットワーク対に対応するサイズに分割要素が設定された場合の入力状態データを、当該ある第２のニューラルネットワーク対を構成する第３及び第４ニューラルネットワークのそれぞれに入力する。また制御部２は、分割要素のあるサイズに対応する第２のニューラルネットワーク対を用いた配置設計においては、当該第２のニューラルネットワーク対の第３及び第４ニューラルネットワークのＮＮパラメータとして、当該あるサイズに対応する第１のニューラルネットワーク対の第１及び第２ニューラルネットワークの学習済みＮＮパラメータをそれぞれ使用する。
【０１９２】
例えば、分割要素の複数のサイズに、上述の第１のサイズ及び第２のサイズが含まれる場合を考える。制御部２は、第１のサイズに対応する第２のニューラルネットワーク対を用いた配置設計では、分割要素が第１のサイズに設定された場合の入力状態データを、上述のステップｓ５１において、当該第２のニューラルネットワーク対の第３ニューラルネットワークに入力する。そして、当該第３ニューラルネットワークのＮＮパラメータとして、第１のサイズに対応する第１のニューラルネットワーク対の第１ニューラルネットワークの学習済みＮＮパラメータを使用する。また、制御部２は、上述のステップｓ５５において、分割要素が第１のサイズに設定された場合の入力状態データを、当該第２のニューラルネットワーク対の第４ニューラルネットワークに入力する。そして、制御部２は、当該第４ニューラルネットワークのＮＮパラメータとして、第１のサイズに対応する第１のニューラルネットワーク対の第２ニューラルネットワークの学習済みＮＮパラメータを使用する。
【０１９３】
同様に、制御部２は、第２のサイズに対応する第２のニューラルネットワーク対を用いた配置設計では、分割要素が第２のサイズに設定された場合の入力状態データを、当該第２のニューラルネットワーク対の第３及び第４ニューラルネットワークのそれぞれに入力する。そして、制御部２は、当該第３及び第４ニューラルネットワークのＮＮパラメータとして、第２のサイズに対応する第１のニューラルネットワーク対の第１及び第２ニューラルネットワークの学習済みＮＮパラメータをそれぞれ使用する。
【０１９４】
上述の説明から理解できるように、分割要素のサイズが大きくなると、入力状態データのデータ量が減少する。したがって、分割要素のサイズを大きくすることによって、学習処理及び配置設計に必要な時間を減少させることができる。また、分割要素のサイズを大きくすることによって、配置設計が所定時間内に完了する可能性が増加する。
【０１９５】
一方で、分割要素のサイズが大きくなると、学習処理及び配置設計での被配置部品の１回の移動量が大きくなる。そのため、配置設計において、複数の被配置部品の配置面積が大きくなる可能がある。
【０１９６】
分割要素のサイズが複数用意される場合には、制御部２は、分割要素のサイズを小さくしながら配置設計を繰り返してもよい。言い換えれば、制御部２は、入力状態データの情報量（言い換えれば解像度）を大きくしながら配置設計を繰り返してもよい。図３７はこの場合の制御部２の動作の一例を示すフローチャートである。
【０１９７】
図３７に示されるように、ステップｓ７１において、制御部２は、分割要素を最大サイズに設定する。次にステップｓ７２において、制御部２は、最大サイズに対応する第２のニューラルネットワーク対を用いた配置設計を行う。コンピュータ装置１は、ステップｓ７２での配置設計の結果を、サーバ装置４１０を介して端末装置４２０に通知してもよい。この場合、端末装置４２０は通知された結果を表示してもよい。
【０１９８】
次にステップｓ７３において、制御部２は、分割要素のサイズを１段階小さくする。そしてステップｓ７４において、制御部２は、設定されたサイズに対応する第２のニューラルネットワーク対を用いた配置設計を行う。コンピュータ装置１は、ステップｓ７４での配置設計の結果を、サーバ装置４１０を介して端末装置４２０に通知してもよい。この場合、端末装置４２０は通知された結果を表示してもよい。
【０１９９】
次にステップｓ７５において、制御部２は、分割要素のサイズが最小サイズであるか否かを判断する。ステップｓ７５においてＹＥＳと判定されると、処理が終了する。一方で、ステップｓ７５においてＮＯと判定されると、ステップｓ７３が再度実行されて、分割要素のサイズがさらに１段階小さくされる。その後、ステップｓ７４が実行されて、設定されたサイズに対応する第２のニューラルネットワーク対を用いた配置設計が行われる。その後、制御部２は同様に動作する。
【０２００】
なお、制御部２は、ユーザの指示に応じて図３７に示される処理を実行してもよい。ユーザは、例えば、入力部６を操作することによって、図３７に示される処理の実行を制御部２に指示してもよい。また、端末装置４２０が表示する上述の画面５００あるいは画面６００に、図３７に示される処理の実行を指示するための指示用チェックボックスを設けてもよい。この場合、指示用チェックボックスがチャックされた状態で開始ボタン５６０が操作されると、端末装置４２０から、図３７に示される処理の実行指示が、サーバ装置４１０及び通信部４を通じて制御部２に通知される。制御部２は、実行指示が通知されると、図３７に示される処理を実行する。
【０２０１】
＜第２の他の例＞
２つの部品の組み合わせによって、当該２つの部品を一定距離以上あけて配置する必要がある。例えば、アンテナと金属物とは一定距離以上あけて配置する必要がある。また、ノイズの影響を受けやすい部品と、ノイズを発生しやすい部品とは、一定距離以上あけて配置する必要がある。また、熱に弱い部品と、熱を発生しやすい部品とは、一定距離以上あけて配置する必要がある。また、振動を発生する部品と、振動により悪影響を受けやすい部品とは、一定距離以上あけて配置する必要がある。
【０２０２】
そこで、本例では、互いに離して配置すべき２つの設計対象部品の一方のサイズを本来の値よりも一時的に大きくして配置設計を行うことによって、配置設計において、当該２つの設計対象部品が互いに離れて自動配置される可能性を向上させる。以下に本例の配置設計について詳細に説明する。以下の説明では、互いに離して配置すべき２つの設計対象部品のそれぞれを離間部品と呼ぶことがある。また、互いに離して配置すべき２つの設計対象部品を第１離間部品及び第２離間部品とそれぞれ呼ぶことがある。
【０２０３】
本例の配置設計では、制御部２は、第１離間部品を操作対象とする場合に、配置空間において配置が確定された第２離間部品が存在するときには、操作対象の第１離間部品の行動を決定した後、第１及び第２離間部品の一方のサイズを本来の値よりも大きくした状態で干渉判定を行う。制御部２は、第１離間部品と第２離間部品とを離す必要がある距離の分だけ、第１及び第２離間部品の一方のサイズを本来の値よりも大きくする。
【０２０４】
例えば、操作対象の第１離間部品が第３操作対象部品である場合を考える。この場合、制御部２は、図３２のステップｓ５２の後、ステップｓ５３において、第１離間部品あるいは第２離間部品の一方の部品のサイズを本来の値よりも大きくした状態での入力状態データを生成する。ステップｓ５３では、サイズを本来の値よりも大きくした離間部品を表す部品データとしては、本来のサイズでの離間部品を構成する複数の分割要素に割り当てられたデータから成る配列データではなく、サイズを本来の値よりも大きくした場合の離間部品を構成する複数の分割要素に割り当てられたデータから成る配列データが使用される。
【０２０５】
ステップｓ５３の後、ステップｓ５４において、制御部２は、ステップｓ５３で生成した入力状態データ、つまり、第１離間部品あるいは第２離間部品の一方の部品のサイズを本来の値よりも大きくした状態での入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップｓ５４においてＮＯと判定されると、ステップｓ５９が実行されて、第１離間部品の配置が決定される。一方で、ステップｓ５４においてＹＥＳと判定されると、制御部２は、サイズを変更した離間部品を本来のサイズに戻し、本来のサイズの離間部品を表す部品データを用いた入力状態データを生成する。そして、制御部２は、ステップｓ５５において、当該入力状態データを第４ニューラルネットワークに入力する。以後、制御部２は同様に動作する。
【０２０６】
図３８は、離間部品を表す部品データ９０の一例を示す図である。図３８には、保持構造を備える離間部品を表す部品データ９０が示されている。図３８の左側には、本来のサイズに設定された離間部品を表す部品データ９０が示されている。図３８の右側には、サイズが本来の値よりも大きくされた離間部品を表す部品データ９０が示されている。保持構造を備える離間部品のサイズを本来の値から大きくする場合には、被保持部品のサイズだけが大きくされる。したがって、図３８に示されるように、サイズが本来の値よりも大きくされた離間部品を表す部品データ９０では、保持構造を表す“１”のデータ領域のサイズは変化しておらず、被保持部品を表す“２”のデータ領域が大きくなっている。制御部２は、ステップｓ５３において、図３８の右側に示される部品データ９０を用いて入力状態データを生成する。そして、制御部２は、ステップｓ５４においてＹＥＳと判定されると、図３８の左側に示される部品データ９０を用いて入力状態データを生成する。
【０２０７】
なお制御部２は、ステップｓ５３において、第１及び第２離間部品の両方のサイズを本来の値よりも大きくした状態での入力状態データを生成してもよい。
【０２０８】
また、操作対象の第１離間部品が第４操作対象部品である場合には、ステップｓ５６の後、ステップｓ５７において、制御部２は、第１離間部品あるいは第２離間部品の一方の部品のサイズを本来の値よりも大きくした状態での入力状態データを生成する。そして、ステップｓ５８において、制御部２は、ステップｓ５７で生成した入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップｓ５８においてＹＥＳと判定されると、制御部２は、サイズを変更した離間部品を本来のサイズに戻し、本来のサイズの離間部品を表す部品データを用いた入力状態データを生成する。そして、制御部２は、ステップｓ５１において、当該入力状態データを第３ニューラルネットワークに入力する。以後、制御部２は同様に動作する。なお、制御部２は、ステップｓ５７において、第１及び第２離間部品の両方のサイズを本来の値よりも大きくした状態での入力状態データを生成してもよい。
【０２０９】
以上のように、本例では、制御部２は、配置空間において第１及び第２離間部品が存在する状態において、第１離間部品の配置を決定する場合には、第１及び第２離間部品の少なくとも一方のサイズを本来の値から一時的に大きくしている。これにより、配置設計において、第１及び第２離間部品が互いに離れて自動配置される可能性を向上させることができる。本例では、離間部品のサイズを大きくするといった簡単な処理で、２つの離間部品が互いに離れて配置される可能性を向上させることができることから、配置設計を簡素化することができる。
【０２１０】
なお、配置空間において配置が確定された第２離間部品が複数存在する場合には、制御部２は、操作対象としての第１離間部品のサイズを大きくするか、あるいは、複数の第２離間部品のそれぞれのサイズを大きくした状態で干渉判定を行う。
【０２１１】
＜第３の他の例＞
ケース内に配置される部品によっては、製造上の問題で、当該部品の周囲に他の部品を配置できないことがある。例えば、ケースがフロントケース及びバックケースで構成されている場合を考える。この場合、バックケースに一体成形される、ＵＳＢ等のコネクタの挿入口を有する成形構造については、成形で使用する金型のスライド領域を確保するために、当該成形構造の周囲の特定の空間には、同じバックケースに一体成形されるボス等の部品を配置することができないことがある。
【０２１２】
そこで、本例では、設計対象部品の周囲の所定空間に他の設計対象部品を配置することができない場合に、当該所定空間に当該他の設計対象部品が配置されない可能性を向上することが可能な配置設計について説明する。以下の説明では、その周囲の所定空間に他の操作対象部品を配置できない操作対象部品を第１特定部品と呼ぶことがある。また、第１特定部品の周囲の所定空間に配置することができない操作対象部品を不可部品と呼ぶことがある。また、単に、第１特定部品の周囲の所定空間と言えば、不可部品を配置することができない、第１特定部品の周囲の所定空間を意味する。第１特定部品としては、例えば、バックケースに一体成形される、ＵＳＢのコネクタの挿入口を有する成形構造が考えられる。また、不可部品としては、例えば、バックケースに一体成形されるボスが考えられる。なお、フロントケースに一体成形されるボスについては、バックケースに一体成形される、ＵＳＢのコネクタの挿入口を有する成形構造の周囲に配置することは可能である。
【０２１３】
本例の配置設計では、制御部２は、配置空間において第１特定部品及び不可部品が存在する状態で、第１特定部品あるいは不可部品の配置を決定する場合、第１特定部品の周囲の所定空間の各分割要素に対して“２”を割り当てる。つまり、制御部２は、第１特定部品の周囲の所定空間の各分割要素に対して、他の物体と重なった場合に干渉と扱われる部品の分割要素に割り当てられる値と同じ値を割り当てる。
【０２１４】
例えば、第１特定部品及び不可部品の一方の部品についての配置空間での配置が確定している状態において、第１特定部品及び不可部品の他方の部品が第３操作対象部品である場合を考える。この場合、制御部２は、ステップｓ５３において、第１特定部品を表す部品データに対して、第１特定部品の周囲の所定空間を表す特定空間データを一時的に含める。具体的には、制御部２は、第１特定部品の各分割要素に割り当てられたデータと、その周囲の所定空間の各分割要素に割り当てられたデータとから成る３次元配列データを、一時的に、第１特定部品を表す部品データとして使用する。制御部２は、第１特定部品の周囲の所定空間の各分割要素に対しては“２”を割り当てる。以後、第１特定部品の周囲の所定空間を表す特定空間データを含む、第１特定部品を表す部品データを、第１変形部品データと呼ぶことがある。
【０２１５】
図３９は、第１変形部品データ９０ａの一例を示す図である。図３９の左側には、第１特定部品の周囲の所定空間を表す特定空間データを含まない、本来の部品データ９０が示されている。図３９の右側には、図３９の左側の部品データ９０に対応する第１変形部品データ９０ａが示されている。第１変形部品データ９０ａには、本来の部品データ９０と同じ構成のデータ領域９１と、第１特定部品の周囲の所定空間を表す特定空間データ９２とが含まれる。特定空間データ９２の各値は“２”に設定されている。
【０２１６】
ステップｓ５３において、制御部２は、第１特定部品についての第１変形部品データを生成すると、第１特定部品を表す本来の部品データの代わりに第１変形部品データを用いて、現在の配置空間における、第１特定部品及び不可部品を含む複数の操作対象部品の状態を表す入力状態データを生成する。なお、不可部品を表す部品データについては本来のデータが使用される。ステップｓ５３の後、ステップｓ５４において、制御部２は、ステップｓ５３で生成した入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップｓ５４においてＮＯと判定されると、ステップｓ５９が実行されて、第１特定部品品及び不可部品の他の部品の配置が決定される。一方で、ステップｓ５４においてＹＥＳと判定されると、制御部２は、第１特定部品を表す本来の部品データを用いて入力状態データを生成する。そして、制御部２は、ステップｓ５５において、当該入力状態データを第４ニューラルネットワークに入力する。以後、制御部２は同様に動作する。
【０２１７】
なお、第１特定部品及び不可部品の他方の部品が第４操作対象部品である場合には、ステップｓ５７において、制御部２は、第１特定部品についての第１変形部品データを生成する。そして、制御部２は、第１特定部品を表す本来の部品データの代わりに第１変形部品データを用いて入力状態データを生成する。ステップｓ５７の後、ステップｓ５８において、制御部２は、ステップｓ５７で生成した入力状態データに基づいて、干渉が発生しているか否かを判定する。ステップｓ５８においてＹＥＳと判定されると、制御部２は、第１特定部品を表す本来の部品データを用いて入力状態データを生成する。そして、制御部２は、ステップｓ５１において、当該入力状態データを第３ニューラルネットワークに入力する。以後、制御部２は同様に動作する。
【０２１８】
以上のように、本例では、制御部２は、配置空間において第１特定部品及び不可部品が存在する状態で、第１特定部品あるいは不可部品の配置を決定するとき場合には、第１特定部品の周囲の所定空間の各分割要素に対して、他の物体と重なった場合に干渉と扱われる部品の分割要素に割り当てられる値と同じ値を割り当てる。これにより、配置設計において、第１特定部品の周囲の所定空間に不可部品が自動配置される可能性を低減することができる。本例では、第１特定部品の周囲の所定空間の各分割要素に対して、被保持部品の分割要素に割り当てられる値と同じ値を割り当てるという簡単な処理で、第１特定部品の周囲の所定空間に不可部品が配置される可能性を低減することができる。よって、配置設計を簡素化することができる。
【０２１９】
＜第４の他の例＞
制御部２は、一般ユーザから指示される、設計対象部品の配置条件に基づいて、配置設計を行ってもよい。一般ユーザは、例えば、入力部６を操作することによって、配置条件を制御部２に指定することができる。また、一般ユーザは、端末装置４２０を利用して、コンピュータ装置１に配置条件を指定してもよい。
【０２２０】
例えば、ユーザが、ある設計対象部品を配置空間の特定の場所に配置するという配置条件を指定する場合を考える。この場合、制御部２は、配置設計を開始する時点において、対象の設計対象部品を、配置空間において、ユーザによって指定された特定の場所に固定配置する。そして、制御部２は、対象の設計対象部品を特定の場所に固定配置した状態で配置設計を開始する。
【０２２１】
他の例として、ユーザが、配置空間の特定の場所にはいずれの設計対象部品についても配置しないという配置条件を指定する場合を考える。この場合、制御部２は、配置設計を開始する時点において、対象空間データにおいて、設計対象部品を配置しない場所として指定された場所に対応するデータ領域の各値を“２”に設定する。そして、制御部は、このように変更された対象空間データを用いて配置設計を開始する。これにより、配置設計において、指定された場所に操作対象部品が自動配置される可能性が低減する。
【０２２２】
＜第５の他の例＞
被配置部品によっては、配置設計において、その一部が配置空間外に位置することが許容されることがある。例えば、上述の図３０に示されるネジボス３６０の保持構造３６２については、設計段階において、ケースの外側の余分な部分をカットすることができる。そのため、配置設計において、保持構造３６２の一部は配置空間外に位置することが許容されることがある。
【０２２３】
図４０は、ネジボス３６０の断面構造の一例を示す図である。図４０に示されるように、ネジボス３６０の保持構造３６２の第１部分３６２１は、ネジ３６１の軸３６１ｂが螺合する第３部分３６２３と、軸３６１ｂが螺合しない第４部分３６２４とを備える。保持構造３６２の第２部分３６２２は、ネジ３６１の頭３６１ａを受ける第５部分３６２５と、ネジ３６１の周方向においてネジ３６１の頭３６１ａを取り囲む第６部分３６２６とを備える。
【０２２４】
ネジボス３６０の保持構造３６２においては、少なくとも第３部分３６２３及び第５部分３６２５が存在すれば、ネジ３６１を保持構造３６２に取り付けることができる。したがって、設計段階において、第４部分３６２４及び第６部分３６２６がケースの外側に存在する場合、第４部分３６２４及び第６部分３６２６のケースの外側部分をカットすることができる。そのため、ネジボス３６０の第４部分３６２４及び第６部分３６２６が、配置設計において配置空間外に位置することが許容されることがある。以後、ネジボス３６０の第４部分３６２４及び第６部分３６２６のように、被配置物が有する、配置空間外に位置することが許容される部分を、外配置許容部分と呼ぶことがある。
【０２２５】
本例の学習処理及び配置設計では、被配置部品が有する外配置許容部分が配置空間外に存在する場合には、干渉と扱われない。これにより、被配置部品の一部が配置空間外に位置することが許容されるという配置条件が、「干渉」という共通の基準で自動設計処理において考慮されるようになる。よって、自動設計処理を簡素化することができる。
【０２２６】
本例では、外配置許可部分を有する被配置部品を表す部品データに対して、被配置部品のどの部分が外配置許容部分であるかを特定するための特定データが付加される。制御部２は、学習処理及び配置設計において、外配置許可部分を有する被配置部品を操作対象とする場合、入力状態データの生成に、当該被配置部品についての特定データを使用する。以下に、本例の学習処理及び設計処理について詳細に説明する。以後、外配置許可部分を有する被配置部品を第２特定部品と呼ぶことがある。
【０２２７】
本例の学習処理及び配置設計では、第２特定部品の外配置許容部分が配置空間外に位置する場合に入力状態データを生成する場合には、制御部２は、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“１”から“０”に変更した状態で、第２特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成する。これにより、第２特定部品の外配置許容部分が配置空間外に位置する場合に、干渉と扱われなくなる。制御部２は、特定データに基づいて、第２特定部品の外配置許容部分が配置空間外に位置するか否かを判定する。そして、制御部２は、第２特定部品の外配置許容部分が配置空間外に位置する場合には、外配置許可部分のうち、配置空間外に位置する部分を、特定データに基づいて特定する。
【０２２８】
例えば、学習処理において、第２特定部品が第１操作対象部品である場合を考える。この場合、制御部２は、ステップｓ３３ａにおいて、第２特定部品の外配置許容部分が配置空間外に位置する場合には、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“１”から“０”に変更した状態で、第２特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成して入力状態データを生成する。その後、ステップｓ３３ａで生成された入力状態データが用いられてステップｓ３４ａ〜３７ａ及びｓ３１ｂが実行される。以後、制御部２は同様に動作する。
【０２２９】
また、学習処理において、配置空間での第２特定部品の配置が確定している場合も同様に、制御部２は、第２特定部品の外配置許可部分が配置空間外に位置する場合には、ステップｓ３３ａにおいて、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“１”から“０”に変更した状態で、第２特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成して入力状態データを生成する。
【０２３０】
配置設計についても同様である。例えば、配置設計において、第２特定部品が第３操作対象部品である場合を考える。この場合、制御部２は、ステップｓ５３において、第２特定部品の外配置許容部分が配置空間外に位置する場合には、外配置許可部分のうち、配置空間外に位置する部分の各分割要素に割り当てられたデータを例外的に“１”から“０”に変更した状態で、第２特定部品を表す部品データを、対象空間データあるいは合成済み対象空間データに対して合成して入力状態データを生成する。その後、ステップｓ５３で生成された入力状態データが用いられてステップｓ５４及びｓ５５が実行される。以後、制御部２は同様に動作する。
【０２３１】
なお、第２特定部品は、図４０に示されるネジボス３６０以外であってもよい。また、管理者ユーザが、外配置許可部分を有する被配置部品をコンピュータ装置１に登録できるようにしてもよい。この場合、管理者ユーザは、例えば、入力部６を操作して、外配置許可部分を有する被配置部品をコンピュータ装置１に登録してもよい。また管理者ユーザは、端末装置４２０を利用して、外配置許可部分を有する被配置部品をコンピュータ装置１に登録してもよい。
【０２３２】
図４１は、管理者ユーザが、外配置許可部分を有するネジボス３６０を、端末装置４２０を利用してコンピュータ装置１に登録する場合に端末装置４２０に表示される画面７００の一例を示す図である。管理者ユーザは、画面７００を利用して、外配置許可部分を有するネジボス３６０をコンピュータ装置１に登録することができる。
【０２３３】
図４１に示されるように、画面７００には、入力欄７１０及び登録ボタン７２０が含まれる。入力欄７１０には、第１入力欄７１１、第２入力欄７１２、第３入力欄７１３及び表示欄７１４が含まれる。
【０２３４】
表示欄７１４には、ネジボス３６０の各部位に割り当てられた記号が示されている。表示欄７１４中の“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”及び“Ｅ”は、それぞれ、ネジボス３６０のネジ３６１、第４部分３６２４、第３部分３６２３、第５部分３６２５及び第６部分３６２６を示している。
【０２３５】
第１入力欄７１１は、管理者ユーザが、ネジボス３６０の各部位について、当該部位を外配置許可部分とするか否かを選択するための入力欄である。管理者ユーザは、第１入力欄７１１を操作することによって、ネジボス３６０の各部位について、当該部位を外配置許可部分とするか否かを選択することができる。第１入力欄７１１中の“〇”は、その左側の記号が割り当てられた部位が、外配置許可部分として指定されていることを示している。言い換えれば、第１入力欄７１１中の“〇”は、その左側の記号が割り当てられた部位がケース外に存在しているときに、当該部品についてのケース外の部分をカットすることができることを示している。第１入力欄７１１中の“×”は、その左隣の記号が割り当てられた部位が、外配置許可部分として指定されていないことを示している。
【０２３６】
第２入力欄７１２は、管理者ユーザが、ネジボス３６０の各部位について、当該部位をフロントケースに対応付けるか、バックケースに対応付けるかを選択するための入力欄である。管理者ユーザは、第２入力欄７１２を操作することによって、ネジボス３６０の各部位について、当該部位をフロントケースに対応付けるか、バックケースに対応付けるかを選択することができる。バックケースに対応付けられた部位は、バックケースと一体成形される。フロントケースに対応付けられた部位は、フロントケースと一体成形される。第２入力欄７１２中の“Ｃａｓｅ  Ｆｒｏｎｔ”は、その左隣に位置する、表示欄７１４中の記号が割り当てられた部位に対して、フロントケースが対応付けられていることを意味する。第２入力欄７１２中の“Ｃａｓｅ  Ｂａｃｋ”は、その左隣に位置する、表示欄７１４中の記号が割り当てられた部位に対して、バックケースが対応付けられていることを意味する。
【０２３７】
第３入力欄７１３は、管理者ユーザが、ネジボス３６０の各外配置許可部分について、ＣＡＤデータ上のどの位置に外配置許可部分を割り当てるかを指定するための入力欄である。管理者ユーザは、第３入力欄７１３を操作することによって、ネジボス３６０の各外配置許可部分について、ＣＡＤデータ上のどの位置に外配置許可部分を割り当てるかを指定することができる。第３入力欄７１３中の“Ｄ１６５”及び“Ｄ１７０”は、ＣＡＤデータ上での位置を表すパラメータである。
【０２３８】
登録ボタン７２０は、管理者ユーザが入力欄７１０を使用して端末装置４２０に入力したデータを、コンピュータ装置１に登録するためのボタンである。登録ボタン７２０が操作されると、管理者ユーザが入力した、ネジボス３６０に関するデータが、端末装置４２０から、サーバ装置４１０を通じてコンピュータ装置１に入力される。コンピュータ装置１では、端末装置４２０からのデータが通信部４を通じて制御部２に入力される。制御部２は、入力されたネジボス３６０に関するデータを記憶部３に記憶する。これにより、外配置許可部分を有するネジボス３６０がコンピュータ装置１に登録される。制御部２は、端末装置４２０から受け取ったネジボス３６０に関するデータに基づいて、ネジボス３６０についての上述の特定データを生成することができる。コンピュータ装置１に外配置許可部分を有するネジボス３６０が登録されると、一般ユーザは、例えば、端末装置４２０に表示される上述の画面６００あるいは画面６００を利用して、外配置許可部分を有するネジボス３６０を設計対象部品として指定することができる。なお、画面７００は、コンピュータ装置１の表示部５に表示されてもよい。
【０２３９】
＜第６の他の例＞
入力状態データには、入力合成データだけではなく、入力合成データ以外のデータが含まれてもよい。入力状態データには、例えば、入力合成データと、配置空間での被配置物単体の状態を表す単体状態データとが含まれてもよい。単体状態データには、被配置物全体についての配置空間での状態を表すデータが含まれてもよいし、被配置物の一部についての配置空間での状態を表すデータが含まれてもよいし。以下に、学習処理及び配置設計において、第２特定部品、つまり外配置許可部分を有する被配置部品が使用される場合を例に挙げて、本例について説明する。本例では、第２特定部品と言えば、上述のネジボス３６０のように、外配置許可部分を含む保持構造を有する被配置部品を意味する。また本例では、保持構造に含まれる外配置許可部分を保持部分（許可）と呼ぶことがある。また本例では、保持構造における、外配置許可部分以外の部分を、保持部分（不許可）と呼ぶことがある。
【０２４０】
例えば、学習処理において、第２特定部品が操作対象とされている場合を考える。この場合、制御部２は、図１６のステップｓ２３において、入力合成データと、配置空間での第２特定部品単体の状態を表す単体状態データとを含む入力状態データを生成する。
【０２４１】
単体状態データには、例えば、第２特定部品の保持構造の保持部分（不許可）についての配置空間での状態を表す第１単体状態データが含まれる。さらに、単体状態データには、第２特定部品の保持構造の保持部分（許可）についての配置空間での状態を表す第２単体状態データが含まれる。
【０２４２】
制御部２は、保持部分（不許可）を表す第１形状データを、当該保持部分（不許可）の配置空間での位置に応じて対象空間データに対して合成し、それによって得られる３次元配列データを、第１単体状態データとする。このとき、制御部２は、対象空間データの各値を例外的に“０”に設定し、各値が“０”に設定された対象空間データに対して第１形状データを合成する。制御部２は、保持部分（不許可）の各分割要素に対して“１”を割り当てることによって得られる配列データを第１形状データとする。第１形状データは、第２特定部分を表す部品データのうち、保持部分（不許可）を表すデータ領域と同じである。
【０２４３】
また制御部２は、保持部分（許可）（つまり、外配置許可部分）を表す第２形状データを、当該保持部分（許可）の配置空間での位置に応じて対象空間データに対して合成し、それによって得られる３次元配列データを、第２単体状態データとする。このとき、制御部２は、対象空間データの各値を例外的に“０”に設定し、各値が“０”に設定された対象空間データに対して第２単体形状データを合成する。制御部２は、保持部分（許可）の各分割要素に対して“１”を割り当てることによって得られる配列データを第２形状データとする。第２単体形状データは、第２特定部分を表す部品データのうち、保持部分（許可）を表すデータ領域と同じである。
【０２４４】
図４２は、各値が例外的に“０”に設定された対象空間データ１００Ａの一例を示す図である。図４３は、第２特定部品を表す部品データ９０と、当該第２特定部品の保持部分（不許可）を表す第１形状データ９０１と、当該第２特定部品の保持部分（許可）を表す第２形状データ９０２の一例を示す図である。図４３に示されるように、部品データ９０のうち、保持部分（不許可）を表すデータ領域９３が、第１形状データ９０１となっている。また、部品データ９０のうち、保持部分（許可）を表すデータ領域９４が、第２形状データ９０２となっている。
【０２４５】
例えば、第２特定部品６５が、対象空間５０において、図４４のように配置されている場合を考える。この場合、図４２及び図４３の例においては、第１単体状態データ１５１は図４５のようになり、第２単体状態データ１５２は図４６のようになる。図４２に示される対象空間データ１００Ａにおいて、第２特定部品６５の保持部分（不許可）が対象空間５０で占める領域に対応するデータ領域の各値を、“０”から“１”に変更したものが、第１単体状態データ１５１となる。また、対象空間データ１００Ａにおいて、第２特定部品６５の保持部分（許可）が対象空間５０で占める領域に対応するデータ領域の各値を、“０”から“１”に変更したものが、第２単体状態データ１５２となる。
【０２４６】
図１７に示されるステップｓ３１ａでは、ステップｓ２３で生成された、入力合成データ及び単体状態データを含む入力状態データが第１ニューラルネットワークに入力される。本例でのニューラルネットワーク１０の入力素子の数は、入力合成データを構成する値の数と、第１単体状態データを構成する値の数と、第２単体状態データを構成する値の数とを足し合わせた数となる。つまり、ニューラルネットワーク１０の入力素子の数は、対象空間データを構成する値の数の３倍となる。
【０２４７】
ステップｓ３１ａの後、ステップｓ３２ａが実行されると、ステップｓ３２ａにおいて入力状態データが更新される。このとき、ステップｓ３２ａにおいて第２特定部品が移動させられると、その移動に応じて、第１及び第２単体状態データが更新される。その後のステップｓ３１ｂでは、ステップｓ３３ａで更新された入力状態データが第２ニューラルネットワークに入力される。以後、制御部２は同様に動作する。
【０２４８】
学習処理において、第２特定部品が操作対象とされていない場合であって、第２特定部品についての配置空間での配置が確定している場合には、ステップｓ３３ａ及び３３ｂでは、配置が固定された第２特定部品についての配置空間での状態を表す単体状態データが生成される。したがって、第２特定部品についての配置空間での配置が確定している場合、ステップｓ３３ａ及びステップｓ３３ｂのそれぞれでは、常に同じ単体状態データが生成される。
【０２４９】
また学習処理において、第２特定部品が操作対象とされていない場合であって、第２特定部品についての配置空間での配置が確定していない場合には、つまり、配置空間に第２特定部品が存在しない場合には、ステップｓ２３、ステップｓ３３ａ及びステップｓ３３ｂにおいて、すべての値が“０”に設定された第１単体状態データ及び第２単体状態データが生成される。
【０２５０】
配置設計についても同様である。例えば、配置設計において、第２特定部品が操作対象である場合を考える。この場合、制御部２は、図３１のステップｓ４３において、入力合成データと、第１単体状態データ及び第２単体状態データを含む入力状態データを生成する。そして、制御部２は、図３２に示されるステップｓ５１において、ステップｓ４３で生成した、入力合成データ及び単体状態データを含む入力状態データを第３ニューラルネットワークに入力する。ステップｓ５１の後、ステップｓ５２が実行されると、ステップｓ５３において入力状態データが更新される。このとき、ステップｓ５１において第２特定部品が移動させられていると、その移動に応じて、第１及び第２単体状態データが更新される。その後のステップｓ５５では、ステップｓ５３で更新された入力状態データが第４ニューラルネットワークに入力される。以後、制御部２は同様に動作する。配置設計において、配置空間に第２特定部品が存在しない場合には、すべての値が“０”に設定された第１単体状態データ及び第２単体状態データが使用される。
【０２５１】
このように、入力状態データに、入力合成データと、配置空間での被配置物単体の状態を表す単体状態データとが含まれる場合には、入力状態データによって、配置空間での複数の被配置物の状態をより詳細に表現することができる。よって、学習処理をより適切に実行することができる。その結果、配置設計に必要な時間をより短くすることができる。
【０２５２】
なお、単体状態データには、被配置部品全体についての配置空間での状態を表す第３単体状態データが含まれてもよい。この場合、制御部２は、例えば、被配置部品を表す部品データを、当該被配置部品の配置空間での位置に応じて対象空間データ１００Ａに対して合成することによって得られる３次元配列データを、第３単体状態データとする。例えば、上述の図４４のように第２特定部品６５が配置されている場合、第２特定部品６５についての第３単体状態データ１５３は図４７のようになる。
【０２５３】
＜その他の例＞
上記の例では、学習処理と配置設計とが、同じコンピュータ装置で実行されていたが、互いに異なるコンピュータ装置で実行されてもよい。この場合には、学習処理を実行するコンピュータ装置で生成された学習済みＮＮパラメータが、配置設計を行うコンピュータ装置に入力される。
【０２５４】
また上記の例では、電子機器の部品に関する配置設計について説明したが、上記の開示は、電子機器の部品以外の物体に関する配置設計についても適用することができる。例えば、上記の開示は、半導体回路の回路配置設計についても適用することができる。また、上記の開示は、箱の中に複数のお菓子を自動的に配置する場合にも適用することができる。また、家の各部屋を被配置物と見なすことによって、上記の開示は、家の間取り設計にも適用することができる。
【０２５５】
以上のように、コンピュータ装置１は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この開示がそれに限定されるものではない。また、上述した各種例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の例が、この開示の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０２５６】
１  コンピュータ装置
３ａ  配置設計プログラム
３ｂ  学習プログラム
【要約】
配置空間での複数の被配置物の状態と、被配置物に行うべき移動との関係に基づいて、配置空間において複数の被配置物を仮想的に移動させることによって、配置空間での複数の被配置物の配置を自動的に決定する配置設計を行うシステムに関して、配置空間において複数の第１被配置物を仮想的に移動させながら当該関係を機械学習する学習処理を行う。【図１】
0006789442.tif 000002
【図２】
0006789442.tif 000003
【図３】
0006789442.tif 000004
【図４】
0006789442.tif 000005
【図５】
0006789442.tif 000006
【図６】
0006789442.tif 000007
【図７】
0006789442.tif 000008
【図８】
0006789442.tif 000009
【図９】
0006789442.tif 000010
【図１０】
0006789442.tif 000011
【図１１】
0006789442.tif 000012
【図１２】
0006789442.tif 000013
【図１３】
0006789442.tif 000014
【図１４】
0006789442.tif 000015
【図１５】
0006789442.tif 000016
【図１６】
0006789442.tif 000017
【図１７】
0006789442.tif 000018
【図１８】
0006789442.tif 000019
【図１９】
0006789442.tif 000020
【図２０】
0006789442.tif 000021
【図２１】
0006789442.tif 000022
【図２２】
0006789442.tif 000023
【図２３】
0006789442.tif 000024
【図２４】
0006789442.tif 000025
【図２５】
0006789442.tif 000026
【図２６】
0006789442.tif 000027
【図２７】
0006789442.tif 000028
【図２８】
0006789442.tif 000029
【図２９】
0006789442.tif 000030
【図３０】
0006789442.tif 000031
【図３１】
0006789442.tif 000032
【図３２】
0006789442.tif 000033
【図３３】
0006789442.tif 000034
【図３４】
0006789442.tif 000035
【図３５】
0006789442.tif 000036
【図３６】
0006789442.tif 000037
【図３７】
0006789442.tif 000038
【図３８】
0006789442.tif 000039
【図３９】
0006789442.tif 000040
【図４０】
0006789442.tif 000041
【図４１】
0006789442.tif 000042
【図４２】
0006789442.tif 000043
【図４３】
0006789442.tif 000044
【図４４】
0006789442.tif 000045
【図４５】
0006789442.tif 000046
【図４６】
0006789442.tif 000047
【図４７】
0006789442.tif 000048