IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ダッソー システムズの特許一覧

<>
  • 特許-機能構造に対するモデリング演算 図1
  • 特許-機能構造に対するモデリング演算 図2
  • 特許-機能構造に対するモデリング演算 図3
  • 特許-機能構造に対するモデリング演算 図4
  • 特許-機能構造に対するモデリング演算 図5
  • 特許-機能構造に対するモデリング演算 図6
  • 特許-機能構造に対するモデリング演算 図7
  • 特許-機能構造に対するモデリング演算 図8
  • 特許-機能構造に対するモデリング演算 図9
  • 特許-機能構造に対するモデリング演算 図10
  • 特許-機能構造に対するモデリング演算 図11
  • 特許-機能構造に対するモデリング演算 図12
  • 特許-機能構造に対するモデリング演算 図13
  • 特許-機能構造に対するモデリング演算 図14
  • 特許-機能構造に対するモデリング演算 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-29
(45)【発行日】2024-11-07
(54)【発明の名称】機能構造に対するモデリング演算
(51)【国際特許分類】
   G06N 3/08 20230101AFI20241030BHJP
   G06F 30/10 20200101ALI20241030BHJP
   G06F 30/27 20200101ALI20241030BHJP
   G06N 3/0455 20230101ALI20241030BHJP
   G06Q 50/04 20120101ALI20241030BHJP
【FI】
G06N3/08
G06F30/10
G06F30/27
G06N3/0455
G06Q50/04
【請求項の数】 14
【外国語出願】
(21)【出願番号】P 2020114167
(22)【出願日】2020-07-01
(65)【公開番号】P2021012693
(43)【公開日】2021-02-04
【審査請求日】2023-06-05
(31)【優先権主張番号】19305925.0
(32)【優先日】2019-07-07
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】ルイス デュポン・ド・ディネシャン
【審査官】新井 則和
(56)【参考文献】
【文献】国際公開第2019/043425(WO,A1)
【文献】米国特許出願公開第2019/0135300(US,A1)
【文献】米国特許出願公開第2019/0073520(US,A1)
【文献】LI, Manyi et al.,"GRAINS: Generative Recursive Autoencoders for INdoor Scenes",arXiv.org [online],2019年05月,[retrieved on 2024.05.20], Retrieved from the Internet: <URL: https://arxiv.org/abs/1807.09193v5>,<DOI: 10.48550/arXiv.1807.09193>
【文献】YUMER, Mehmet Ersin et al.,"Procedural Modeling Using Autoencoder Networks",UIST '15: Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology [online],2015年,pp. 109-118,[retrieved on 2024.05.20], Retrieved from the Internet: <URL: https://dl.acm.org/doi/10.1145/2807442.2807448>,<DOI: 10.1145/2807442.2807448>
【文献】梅田 弘之 著,"第14章 半教師あり学習とオートエンコーダー",エンジニアなら知っておきたいAIのキホン 機械学習・統計学・アルゴリズムをやさしく解説,第1版,株式会社インプレス,2019年01月,pp. 214-232,ISBN 978-4-295-00535-3
【文献】CHOLLET, Francois 著, 巣籠 悠輔 訳,"8.4 変分オートエンコーダによる画像の生成",PythonとKerasによるディープラーニング,第1版,株式会社マイナビ出版,2018年, pp. 312-321,ISBN 978-4-8399-6426-9
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/10
G06F 30/10
G06F 30/27
G06Q 50/04
(57)【特許請求の範囲】
【請求項1】
複数の機能構造を生成するように構成された生成オートエンコーダを学習するための、コンピュータによって実施される方法であって、
一の機能構造は、剛性部品の機械的アセンブリを表すデータ構造であり、
前記データ構造は、
各剛性部品の形状、配置および各剛性部品に作用する力を各々表す、複数のリーフノードと、
各々、複数の子を有し、各々前記複数の子のうち対応する一の子によって表される複数の下位アセンブリ間の機械的リンクを表す、複数の非リーフノードと、
各々、一の子を有し、且つ当該一の子によって表される下位アセンブリの複製を表す、複数の非リーフノードと
からなるツリーを含み、
前記複数の機能構造を含むデータセットを提供すること(S10)と、
前記生成オートエンコーダを学習すること(S20)と
を含むことを特徴とする方法。
【請求項2】
前記機械的リンクは、前記複数の下位アセンブリ間の隣接関係であり、当該隣接関係は、隣接関係の所定の集合に属する
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記複製は、前記複数の下位アセンブリのインスタンス間の対称関係であり、当該対称関係は、対称関係の所定の集合に属する
ことを特徴とする請求項1または2に記載の方法。
【請求項4】
各剛性部品の形状と配置は、当該剛性部品の周囲の境界ボックスの仕様を含むデータによって表され、各剛性部品に作用する前記力は、結果として生じる力である
ことを特徴とする請求項1~3のいずれか1つに記載の方法。
【請求項5】
前記生成オートエンコーダは、
リーフエンコードモジュール、機械的リンクエンコードモジュール、および複製エンコードモジュールを含むエンコーダと
ノード分類器、リーフデコードモジュール、機械的リンクデコードモジュール、および複製デコードモジュールを含むデコーダと
を含み、
前記エンコーダは、与えられた一の機能構造に関して、再帰的なボトムアッププロセスに従って、ツリーを一の潜在ベクトルにエンコードするように構成されており、
前記リーフエンコードモジュールは、前記境界ボックスの仕様と前記結果として生じる力を含むデータに基づいて、各リーフノードについて一の潜在ベクトルを出力し、
前記機械的リンクエンコードモジュールは、機械的リンクを表す各非リーフノードに対して、当該非リーフノードの前記複数の子をエンコードする前記複数の潜在ベクトルに基づいて、一の潜在ベクトルを出力し、
前記複製エンコードモジュールは、複製を表す各非リーフノードに対して、当該非リーフノードの対応する一の子をエンコードする前記潜在ベクトルに基づいて、一の潜在ベクトルを出力し、
前記デコーダは、与えられた一の潜在ベクトルに関して、再帰的なトップダウンプロセスに従って、当該与えられた一の潜在ベクトルを一の機能構造のツリーにデコードするように構成されており、
前記ノード分類器は、デコード中に生成された各潜在ベクトルを、リーフノードに対応するもの、機械的リンクを表す非リーフノードに対応するもの、または複製を表す非リーフノードに対応するものとして分類し、
前記リーフデコードモジュールは、デコード中にリーフノードに対応するものとして分類された潜在ベクトルごとに、当該潜在ベクトルに基づいて、それぞれの境界ボックスの仕様およびそれぞれの結果として生じる力を含むデータを出力し、
前記機械的リンクデコードモジュールは、デコード中に機械的リンクを表す非リーフノードに対応するものとして分類された潜在ベクトルごとに、当該潜在ベクトルに基づいて、複数の子潜在ベクトルを出力し、
前記複製デコードモジュールは、デコード中に複製を表す非リーフノードに対応するものとして分類された潜在ベクトルごとに、当該潜在ベクトルに基づいて、一の子潜在ベクトルを出力する
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記データセットの前記複数の機能構造の少なくとも一部のツリーの1つまたは複数のノードは、それぞれ、所定のラベルのリストのうちの1つのラベルでタグ付けされ、本方法はさらに潜在空間分類器を学習すること(S30)を含み、当該潜在空間分類器は一の潜在ベクトルを入力とし当該潜在ベクトルに前記所定のラベルのリストのうち一のラベルでタグ付けするように構成されている
ことを特徴とする請求項5に記載の方法。
【請求項7】
前記境界ボックスと前記結果として生じる力は、それぞれ、同一のベクトルの第1の座標と第2の座標とで表される
ことを特徴とする請求項4~6のいずれか一項に記載の方法。
【請求項8】
前記コンピュータが前記生成オートエンコーダを使用することを更に含み、当該生成オートエンコーダを使用することは、
1つまたは複数の潜在ベクトルを提供すること(S100)と、
一の機能構造を生成すること(S200)であって、各潜在ベクトルを前記デコーダでデコードするこ
含むことを特徴とする請求項5に記載の方法。
【請求項9】
前記生成オートエンコーダを使用することは、
前記生成された機能構造によって表される剛性部品の機械的アセンブリのトポロジ最適化を実行すること(S300)
をさらに含むことを特徴とする請求項に記載の方法。
【請求項10】
前記生成(S200)は、前記生成された機能構造に含まれるツリーのリーフノードによって表される力である力を生成し、前記生成された力は前記トポロジ最適化への入力を形成する
ことを特徴とする請求項に記載の方法。
【請求項11】
前記データセットの前記複数の機能構造の少なくとも一部のツリーの1つまたは複数のノードは、それぞれ、所定のラベルのリストのうちの1つのラベルでタグ付けされ、
本方法は、潜在空間分類器を学習すること(S30)をさらに含み、
当該潜在空間分類器は一の潜在ベクトルを入力とし当該潜在ベクトルに前記所定のラベルのリストのうち一のラベルでタグ付けするように構成されており、
前記1つまたは複数の潜在ベクトルは、第1の潜在ベクトルと第2の潜在ベクトルとを含み、
前記デコードは、前記第1の潜在ベクトルおよび前記第2の潜在ベクトルのそれぞれについて、中間潜在ベクトルを含む潜在ベクトルを生成し、
前記機能構造の生成(S200)は、前記第1の潜在ベクトルの第1の中間潜在ベクトルと前記第2の潜在ベクトルの第2の中間潜在ベクトルとの間の補間演算を、前記第1の中間潜在ベクトルと前記第2の中間潜在ベクトルにタグ付けするのと同じラベルに基づいて実行することを含む
ことを特徴とする請求項8~10のいずれか1つに記載の方法。
【請求項12】
請求項1~11のいずれか1つに記載の方法を実行するための指示を含むことを特徴とするコンピュータプログラム。
【請求項13】
求項1に記載のコンピュータプログラムが記録されたデータ記憶媒体を備えることを特徴とする装置。
【請求項14】
前記データ記憶媒体に接続されたプロセッサをさらに備えることを特徴とする請求項1に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より具体的には、機能構造を生成するように構成された生成オートエンコーダを学習するための方法、システムおよびプログラムに関する。
【背景技術】
【0002】
オブジェクトの設計、エンジニアリング、製造のため、多数のシステムおよびプログラムが市場に提供されている。CADは、コンピュータ支援設計(Computer-Aided Design)の略語であり、例えば、オブジェクトを設計するためのソフトウェア・ソリューションに関する。CAEは、コンピュータ支援エンジニアリング(Computer-Aided Engineering)の略語であり、例えば、将来の製品の物理的挙動をシミュレーションするためのソフトウェア・ソリューションに関する。CAMは、コンピュータ支援製造(Computer-Aided Manufacturing)の略語であり、例えば、製造工程および動作を定義するためのソフトウェア・ソリューションに関する。このようなコンピュータ支援設計システムにおいて、グラフィカル・ユーザ・インターフェースは、技術の効率に関して、重要な役割を果たす。これらの技術は、製品ライフサイクル管理(Product Lifecycle Management:PLM)システムに組み込むことができる。PLMとは、企業が、拡張エンタープライズの概念全体にわたって、製品データを共有し、共通の工程を適用し、構想に始まり製品寿命の終わりに至る製品開発のための企業知識を活用するのを支援するビジネス戦略を指す。ダッソー・システムズが提供するPLMソリューション(製品名CATIA、ENOVIA、DELMIA)は、製品エンジニアリング知識をオーガナイズするエンジニアリング・ハブ、製品エンジニアリング知識を管理する製造ハブ、およびエンジニアリング・ハブと製造ハブの両方に対するエンタープライズ統合と接続を可能にするエンタープライズ・ハブを提供する。全てのシステムは、製品、工程、リソースを結ぶオープンなオブジェクトモデルを提供し、最適化された製品定義、製造準備、生産およびサービスを推進する、動的な知識ベースの製品作成および意思決定支援を可能にする。
【0003】
このような背景、およびその他の背景において、機械学習は、より重要性を増している
【0004】
既存の方法は、3D形状の学習タスクに関連しているが、CADにおいては非現実的な結果をもたらす。実際、画像やビデオとは異なり、3D形状では、規則的なグリッド上での自然なパラメータ化というものが存在しない。既存の方法では、メッシュ、点群、ボクセル、またはマルチビュー表現で3D形状を表現することを選択する。これらの3D表現では、3D形状の基本的な特性、すなわち、階層構造が考慮されていない。CADの3Dデータには、製品構造の定義を通じて、本質的に、この側面が含まれている
【0005】
近年、コンピュータービジョン、音声認識、および自然言語処理におけるディープニューラルネットワークの成功により、研究者はこのようなモデルを3D形状解析に適用するようになった。これらの研究のほとんどは、画像用に開発されたコンピュータービジョン技術、すなわち、ピクセルの2Dグリッドを、ボクセルの3Dグリッドに拡張することに焦点を当てている。J.Wuらの研究(J.Wu,C.Zhang,T.Xue,W.T.Freeman,J.B.Tenenbaum,Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling,2016)などのアプローチは、ボクセル形式でのオブジェクト形状の確率的潜在空間の学習に成功している。その中核となるモデルは、形状コードを入力とし、ボクセルグリッドを出力として生成する生成デコーダである。デコーダは敵対的にトレーニングされており、例えば、2D画像を対応する形状コードにマッピングする従来のエンコーダと連鎖させることができる。この方法は、コードの単純な演算と補間をサポートし、例えば、異なる形状間でトポロジが変化するモーフを可能にする。しかしながら、これらのアプローチでは、CADデータなど、階層構造のデータを処理できない。
【発明の概要】
【発明が解決しようとする課題】
【0006】
こうした状況において、機能構造を生成するように構成された生成オートエンコーダを学習するための改善された方法が依然として求められている。
【課題を解決するための手段】
【0007】
本発明においては、生成オートエンコーダを学習するための、コンピュータによって実施される方法が提供される。生成オートエンコーダは、機能構造を生成するように構成される。機能構造は、剛性部品の機械的アセンブリを表すデータ構造である。データ構造はツリーを含む。ツリーはリーフノードを含む。各リーフノードは、各剛性部品の形状と配置、および各剛性部品に作用する力を表す。ツリーは、さらに、それぞれ複数の子を有する非リーフノードを含む。複数の子を有する非リーフノードは、それぞれ、下位アセンブリ間の機械的リンクを表す。各下位アセンブリは、当該複数の子のそれぞれ1つによって表される。ツリーは、さらに、一の子を有する非リーフノードを含む。一の子を有する非リーフノードは、それぞれ、一の子によって表される下位アセンブリの複製を表す。本方法は、機能構造を含むデータセットを提供することを含む。本方法は、さらに、データセット上で生成オートエンコーダを学習することを含む。
【0008】
本方法は、以下のうちの1つまたは複数を含んでいてもよい。
【0009】
・前記機械的リンクは、前記下位アセンブリ間の隣接関係であり、当該隣接関係は、オプションとして、隣接関係の所定の集合に属する。
【0010】
・前記複製は、前記下位アセンブリのインスタンス間の対称関係であり、当該対称関係は、オプションとして、対称関係の所定の集合に属する。
【0011】
・各剛性部品の形状と配置は、各剛性部品の周囲の境界ボックスの仕様を含むデータによって表され、各剛性部品に作用する前記力は、結果として生じる力である。
【0012】
・前記生成オートエンコーダは、
・リーフエンコードモジュール、機械的リンクエンコードモジュール、および複製エンコードモジュールを含むエンコーダと
・ノード分類器、リーフデコードモジュール、機械的リンクデコードモジュール、および複製デコードモジュールを含むデコーダとを含む。
【0013】
前記エンコーダは、与えられた機能構造に関して、再帰的なボトムアッププロセスに従って、ツリーを一の潜在ベクトルにエンコードするように構成されており、
・前記リーフエンコードモジュールは、前記境界ボックスの仕様と前記結果として生じる力を含むデータに基づいて、各リーフノードについて、それぞれの潜在ベクトルを出力し、
・前記機械的リンクエンコードモジュールは、機械的リンクを表す各非リーフノードに対して、前記非リーフノードの前記複数の子をエンコードする前記複数の潜在ベクトルに基づいて、それぞれの潜在ベクトルを出力し、
・前記複製エンコードモジュールは、複製を表す各非リーフノードに対して、前記非リーフノードそれぞれの前記一の子をエンコードする前記潜在ベクトルに基づいて、それぞれの潜在ベクトルを出力し、
前記デコーダは、与えられた一の潜在ベクトルに関して、再帰的なトップダウンプロセスに従って、当該与えられた一の潜在ベクトルを機能構造のツリーにデコードするように構成されており、
・前記ノード分類器は、デコード中に生成された各潜在ベクトルを、リーフノードに対応するもの、機械的リンクを表す非リーフノードに対応するもの、または複製を表す非リーフノードに対応するものとして分類し、
・前記リーフデコードモジュールは、デコード中にリーフノードに対応するものとして分類された潜在ベクトルごとに、当該潜在ベクトルに基づいて、それぞれの境界ボックスの仕様およびそれぞれの結果として生じる力を含むデータを出力し、
・前記機械的リンクデコードモジュールは、デコード中に機械的リンクを表す非リーフノードに対応するものとして分類された潜在ベクトルごとに、当該潜在ベクトルに基づいて、複数の子潜在ベクトルを出力し、
・前記複製デコードモジュールは、デコード中に複製を表す非リーフノードに対応するものとして分類された潜在ベクトルごとに、当該潜在ベクトルに基づいて、一の子潜在ベクトルを出力し、
・前記データセットの機能構造の少なくとも一部のツリーの1つまたは複数のノードは、それぞれ、所定のラベルのリストのうちの1つのラベルでタグ付けされ、本方法はさらに潜在空間分類器を学習することを含み、当該潜在空間分類器は潜在ベクトルを入力とし当該潜在ベクトルに前記所定のラベルのリストのうち1つのラベルでタグ付けするように構成されており、かつ/あるいは、
・前記境界ボックスと前記結果として生じる力は、それぞれ同じベクトルの第1の座標と第2の座標で表される。
【0014】
さらには、本方法によって学習可能な生成オートエンコーダが提案される。当該生成オートエンコーダは、エンコーダとデコーダを有する。
【0015】
さらには、コンピュータによって実施される、前記生成オートエンコーダの利用方法が提案される。本利用方法は、1つまたは複数の潜在ベクトルを提供することを含む。本利用方法は、さらに、機能構造を生成することを含む。当該生成は、各潜在ベクトルを前記デコーダでデコードすることを含む。
【0016】
本利用方法は、以下のうちの1つまたは複数を含んでいてもよい。
【0017】
・生成された機能構造によって表される剛性部品の機械的アセンブリのトポロジ最適化を実行する。
【0018】
・前記生成は、前記生成された機能構造に含まれるツリーのリーフノードによって表される力である力を生成し、前記生成された力は前記トポロジ最適化への入力を形成する。かつ/あるいは、
・前記オートエンコーダは請求項6に従って学習可能であり、
・前記1つまたは複数の潜在ベクトルは、第1の潜在ベクトルと第2の潜在ベクトルを含み、
・前記デコードは、前記第1の潜在ベクトルおよび前記第2の潜在ベクトルのそれぞれについて、中間潜在ベクトルを含む潜在ベクトルを生成し、
・前記機能構造の生成は、前記第1の潜在ベクトルの第1の中間潜在ベクトルと前記第2の潜在ベクトルの第2の中間潜在ベクトルとの間の補間演算を、前記第1の中間潜在ベクトルと前記第2の中間潜在ベクトルにタグ付けするのと同じラベルに基づいて実行することを含む。
【0019】
さらには、前記方法および前記利用方法を実行するための指示を含むコンピュータプログラムが提供される。
【0020】
さらには、前記生成オートエンコーダ、および/または、前記コンピュータプログラムが記録されたデータ記憶媒体を備える装置が提供される。
【0021】
当該装置は、例えば、SaaS(Software as a service)または他のサーバ、あるいはクラウドベースのプラットフォームなどの上で、非一時的なコンピュータ読み取り可能媒体を形成するか、またはそのようなものとして機能してもよい。あるいは、当該装置は、当該データ記憶媒体に接続されたプロセッサを備えていてもよい。したがって、当該装置は、全体的に、または部分的に、コンピュータシステムを形成していてもよい(例えば、当該装置は、システム全体のサブシステムである)。前記システムは、前記プロセッサに接続されたグラフィカル・ユーザ・インターフェースをさらに含んでいてもよい。
以下、非限定的な例として、本発明の実施の形態を添付の図面を参照しつつ説明する。
【図面の簡単な説明】
【0022】
図1】本願の方法と利用方法とを統合するプロセスのフローチャートを示す。
図2】本願のシステムの例を示す。
図3】本願の方法群を例示する。
図4】本願の方法群を例示する。
図5】本願の方法群を例示する。
図6】本願の方法群を例示する。
図7】本願の方法群を例示する。
図8】本願の方法群を例示する。
図9】本願の方法群を例示する。
図10】本願の方法群を例示する。
図11】本願の方法群を例示する。
図12】本願の方法群を例示する。
図13】本願の方法群を例示する。
図14】本願の方法群を例示する。
図15】本願の方法群を例示する。
【発明を実施するための形態】
【0023】
生成オートエンコーダを学習するための、コンピュータによって実施される方法が提案される。生成オートエンコーダは、機能構造を生成するように構成される。機能構造は、剛性部品の機械的アセンブリを表すデータ構造である。データ構造はツリーを含む。ツリーはリーフノードを含む。各リーフノードは、各剛性部品の形状と配置、および各剛性部品に作用する力を表す。ツリーは、さらに、それぞれ複数の子を有する非リーフノードを含む。複数の子を有する非リーフノードは、それぞれ、下位アセンブリ間の機械的リンクを表す。各下位アセンブリは、当該複数の子のそれぞれ1つによって表される。ツリーは、さらに、一の子を有する非リーフノードを含む。一の子を有する非リーフノードは、それぞれ、一の子によって表される下位アセンブリの複製を表す。本方法は、機能構造を含むデータセットを提供することを含む。本方法は、さらに、データセット上で生成オートエンコーダを学習することを含む。このような方法は、「学習方法」とも呼ばれる。
【0024】
これは、機能構造を生成するように構成された生成オートエンコーダを学習するための改善された方法を構成する。
【0025】
特に、当該学習方法によって学習した生成オートエンコーダは、各剛性部品の機械的アセンブリをそれぞれ表す機能構造をその場で生成する(生成的であるため)ように構成されている。なぜなら、生成オートエンコーダは、そのような機能構造を含むデータセットで学習されるからである。生成オートエンコーダは、これらの機能構造を正確に生成する(すなわち、生成された機能構造の現実性のレベルは、データセットの機能構造のそれと可能な限り近い)。なぜなら、そうするように学習されるからである。このような機能構造は、以下を含むツリーを含むため、階層データ構造である。すなわち、それぞれが各剛性部品の形状と配置および各剛性部品に作用する力を表すリーフノード、それぞれが複数の子を有し、それぞれが下位アセンブリ間の機械的リンクを表す非リーフノード(各下位アセンブリは、当該複数の子のうちの1つによって表される)、および、それぞれが一の子を有し、それぞれが当該一の子によって表される下位アセンブリの複製を表す非リーフノードである。言い換えれば、ツリーは、部品間、および/または、部品の機械的アセンブリにおける部品の下位アセンブリ間の関係、すなわち、機械的リンク(例えば隣接関係)と複製(例えば対称関係)、およびその階層的配置を捉える。言い換えれば、本学習方法は、部品の機械的アセンブリに関する階層データ構造を処理することができ、また、そのようなデータ構造をその場で生成することができるオートエンコーダを産出する。したがって、本学習方法は、以下で説明するように、設計および/または製造プロセスで直接利用できる物理的に現実的なCADデータの生成を可能にする。
【0026】
さらに、機能構造は、特に、生成オートエンコーダの学習のためのデータセットにおいて(例えばそのようなデータセットとして)用いられるように適合している。例えば、それらは、機能構造を含む提供されたデータセットに対して生成オートエンコーダが堅牢な学習を実現できるようにする。加えて、機能構造は、低レベルの3Dモデルよりもはるかにコンパクトなデータ構造である。
【0027】
さらには、本学習方法によって生成オートエンコーダが学習されるデータセットに含まれる各ツリーは、各剛性部品の形状と配置を表すリーフノードを有する。これは、生成オートエンコーダによって生成される機能構造が、そのようなリーフノードを有するツリーを含むことを意味する。そのようにして生成された機能構造は、それによってトポロジ最適化に(すなわち、それらに対してトポロジ最適化を実行するのに)適する。実際、トポロジ最適化の分野からそれ自体知られているように、部品の機械的アセンブリ(またはそれを表すデータ構造または3Dモデリングオブジェクト)で実行されるトポロジ最適化アルゴリズム/方法/プロセスは、特に、当該アセンブリの部品に作用する荷重など、物理的な力を入力とする。本学習方法は、そのような力を表すデータを含むデータ構造、すなわちリーフノードを生成できるオートエンコーダを産出する。このように、本学習方法は、部品の機械的アセンブリを表しトポロジ最適化に適合したデータ構造をその場で生成できるオートエンコーダを産出する。
【0028】
以下にさらに説明する本学習方法の一例において、生成オートエンコーダは、与えられた機能構造に関して、再帰的なボトムアッププロセスに従ってツリーを一の潜在ベクトルにエンコードするように構成された、エンコーダを含む。これらの一例において、生成オートエンコーダは、与えられた一の潜在ベクトルに関して、再帰的なトップダウンプロセスに従って、当該与えられた一の潜在ベクトルを機能構造のツリーにデコードするように構成された、デコーダを含む。これらの例では、データセットの機能構造の少なくとも一部(例えば、それらすべて)のツリーの1つまたは複数のノードが、それぞれ、所定のラベルのリストのうちの1つのラベルでタグ付けされていてもよく、本方法は、さらに、潜在空間分類器を学習することを含んでいてもよい。潜在空間分類器は、潜在ベクトルを入力とし、当該潜在ベクトルに所定のラベルのリストのうち1つのラベルでタグ付けするように構成されたニューラルネットワークである。
【0029】
言い換えれば、与えられた一の潜在ベクトルをツリーへとデコードすることによって機能構造に含まれるツリーを生成する再帰的トップダウンデコードプロセスにより、中間潜在ベクトルが生成される。中間潜在ベクトルとは、ルートノード、あるいはどちらもルートノードではないリーフノードまたは非リーフノードでありうる、3つのノードをエンコードする潜在ベクトルである。これらのノードのそれぞれは、部品の機械的アセンブリの有意な下位構造に対応してもよい。これは、部品の特に有意な下位アセンブリなど、部品の機械的アセンブリの有意な下位構造に対応するノードをエンコードする中間潜在ベクトルが、デコードプロセス中に生成されることを意味する。そのような下位構造に対応するノードが所定のラベルのリストのうちのラベルでタグ付けされているツリーに対して潜在空間分類器を学習することにより、本学習方法は、デコードプロセス中に生成された中間潜在ベクトルを入力として、それを当該リストのラベルでタグ付けすることができる潜在空間分類器を産出する。ラベルは、中間潜在ベクトルが有意な下位構造に対応するか、あるいは特に下位構造に対応しないノードをエンコードすることを示す(例えば、ラベルの欠如に対応するラベルが存在してもよい)。最初のケースでは、潜在空間分類器は、言い換えれば、デコードプロセス中に、中間の有意な下位構造を識別してタグ付けすることができる。これにより、補間演算や、補間の限界ケースであるブレンディング演算など、下位構造上、および/または、下位構造間での演算を実行できる(これについては以下でさらに説明する)。したがって、生成オートエンコーダによって、より多くの、かつ/あるいは、より多様な機能構造を生成することができる。
【0030】
さらには、本学習方法によって学習可能な生成オートエンコーダが提案される。当該生成オートエンコーダは、エンコーダとデコーダを有する。
【0031】
さらには、コンピュータによって実施される、前記生成オートエンコーダの利用方法が提案される。本利用方法は、1つまたは複数の潜在ベクトルを提供することを含む。本利用方法は、さらに、機能構造を生成することを含む。当該生成は、各潜在ベクトルを前記デコーダでデコードすることを含む。本利用方法は、「生成方法」とも呼ばれる。
【0032】
このように、本生成方法は、1つまたは複数の機能構造を生成する。本生成方法は、複数の機能構造を生成してもよい。例えば、生成は、各潜在ベクトルをそれぞれの機能構造に完全に(すなわち、再帰的なトップダウンデコードが完了するまで)デコードすることを含んでいてもよい。このように、本生成方法は、それぞれが物理的に現実的に部品の機械的アセンブリを表す階層データ構造を、その場で生成する。
【0033】
代替として、または追加として、上記1つまたは複数の潜在ベクトルは、第1の潜在ベクトルと第2の潜在ベクトルを含んでいてもよい。そのような場合、デコードは、第1の潜在ベクトルおよび第2の潜在ベクトルのそれぞれについて、中間潜在ベクトルを含む潜在ベクトルを生成する。次いで、機能構造の生成は、第1の潜在ベクトルの第1の中間潜在ベクトルと第2の潜在ベクトルの第2の中間潜在ベクトルとの間の補間演算を、第1の中間潜在ベクトルと第2の中間潜在ベクトルにタグ付けするのと同じラベルに基づいて実行することを含んでいてもよい。上記同じラベルは、特に、潜在空間分類器を第1の中間潜在ベクトルと第2の中間潜在ベクトルの両方に適用することによって得てもよい。いずれの場合も、このような補間演算(または前述の補間の限界ケースであるブレンディング演算)を実行すると、生成されたデータ構造の有意な下位構造をマージ/混合することにより、より多くの、かつ/あるいは、より多様な機能構造が生成される。
【0034】
本生成方法は、さらに、生成された機能構造によって表される剛性部品の機械的アセンブリのトポロジ最適化を実行することを含んでいてもよい。これは、上述のように、生成された機能構造のツリーが、各剛性部品の形状と配置、および各剛性部品に作用する力をそれぞれ表すリーフノードを有することにより可能になる。トポロジの最適化では、特に、生成された機能構造で表されるこれらの力(または少なくともその一部)を入力としてもよい。トポロジ最適化は、本生成方法によって生成されたすべての機能構造、または少なくともその一部によって表される剛性部品の機械的アセンブリに対して実行してもよい。このように、本生成方法は、存在する生成された機能構造と同じ数の、トポロジ的に最適化された部品の機械的アセンブリを産出してもよい。
【0035】
学習方法と生成方法は、独立して、例えば異なるユーザによって、かつ/あるいは、異なるコンピュータ上で、実行されてもよい。あるいは、それらはコンピュータによって実施される同じモデリングプロセスに含まれていてもよい。このようなモデリングプロセスについて、モデリングプロセスのフローチャートを示す図1を参照してここで簡単に説明する。
【0036】
モデリングプロセスはオフライン段階を含む。オフライン段階は、本学習方法を含む。したがって、オフライン段階は、特に、学習方法による機能構造を含むデータセットの提供(S10)と、学習方法によるデータセットに対する生成オートエンコーダの学習(S20)とを含む。オフライン段階は、さらに、学習方法による潜在空間分類器の学習(S30)を含んでいてもよい。モデリングプロセスは、さらに、学習された生成オートエンコーダ、および適切な場合には、学習された潜在空間分類器をメモリに格納することを含んでいてもよい。
【0037】
プロセスは、さらに、オンライン段階を含む。オンライン段階は、オフライン段階において学習方法によって学習された生成オートエンコーダの生成方法を含む。オンライン段階は、特に、オフライン段階で学習し、前述のようにメモリに記憶させた、生成オートエンコーダ、および適切な場合、潜在空間分類器を、(例えば、離れた場所のコンピュータから)取得することを含んでいてもよい。いずれの場合も、オンライン段階は、本生成方法による1つまたは複数の潜在ベクトルの提供(S100)と、本生成方法による機能構造の生成(S200)とを含む。オンライン段階は、さらに、生成方法により、生成された機能構造によって表される剛性部品の機械的アセンブリのトポロジ最適化を実行すること(S300)を含んでいてもよい。
【0038】
なお、オフライン段階とオンライン段階は、例えば異なるユーザにより、異なる時間/段階において、かつ/あるいは、異なるコンピュータ上で、独立して行われてもよい。
【0039】
学習方法、生成方法、および/または、モデリングプロセスは、剛性部品の機械的アセンブリを設計するための設計プロセスに含まれていてもよい。部品の機械的アセンブリの設計は、部品の機械的アセンブリを表す3Dモデル化オブジェクトの作成の少なくとも一部である任意のアクションまたは一連のアクションを指定する。設計プロセスは、特に、学習方法、および/または、モデリングプロセスのオフライン段階によって学習された生成オートエンコーダを用いて、部品の機械的アセンブリを表す機能構造を生成することを含んでいてもよい。生成は、生成方法における生成、かつ/あるいは、モデリングプロセスのオンライン段階における生成であってもよい。いずれの場合も、生成されたデータ構造は、剛性部品の機械的アセンブリを表す3Dモデル化オブジェクトが、生成されたデータ構造から直接推定できるようなものであってもよく、設計プロセスは3Dモデル化オブジェクトを推定することと、場合により、表示することとを含んでいてもよい。
【0040】
設計プロセスは、剛性部品の機械的アセンブリまたはそれを表す3Dモデル化オブジェクトをトポロジ最適化を介して設計するための設計プロセスであってもよい。そのような場合、設計プロセスは、特に、生成方法、および/または、モデリングプロセスのオンライン段階によるトポロジ最適化の実行(S300)を含んでいてもよい。それ自体知られているように、トポロジ最適化は、製品設計と物理シミュレーションの分野をつなぐ、コンピュータによって実施される技術である。これは、材料に形成され、使用中に荷重を受け、1つまたは複数の拘束境界を有する機械部品(例えば、剛性部品の機械的アセンブリ)を表すモデル化オブジェクトの設計に適用される。この技術は、通常、有限要素解析(FEA)を通じてシミュレーションされる物理的特性と動作の変更に基づいて、最適化された生成設計を自動的に生成することに焦点を当てている。より具体的には、トポロジ最適化は、例えば、小さな要素の設計空間とメッシュに関連付けられたデータを離散化することにより、有限要素メッシュ(FEM)を提供することで機能する。この技術では、次いで、特定の目的関数(例えば、設計の剛性に関連するもの)と制約の集合(例えば、許容される材料の総量に関連するもの)に関して最も効率的な要素を繰り返し見つけることによって、与えられた離散空間における材料の最適な分布とレイアウトを見つける。
【0041】
設計プロセスは、さらに、製造プロセスに含まれていてもよく、このプロセスは、当該設計プロセスを実行した後に、当該設計プロセスによって設計され/生成された3Dモデル化オブジェクトに対応する物理的製品を製造することを含んでいてもよい。いずれの場合も、設計プロセスによって設計された3Dモデル化オブジェクトは、製造オブジェクトを表してもよい。このように、モデル化オブジェクトは、モデル化された立体(すなわち、立体を表すモデル化オブジェクト)であってもよい。
【0042】
学習方法、生成方法、およびモデリングプロセスはコンピュータによって実施される。ここで、コンピュータによって実施される方法(またはプロセス)について説明する。
【0043】
「方法(またはプロセス)はコンピュータによって実施される」とは、方法(またはプロセス)のステップ(または実質的に全てのステップ)が少なくとも1つのコンピュータまたは任意の類似のシステムによって実行されることを意味する。よって本方法(あるいはプロセス)のステップは、コンピュータにより、完全に自動的に、あるいは半自動的に実行される可能性がある。一例において、本方法(あるいはプロセス)のステップの少なくとも複数のは、ユーザ対話操作を介してトリガされてもよい。求められるユーザとコンピュータの対話操作のレベルは、想定される自動性のレベルに応じたものであって、ユーザの要望を実装する必要性との間でバランスをとるものとしてもよい。一例において、このレベルは、ユーザが設定し、かつ/あるいは、予め定義されていてもよい。
【0044】
コンピュータによる方法(あるいはプロセス)の実施の典型的な例は、この目的に適したシステムを用いて本方法(あるいはプロセス)を実行することである。当該システムは、本方法(あるいはプロセス)を実行するための命令を含むコンピュータプログラムを記録したメモリに接続されたプロセッサ、および、グラフィカル・ユーザ・インターフェイス(GUI)を備えていてもよい。メモリはデータベースを記憶していてもよい。メモリは、そのような記憶に適した任意のハードウェアであり、場合により、物理的に区別可能な複数の部分(例えば、プログラム用に1つ、場合によりデータベース用に1つ)を含む。
【0045】
図2は、本システムの一例を示すものであって、当該システムは、クライアントコンピュータシステム、例えばユーザのワークステーションである。
【0046】
本例のクライアントコンピュータは、内部通信バス1000に接続された中央演算処理装置(CPU)1010、および同じくバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータは、さらに、バスに接続されたビデオランダムアクセスメモリ1100と関連付けられたグラフィックス処理装置(GPU)1110を備える。ビデオRAM1100は、当該技術分野において、フレームバッファとしても知られる。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラムの命令及びデータを具体的に実現するのに適した大容量メモリ装置は、例として、EPROM、EEPROM及びフラッシュメモリ装置のような半導体メモリ装置、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびCD-ROMディスク1040を含む、全ての形式の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完されてもよいし、組み入れられてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、キーボードなどの触覚装置1090を含んでいてもよい。カーソル制御装置は、ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置させることを可能にするために、クライアントコンピュータ内で使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号生成装置を含む。典型的には、カーソル制御装置はマウスであってもよく、マウスのボタンは信号を生成するために使用される。あるいは、または追加的に、クライアントコンピュータシステムは、感知部品および/または感知スクリーンを備えてもよい。
【0047】
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでいてもよく、命令は、上記システムに学習方法、生成方法、および/または、モデリングプロセスを実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路、またはコンピュータハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。プログラムは、例えばプログラマブルプロセッサによる実行のための機械読み取り可能な記憶装置に具体的に実現された製品のような装置として実装されてもよい。プロセス/方法のステップは、プログラム可能なプロセッサが命令のプログラムを実行し、入力データを操作して出力を生成することによってプロセスの機能を実行することによって実行されてもよい。したがって、プロセッサは、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、また、それらにデータおよび命令を送信するようにプログラム可能であってもよく、またそのように接続されていてもよい。アプリケーションプログラムは、高水準の手続き型またはオブジェクト指向のプログラミング言語で、または必要に応じてアセンブリ言語または機械語で実装されていてもよい。いずれの場合も、言語はコンパイラ型言語またはインタープリタ型言語であってもよい。プログラムは、フルインストールプログラムまたは更新プログラムであってもよい。いずれの場合も、プログラムをシステムに適用すると、学習方法、生成方法、および/または、モデリングプロセスを実行するための指示が得られる。
【0048】
本方法、生成方法、および/またはモデリングプロセスにおいて意図される機能構造で表される剛性部品の機械的アセンブリは、さらに、例えば、上記のように機能構造から推定されるモデル化オブジェクトによって表されてもよい。モデル化オブジェクトは、例えばデータベースに格納されたデータによって定義される任意のオブジェクトである。さらには、「モデル化オブジェクト」という表現は、データそのものも指す。システムのタイプにより、モデル化オブジェクトは、異なる種類のデータによって定義されてもよい。本システムは、CADシステムであってもよい。そのようなシステムにおいて、モデル化オブジェクトは、対応するデータによって定義される。したがって、CADオブジェクトについて言及することがある。
【0049】
CADシステムは、少なくとも、CATIAのようなモデル化オブジェクトのグラフィック表現に基づくモデル化オブジェクトの設計に適した任意のシステムをも意味する。この場合、モデル化オブジェクトを定義するデータは、モデル化オブジェクトを表現可能にするデータを含む。CADシステムは、例えば、辺や線を用い、また、場合により面や曲面を用いて、CADモデル化オブジェクトの表現を提供してもよい。線、辺、あるいは面は、例えば、非一様有理Bスプライン(NURBS)など、様々な様式で表現されてもよい。具体的には、CADファイルは仕様を含み、その仕様に基づきジオメトリが生成可能であり、よって表現が生成可能となる。モデル化オブジェクトの仕様は1つまたは複数のCADファイルに格納されていてもよい。CADシステムでモデル化オブジェクトを表現するファイルの典型的なサイズは、一部分あたり1メガバイトの範囲である。また、モデル化オブジェクトは、典型的には、数千の部分の集合体であってもよい。
【0050】
CADの文脈において、モデル化オブジェクトは、典型的には、3Dモデル化オブジェクト、例えば、一つの部品や部品の集合体などの製品、あるいは製品の集合体を表すものであってもよい。「3Dモデル化オブジェクト」は、3D表現が可能なデータによってモデル化される任意のオブジェクトを意味する。3D表現は、その部品をすべての角度から見ることを可能にする。例えば、3Dで表現された3Dモデル化オブジェクトは、その軸のうちの任意の軸、あるいは、その表現が表示された画面中の任意の軸を中心に、処理して回転させることが可能である。これは、特に、3Dモデル化されていない2Dアイコンについては除外される。3D表現の表示は、設計を容易にする(すなわち、設計者が作業を達成するスピードを統計的に速める)。製品の設計は製造工程の一部であるから、これによって当該産業における製造工程が迅速化する。
【0051】
3Dモデル化オブジェクトは、CADソフトウェア・ソリューションやCADシステム等を用いた仮想的デザインの完了後に実世界において製造される製品、すなわち(例えば機械)部品や、部品の集合体(あるいは同様に部品の集合体。なぜなら部品の集合体は本開示の観点では一つの部品としてみることができるからである)など、より一般的には任意の剛体の集合体(例えば移動機構)などの製品のジオメトリを表現してもよい。CADソフトウェア・ソリューションは、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、および/または海洋石油/ガス生産、または交通を含む、限定されることのない様々な産業分野において製品の設計を可能にする。本開示により設計される3Dモデル化オブジェクトは、このように、地上車両の部品(例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモーター機器、トラック、バス、電車を含む)、航空車両の部品(例えば、航空機体機器、航空宇宙機器、推進機器、防衛製品、航空路線機器、宇宙機器を含む)、海軍車両の部品(例えば、海軍用機器、商業用船舶、オフショア機器、ヨットおよび作業船、船舶用機器を含む)、一般的な機械部品(例えば、工業用製造機械、大型移動機械または機器、設置機器、産業機器製品、加工金属製品、タイヤ製造製品を含む)、電気機械部品、または電子部品(例えば、家電、セキュリティおよび/または制御および/または計装製品、コンピューティングおよび通信機器、半導体、医療装置および設備を含む)、消費者製品(例えば、家具、家庭用および庭用製品、レジャー用品、ファッション用品、耐久消費財小売用品、織物類小売用品を含む)、包装(例えば、食品および飲料およびたばこ、美容およびパーソナルケア、家庭用製品包装を含む)などのように、任意の機械部品であり得る工業製品を表してもよい。
【0052】
ここで、剛性部品の機械的アセンブリの概念について説明する。
【0053】
剛性部品の機械的アセンブリは、関係の集合によってアセンブリへとリンクされた剛性部品の集合を指定する。剛性部品は、変形可能な部品など、他のタイプの部品と比較したとき、変形能力が無視できる部品を指定する。各関係は、2つ以上の剛性部品間の関係であり、当該2つ以上の剛性部品間の相対的な配置を表し、相対的な配置とは、当該2つ以上の剛性部品が1つまたは複数の幾何学的制約(2つ以上の部品の対称配置など)および/または1つまたは複数の物理的制約(2つ以上の部品をリンクする機械的リンクなど)を満たすようなものである。そのような1つの関係は、関係が関わる2つ以上の剛性部品の位置または取りうる位置の集合を決定する。ただし、当該関係の集合は、剛性部品の集合におけるすべての剛性部品が特定の順序ですべての関係を満たすように相互に関連して配置されるように、複数の関係を階層的に組み込んでおり、これにより、剛性部品の3D機械的アセンブリが形成される。したがって、剛性部品のアセンブリ、および剛性部品同士が組み立てられる方法は、剛性部品および/または剛性部品の下位アセンブリを互いに関連付けて編成する、関係の基本的な階層によって捉えられる。剛性部品とその階層間の関係は、機械的制約(構造的制約、機能的制約、および/または、製造上の制約など)、および/または、機械的要件(構造的要件、機能的要件、および/または、製造上の要件など)に由来するため、アセンブリは、「機械的アセンブリ」と呼ばれる。剛性部品のアセンブリは、それ自体が当該アセンブリに含まれる剛性部品のアセンブリである剛性部品の下位アセンブリを含む。一の剛性部品は下位アセンブリであると見なすことができることを理解されたい。
【0054】
下位アセンブリは、「有意な下位構造」と呼ばれるものであってもよい。有意な下位構造は、以下のうちいずれか1つまたは任意の組み合わせを満たす部品の機械的アセンブリの下位アセンブリを指定する。
【0055】
・下位アセンブリは機能的グループ、すなわち、特定の機械的機能を実行する。
【0056】
・下位アセンブリは特定の機能を有する。
【0057】
・下位アセンブリは特定の独立した下位アセンブリを含む。
【0058】
・下位アセンブリは、製造上、構造上、および/または機能上の制約の特定の集合に従う。
【0059】
・下位アセンブリは特定の製造プロセスで製造される(例えば、他の下位アセンブリの製造に用いられる他の製造プロセスとは異なる)。かつ/あるいは、
・下位アセンブリは製造プロセスの特定のステップで製造され(例えば、機械的アセンブリの製造に用いられる製造プロセスの他のステップとは異なる)、例えば、当該ステップは、特定の機械的および/または製造上の考慮事項を含む。
【0060】
生成オートエンコーダは、機能構造を生成するように構成され、機能構造は、剛性部品の機械的アセンブリを表すデータ構造である。ここで、データ構造について説明する。
【0061】
データ構造はツリーを含む(例えば、ツリーである)。ツリーは、剛性部品の機械的アセンブリにおける剛性部品間の関係、および関係と部品間の編成と階層を記述し捉えるデータ構造である。ツリーは、任意のツリー、例えばバイナリツリーであってもよい。それ自体知られているように、バイナリツリーの各非リーフノードは、一の子ノードまたは2つの子ノードを有する。ツリーはルートノードを含み、剛性部品の機械的アセンブリ全体を表す(例えば、それに対応する)。ツリーは、さらに、アセンブリの剛性部品にそれぞれ対応するリーフノードと、アセンブリ内の剛性部品の下位アセンブリにそれぞれ対応する非リーフノード(内部ノードとも呼ぶ)を含む。ここで、リーフノードと非リーフノードについて説明する。
【0062】
ツリーは、各剛性部品の形状と配置、および各剛性部品に作用する力をそれぞれ表すリーフノードを含む。言い換えれば、リーフノードは、剛性部品の機械的アセンブリの不可分な部品、つまりアセンブリの一の剛性部品に対応する。ここで、このようなリーフノードについて説明する。
【0063】
「各剛性部品の形状と配置、および各剛性部品に作用する力を表す」とは、リーフが、各剛性部品の形状と配置を表すデータと、各剛性部品に作用する力を表すデータとを含むことを意味する。
【0064】
各剛性部品の形状と配置を表すデータは、形状、ジオメトリ、ジオメトリのタイプ(ジオメトリプリミティブのタイプなど)、および/または、空間内の位置(他の剛性部品、および/または、3D座標系などに対する位置)を記述した任意の情報、および/または、各剛性部品の意味を含んでいてもよい。当該情報は、境界ボックス、および/または、正準形状など、各剛性部品の単純な表現に基づいていてもよい。
【0065】
各剛性部品に作用する力を表すデータは、各剛性部品に作用する、結果として生じる外力を表す任意の情報を含んでいてもよい。このように、各剛性部品に作用する力を表すデータは、各剛性部品に作用する、結果として生じる外力を指定してもよい。結果として生じる力は、各剛性部品が壊れる前にそれぞれの剛性部品に作用しうる限界外力の合力であり、かつ/あるいは、各剛性部品は、制約(例えば、製造上の制約、構造的制約、および/または、機能的制約)を満たす。
【0066】
一例において、各剛性部品の形状と配置は、各剛性部品の周囲の境界ボックスの仕様、例えば、当該境界ボックスを特徴付けるパラメータ、および/または、座標を含むデータによって表される。これらの例では、前述のように、それぞれの剛性部品に作用する力は結果として生じる力である。境界ボックスの仕様を含むデータは、さらに、幾何プリミティブのタイプを特徴付ける(例えば、特定する)1つまたは複数のパラメータなどの、各剛性部品の形状の仕様を含んでいてもよい。
【0067】
一例において、境界ボックスと結果として生じる力は、それぞれ、同じベクトルの第1の座標と第2の座標で表される。言い換れれば、リーフノードは、第1の座標および第2の座標を有するベクトルを含む。第1の座標は、各剛性部品の周囲の境界ボックスを特徴付けるパラメータである。第2の座標は、各剛性部品の周囲の境界ボックス(の点など)に適用されるすべての外力ベクトルの合計に対応する外力の合力ベクトルの座標など、結果として生じる力を特徴付けるパラメータである。ベクトルは、場合により、各剛性部品の形状に対応するタイプの幾何プリミティブを特徴付ける(例えば、特定する)1つまたは複数の第3の座標を含んでいてもよい。
【0068】
ツリーは、さらに、それぞれ複数の子を有し、それぞれ下位アセンブリ間の機械的リンクを表す非リーフノードを含む。各下位アセンブリは、当該複数の子のそれぞれ1つによって表される。ここで、このような非リーフノードについて説明する。
【0069】
複数の子のうちの各子は、リーフノード(すなわち、アセンブリの剛性部品に対応し、当該剛性部品は部品自体の下位アセンブリでもある)、か、あるいは別の非リーフノード(すなわち、アセンブリ内の剛性部品の下位アセンブリに対応)である。機械的リンクは、子によってそれぞれ表される部品と部品の下位アセンブリとをリンクさせる関係である。このように、機械的リンクは、前述のように、上記部品および部品の下位アセンブリの互いに対する配置を特徴付ける。一例においては、機械的リンクは機械的リンクパラメータのベクトルによって記述される。言い換えれば、これらの例では、非リーフノードは、機械的リンクパラメータのベクトル、すなわち、機械的リンクを特徴付けるパラメータである座標を有するベクトルを含む。言い換えれば、下位アセンブリまたは部品の相互の配置の記述に加え、非リーフノードは、下位アセンブリ間においてこれらを相対的に配置することになる機械的リンクをさらに特定するパラメータのベクトルを含んでいてもよい。代替一例においては、非リーフノードはそのようなパラメータのベクトルを含んでいなくてもよく、こうした代替例のように、機械的リンクは完全に複数の子によって特徴付けられる。
【0070】
一例において、機械的リンクは、下位アセンブリ間の隣接関係であり、当該隣接関係は、場合により、所定の隣接関係の集合に属する。隣接関係の所定の集合は、静的隣接関係と呼ばれる隣接関係および/または運動学的関係と呼ばれる隣接関係を含んでいてもよい(例えば、それらからなっていてもよい)。言い換えれば、機械的リンクは、静的隣接関係と運動学的隣接関係のうちの1つであってもよい。剛性部品の2つ以上の下位アセンブリ間の静的隣接関係とは、2つ以上の下位アセンブリ間の静的接触および/または相対的な配置(例えば静的機械的リンクによる)を記述する関係である。静的隣接関係は、自由度がゼロに等しい隣接関係として定義してもよい。静的隣接関係によって機械的にリンクされた下位アセンブリは、相対的な配置が固定されている。すなわち、互いに対して相対的に移動できない。剛性部品の2つ以上の下位アセンブリ間の運動学隣接関係とは、2つ以上の下位アセンブリ間の運動学的接触および/または相対的な配置(例えば運動学的機械的リンクによる)を記述する関係である。運動学的隣接関係は、自由度が1以上の隣接関係として定義してもよい。運動学隣接関係によって機械的にリンクされた下位アセンブリは、相対的な配置が固定されていない。すなわち、互いに対して相対的に移動できる。
【0071】
ツリーは、さらに、一の子を有し、かつ、それぞれ、一の子によって表される下位アセンブリの複製を表す、非リーフノードを含む。ここで、このような非リーフノードについて説明する。
【0072】
一の子は、リーフノードまたは別の非リーフノードであってもよい。「一の子によって表される下位アセンブリの複製を表す」とは、非リーフノードが、アセンブリ内における、同じ剛性部品または剛性部品の下位アセンブリの、複数のインスタンスを表すことを意味する。非リーフノードは、さらに、これら複数のインスタンスの互いに対する配置および/またはこれらのインスタンスの数を特定するデータをさらに含んでいてもよい。
【0073】
一例において、複製は、下位アセンブリのインスタンス間の対称関係であり、当該対称関係は、場合により、所定の対称関係の集合に属する。下位アセンブリのインスタンス間の対称関係は、インスタンスの互いに対する対称的な配置を特定する関係である。対称関係の所定の集合は、対の鏡像対称、k回回転対称、およびk回並進対称を含んでいてもよい。(例えば、それらからなっていてもよい)。言い換えれば、対称関係は、鏡像対称、k回回転対称、およびk回並進対称のうちの1つであってもよい。
【0074】
対をなす鏡像対称は、同じ下位アセンブリのうちの2つのインスタンス間の対称関係である。これは反射面によってパラメータ化され、2つのインスタンスの配置がこの平面に対して対称となるように特定する。
【0075】
k回回転対称は、同じ下位アセンブリのk個(kは2より大きいか2に等しい整数)のインスタンス間の対称関係である。これは個数kと回転軸によってパラメータ化される。これは、インスタンスの配置が、回転軸を中心とした同じ回転によって互いに2×2(two by two)の画像となるように特定する。
【0076】
k回並進対称は、同じ下位アセンブリのk個(kは2より大きいか2に等しい整数)のインスタンス間の対称関係である。これは個数kと並進オフセットによってパラメータ化される。これは、インスタンスの配置が、並進オフセットによって特徴付けられた同じ並進によって、互いに2×2の画像となるように特定する。
【0077】
一例において、対称関係は対称関係パラメータのベクトルによって記述される。言い換えれば、非リーフノードは、対称関係パラメータである座標を有するベクトルを含む。座標は、対をなす鏡像対称、k回回転対称、およびk回並進対称のうち対称関係のタイプを特定する1つまたは複数の第1座標を含んでいてもよい。座標は、対称関係によって複製されるインスタンスの数を特定する1つまたは複数の第2の座標を含んでいてもよい。座標は、上述の反射面、回転軸、または並進オフセットなど、対称関係の幾何学的パラメータを特定する1つまたは複数の第3の座標を含んでいてもよい。
【0078】
ここで、部品の機械的アセンブリおよびその機能構造の例について説明する。
【0079】
本開示の文脈では、部品の機械的アセンブリは椅子であってもよい。椅子は多くの場合(ただし常にではない)、脚の下位構造(すなわち椅子の脚のグループ)、アームの下位構造(つまり、椅子のアームのグループ)、シート、および背という、4つの有意な下位構造を含んでいてもよい。
【0080】
ここで、このような椅子およびその機能構造の例を、図3および図4を参照して説明する。図4は、合わせて表示された椅子の3D表現30を示し、図3は、椅子30を表す機能構造のツリー32を示す。
【0081】
ツリー32は、椅子の2つのアームのうちのそれぞれ1つの形状および配置、およびそれに作用する力を表す、リーフノード「arm.1」を含む。リーフノード「arm.1」は、「arm.1」の複製を表す非リーフノード「arm」の子である。複製は、「arm.1」で表されるアームと、椅子のもう一方のアームとの間の対称関係である。椅子の当該もう一方のアームを表すノード「arm.2」は、図3では、便宜上、「arm」の別の子として表示されている。対称関係は対をなす鏡像対称である(図4を参照すると、鏡像対称は、椅子の背4000に概ね直交する椅子30の垂直正中面に対する対称性であり、当該平面の配置と対称性のタイプを特定するベクトルとして記憶されてもよい)。非リーフノード「arm」は、椅子のアームによって形成される有意な下位構造を表す。
【0082】
ツリー32は、さらに、2つのリーフノード「leg.1.1.1」および「leg.1.1.2」を含み、これらはそれぞれ、椅子の脚の2つの部品34および36のうちの1つの形状および配置、および2つの部品34および36のうちの当該1つに作用する力を表す。ツリー32は、さらに、非リーフノード「leg.1.1」を含み、これは、「leg.1.1」の2つの子ノード「leg.1.1.1」および「leg.1.1.2」によって表される2つの部品34および36を組み立てる隣接関係を表す。「leg.1.1」は、「leg.1.1」によって表されるアセンブリの複製を表す“leg.1”の子である。複製は、「leg.1.1」で表されるアセンブリと、それの他のインスタンスとの間の対称関係である。当該他のインスタンスを表すノード「leg.1.2」は、便宜上、「leg.1」の別の子として表示されている。この対称関係は、対をなす鏡像対称である。「leg.1.2」は、部品340と360のアセンブリからなる、椅子の2つの脚のうちの他方を表す。部品340および360は、図3では、便宜上、それぞれリーフノード「leg.1.2.1」および「leg.1.2.2」として表されており、それぞれ、対をなす鏡像対称による部品34および36の画像である。ツリー32は、さらに、部品38の形状および配置、およびそれに作用する力を表す、リーフノード「leg.2」を含む。リーフノード「leg.2」および非リーフノード「leg.1」は、非リーフノード「leg」の2つの子であり、これは、「leg.1」で表される椅子の2つの対称な脚を、ノード「leg.2」で表される部品38と組み合わせる隣接関係を表す。非リーフノード「leg」は、椅子の脚によって形成される有意な下位構造を表す。
【0083】
ツリー32は、さらに、部品40の形状および配置、およびそれに作用する力を表す、リーフノード「back.1.1」を含む。ノード「back.1.1」は、部品40の複製を表す非リーフノード「back.1」の子である。複製は、部品40と、その別のインスタンス、すなわち部品400との間の対称関係である。部品400を表すノード「back.1.2」は、図3では、便宜上、「back.1」の別の子として表示されている。リーフノード「back.2」は、部品4000の形状および配置、およびそれに作用する力を表す。ツリー32はさらに、非リーフノード「back」を含み、これは部品400を、ノード「back.1」によって表される部品40の2つのインスタンスと組み合わせる隣接関係を表す。ノード「back」は、椅子の背によって形成される有意な下位構造を表す。
【0084】
ツリー32は、さらに、非リーフノード「assembly 1」を含み、これは、リーフノード「seat」によって表される椅子のシートを、非リーフノード「arm」によって表される椅子の腕と組み合わせる隣接関係を表す。
【0085】
ツリー32は、さらに、非リーフノード「assembly 2」を含み、これは、ノード「“assembly 1」によって表される下位アセンブリを、非リーフノード「leg」によって表される椅子の脚と組み合わせる隣接関係を表す。
【0086】
ツリー32は、さらに、ルートノード「chair」を含み、これは、椅子全体を表すとともに、ノード「“assembly 2」によって表される下位アセンブリを、非リーフノード「back」によって表される椅子の背と組み合わせる隣接関係を表す。
【0087】
本開示の文脈では、剛性部品の機械的アセンブリは自動車であってもよい。自動車は多くの場合(ただし常にではない)、以下のような有意な下位構造を含んでいてもよい。
【0088】
・ボンネット、バンパー、フェンダー、ピラー、ロッカー、ルーフ、クォーターパネル、トランク、ドア、窓、および/または床のうち、1つまたは複数を含みうるボディ下位構造。
【0089】
・シートおよび/またはダッシュボードを含みうる内部下位構造。および
・サスペンション、ホイール、ドライブシャフト、ブレーキシステム、ステアリングシステム、および/またはエンジンコンポーネントのうち1つまたは複数を含みうるシャーシ下位構造。
【0090】
自動車を表す機能構造のツリーは、多くの場合(ただし常にではない)、以下のノードのうちの1つまたは複数を含む。
【0091】
・フロントドア(リーフノードで表される)、バックドア(リーフノードで表される)、ミラー(リーフノードで表される)、ヘッドライト(リーフノードで表される)、またはシート(リーフノードで表される)のインスタンス間の対をなす鏡像対称関係をそれぞれが表す非リーフノード。
【0092】
・左前輪(リーフノードで表される)と左前サスペンション(リーフノードで表される)の間の隣接関係を表す非リーフノード「a_1」。
【0093】
・ノード「a_1」で表される対称アセンブリのインスタンスであってそれらインスタンスのうちの1つが右前輪と右前サスペンションからなるアセンブリであるようなインスタンス間の、対をなす鏡像対称を表す非リーフノード「s_1」。
【0094】
・ノード「s_1」で表される対称アセンブリのインスタンスであってそれらインスタンスのうちの1つが後輪と後方サスペンションであるようなインスタンス間の、対をなす鏡像対称を表す非リーフノード「s_2」。
【0095】
・ノード「s_2」で表される対称アセンブリとドライブシャフト(リーフノードで表される)の間の隣接関係を表す非リーフノード「a_2」。
【0096】
・後方シートのインスタンス(リーフノードで表される)であってそれらインスタンスのうちの1つが前方シートであるようなインスタンス間の、対をなす鏡像対称を表す非リーフノード「s_3」。
【0097】
・車床(リーフノードで表される)とノード「s_3」で表される対称アセンブリの間の隣接関係を表す非リーフノード「a_3」。
【0098】
・ノード「a_3」で表されるアセンブリと自動車のダッシュボード(リーフノードで表される)の間の隣接関係を表す非リーフノード「a_4」。ノード「a_4」は自動車の「内部」下位構造も表す。
【0099】
本開示の文脈では、部品の機械的アセンブリは椅子であってもよい。関節式ロボットは、把持機能など、ロボットの特定の機能にそれぞれ対応し隣接関係によってそれぞれ表すことができる、有意な下位構造を含んでいてもよい。
【0100】
ここで、部品の機械的アセンブリおよびその機能構造の他の例について説明する。
【0101】
本開示の文脈では、剛性部品の機械的アセンブリは、自動車(上述)、オートバイ、トラック、または飛行機など、任意のタイプの車両であってもよい。あるいは、剛性部品の機械的アセンブリは、椅子(上述)など、任意のタイプの家具であってもよい。あるいは、剛性部品の機械的アセンブリは、関節式ロボット(上述)など、任意のタイプのロボットであってもよい。一例においては、これらのオブジェクトクラス/カテゴリはすべて、部品および/または下位アセンブリ間の高レベルでの対称関係を表す。例えば、これらのオブジェクトクラス/カテゴリは、部品および/または下位アセンブリの少なくとも50%が対称関係に直接的または間接的に関与するようなものであってもよい。代替的に、または追加的に、これらのオブジェクトクラスのカテゴリは、部品が複数の(例えば4つ以上の)コヒーレントな下位構造に編成されるようなものであってもよい。隣接関係は、そのような下位構造を表現/作成することを可能にする。これらの下位構造は、機能性または独立した下位アセンブリに関して有意な下位構造に対応してもよい。このような下位構造の表現により、設計者は特定の下位構造に集中できる。
【0102】
ここで、機能構造のデータセットの提供(S10)について説明する。
【0103】
データセットの提供(S10)は、機能構造の少なくとも一部(例えば、それらの全て)をメモリから(例えば、離れた場所のコンピュータから)取得することを含んでいてもよい。機能構造の提供(S10)は、追加的に、または代替的に、機能構造における少なくとも別の一部の機能構造をそれぞれ作成することを含んでいてもよい。機能構造を作成することは、機能構造を一から(例えば、グラフィカルに)作成することからなってもよく、特に、機能構造のツリーを形成するためにノードおよびその配置を特定することを含んでいてもよい。あるいは、機能構造を作成することは、(例えば、メモリ、または椅子モデル用のShapenetライブラリなどのライブラリから)既存の初期機能構造を取得し、機能構造を取得するようにそれらを修正することを含んでいてもよい。例えば、初期機能構造はツリーを含んでいてもよいが、ツリーのリーフノード(またはそれらの少なくとも一部)は、リーフノードによって表される剛性部品に作用する力を表すデータを含んでいなくてもよい。そのような場合、当該修正は、力を表す上記データを上記リーフノードに追加することからなっていてもよい。データセットの提供(S10)は、ユーザによって実行されてもよい。
【0104】
データセットは、すべてが剛性部品の機械的アセンブリのうちの同じクラスに属する剛性部品の機械的アセンブリを表す機能構造からなるか、または実質的にそれらからなっていてもよい。一例において、剛性部品の機械的アセンブリは、すべてが1つまたは複数の基準を満たしている場合、剛性部品の機械的アセンブリのクラスを形成する。これらの1つまたは複数の基準は、それぞれ、以下の条件のいずれか1つまたは組み合わせであってもよい。
【0105】
・剛性部品の機械的アセンブリが、すべて同じ製造プロセスまたは製造プロセスの同じ組み合わせで製造される。
【0106】
・剛性部品の機械的アセンブリが、すべて同じ技術分野および/または産業のものである。
【0107】
・剛性部品の機械的アセンブリはすべて同じまたは類似の機械的機能を実行する。
【0108】
・剛性部品の機械的アセンブリは、すべて同じか、少なくとも実質的に同様の剛性部品からなる。
【0109】
・剛性部品の機械的アセンブリは、すべて同じまたは少なくとも類似した基本的な階層を持っている。
【0110】
・剛性部品の機械的アセンブリは、類似したタイプの有意な下位構造を有する。
【0111】
・剛性部品の機械的アセンブリは、すべて同じか、または実質的に同じ形状を有する。かつ/あるいは、
・剛性部品の機械的アセンブリは、すべて同じ機械的制約、機能的制約、製造上の制約、および/または構造的制約に従う。
【0112】
一例においては、データセットは、それぞれが自動車を表す機能構造、すなわち、自動車のクラスに属する部品の機械的アセンブリからなるか、または実質的にそれらからなる。
【0113】
他の一例においては、データセットは、それぞれが飛行機を表す機能構造、すなわち、飛行機のクラスに属する部品の機械的アセンブリからなるか、または実質的にそれらからなる。
【0114】
他の一例においては、データセットは、それぞれが椅子を表す機能構造、すなわち、椅子のクラスに属する部品の機械的アセンブリからなるか、または実質的にそれらからなる。
【0115】
他の一例においては、データセットは、それぞれが関節式ロボットを表す機能構造、すなわち、関節式ロボットのクラスに属する部品の機械的アセンブリからなるか、または実質的にそれらからなる。
【0116】
ここで、生成オートエンコーダの学習(S20)について説明する。まず、「機械学習」と「ニューラルネットワークの学習」の一般的な概念、およびその他の関連概念について説明する。
【0117】
機械学習の分野から知られているように、ニューラルネットワークによる入力の処理には、入力に演算を適用することが含まれ、当該演算は、重み値を含むデータによって定義される。このように、ニューラルネットワークの学習は、そのような学習のために構成されたデータセットに基づいて重みの値を決定することを含み、そのようなデータセットは、学習データセットまたはトレーニングデータセットと呼ばれることがある。そのために、データセットには、それぞれがトレーニングサンプルを形成するデータが含まれている。トレーニングサンプルは、学習後にニューラルネットワークが用いられる状況の多様性を表す。ここで参照されるデータセットは、1000個、10000個、100000個、あるいは1000000個を超える数のトレーニングサンプルが含まれていてもよい。本開示の文脈では、「データセットに対してニューラルネットワークを学習する」とは、データセットがニューラルネットワークの学習/トレーニングセットであることを意味する。
【0118】
生成オートエンコーダは、変分オートエンコーダ(Variational Autoencoder、以下「VAE」と呼ぶ)と敵対的生成ネットワーク(Generative Adversarial Network、以下GANと呼ぶ)の組み合わせであるディープニューラルネットワーク(Deep Neural Network、以下「DNN」と呼ぶ)である。生成オートエンコーダは識別ネットワークを追加したVAEであり、これは学習(S20)の間に追加される。この識別ネットワークは、VAEの出力を2つのクラス、すなわち「本物」または「偽物」に分類することにより、バイナリ分類を実行するように(学習(S20)中に)トレーニングされる。それ自体が知られているように、「偽物」は実際にVAEによって生成されることを意味し、「本物」は提供(S10)された機能構造のデータセットに由来することを意味する。生成オートエンコーダは、VAE-GANと呼ばれる場合がある。生成オートエンコーダは、そのようなニューラルネットワークをトレーニングするように適合された任意の機械学習技術を用いることによってトレーニング/学習(S30)できる。学習は、特に、再構成損失、敵対的損失、クロスエントロピー損失、およびGAN損失を含む複数の損失を、例えば1つまたは複数の勾配降下アルゴリズムにより最小化することを含んでいてもよい。再構成損失は、いわゆるKL発散項を含んでいてもよい。生成オートエンコーダは、特に、機能構造の入力ツリーを忠実に再構築するように学習(S20)されてもよく、再構築損失は、オートエンコーダによって再構築された入力ツリーと出力ツリーとの間の(例えばL2)距離を測定する。このように、オートエンコーダのエンコードおよびデコード機能は全単射機能である。
【0119】
それ自体が知られているように、ディープニューラルネットワークはディープラーニング技術によって学習されたニューラルネットワークであり、これは、ニューラルネットワークで学習するための強力な一連の技術であり、コンピュータが観測データから学習できるようにする、生物学にヒントを得たプログラミングパラダイムである。画像認識において、DNNは、他の画像分類方法(SVM、ブースティング、ランダムフォレストなど)で用いられる手動で設計された低レベルの機能(Zernikeモーメント、HOG、Bag-of-Words、SIFTなど)とは反対に、リッチな中間レベルのメディア表現を学習できる。より具体的には、DNNは未加工データに基づくエンドツーエンドの学習に焦点を当てている。言い換えれば、未加工の特徴から始まりラベルで終わるエンドツーエンドの最適化を実現することで、可能な限り特徴エンジニアリングから離れる。
【0120】
それ自体が知られているように、識別ディープニューラルネットワークは、入力xが与えられたときに離散値または連続値yを推定するように学習される関数である。これはペア(x, y)のデータセットで学習される。
【0121】
それ自体が知られているように、深層生成モデルは、トレーニングが行われるデータセットのデータ分布を複製することを学習するディープニューラルネットワークのクラスである。深層生成モデルには、変分オートエンコーダと敵対的生成ネットワークの2つのクラスがある。ハイブリッド生成モデルは、これら2つ、すなわち、変分オートエンコーダと生成オートエンコーダなどの敵対的生成ネットワークから構築できる。
【0122】
それ自体が知られているように、変分オートエンコーダは、2つの部分、すなわち、エンコーダとデコーダで構成されている。エンコーダは入力xを受け取り、分布確率を出力する。この分布はガウス分布に設定されているため、エンコーダは同じサイズの2つのベクトルmuおよびsigmaを出力する。次に、デコーダは、エンコーダによって出力された分布からサンプリングされたzが与えられて、xの再構築を試みる。
【0123】
それ自体が知られているように、GANは、トレーニング段階で現実のサンプルのデータセットが与えられると、「現実的な」サンプルを生成するように学習される。例えば、花の画像のデータセットでGANが学習された場合、トレーニングが完了すると、GANは非常に現実的に見える花の画像を生成できる。GANは、2つのネットワーク、すなわち生成器と識別器からなる。生成器は、ガウス分布からサンプリングされた低次元潜在変数zを入力とする。生成器の出力f(z)は、トレーニングデータセット内のデータと同じタイプのサンプルである。例えば、トレーニングデータが512×512個の画像の場合、f(z)は512×512個の画像であり、トレーニングデータがバイナリツリーの場合、f(z)はバイナリツリーである。生成器を学習する秘訣は、2つのクラス、すなわち「本物」と「偽物」の間で、入力に対してバイナリ分類を実行するように学習された識別器を用いることにある。その入力は、トレーニングデータセットからのものである場合は「本物」として、生成器からのものである場合は「偽物」として分類する必要がある。学習中、識別器は、そのバイナリ分類タスクを実行するように学習されるが、生成器は、弁別器によって「本物」として分類されたサンプルを生成することによって、識別器を「だます」ように学習される。両方のネットワークを一緒に学習するには、敵対的損失と呼ばれる特別な損失を用いることができる。
【0124】
このように、生成オートエンコーダは生成的である。上記で説明したように、ニューラルネットワークは、トレーニングデータの分布を学習する場合、「生成的」であると言える。生成モデルのみが新しいデータを生成できる。非生成オートエンコーダは、小さなサイズの入力データ(画像3D形状)の潜在ベクトルのみを縮小して再構築できるが、(例えば、ランダムな潜在ベクトルから)新しいデータを生成できない。したがって、生成オートエンコーダは、提供(S10)されたデータセットの機能構造に類似した「現実的な」機能構造を生成する新しい機能構造をその場で生成できる。
【0125】
さらに、生成オートエンコーダは再帰的ニューラルネットワークであり、これにより、それぞれがツリーを含む機能構造のデータセットの学習(S20)において学習されるようになる。
【0126】
それ自体が知られているように、再帰的ニューラルネットワークは、再帰的モジュールからなる一種のディープニューラルネットワークである。これらのモジュールには、エンコードモジュールとデコードモジュールの2つのタイプがある。エンコードモジュールは、複数の(例えば2つの)固定サイズのベクトルを入力とし、1つの固定サイズのベクトルを出力する。エンコードモジュールの入力の数は固定である。エンコードモジュールは、複数の(例えば2つの)固定サイズのベクトルを入力とし、1つの固定サイズのベクトルを出力する。デコードモジュールの出力数は固定されており、対応するエンコードモジュールの入力数と等しい。このように、生成オートエンコーダは、上述のように再帰モジュールを備えたVAE-GANである。エンコーダネットワークは、コードとして表現された子ノードを、繰り返し、ボトムアップ方式で、マージされたコードになるように折り畳むことによって、可変サイズの入力ツリー構造を固定サイズの潜在ベクトルに変換する。逆のプロセスにより、デコーダネットワークは、エンコーダネットワークによって出力された最終的な潜在コードから入力ツリー構造を復元するようにトレーニングされる。生成ニューラルネットワークの学習(S20)には、再帰モジュールでVAE-GANを学習できる、任意の機械学習技術を用いることができる。
【0127】
ここで、生成オートエンコーダの再帰モジュールについて、さらに説明する。
【0128】
一例においては、生成オートエンコーダは、エンコーダとデコーダを含む。これらの一例において、エンコーダは、リーフエンコードモジュール、機械的リンクエンコードモジュール、および複製エンコードモジュールを含む。リーフエンコードモジュール、メカニカルリンクエンコードモジュール、および複製エンコードモジュールは、上述のように再帰モジュールである。これらの一例において、デコーダは、ノード分類器、リーフデコードモジュール、機械的リンクデコードモジュール、および複製デコードモジュールを含む。リーフデコードモジュール、機械的リンクデコードモジュール、および複製デコードモジュールは、再帰的モジュールである。
【0129】
ここで、これらの例について、さらに説明する。
【0130】
ここで説明している一例において、エンコーダは、与えられた機能構造に関して、再帰的なボトムアッププロセスに従って、ツリー(すなわち与えられた機能構造のツリー)を一の潜在ベクトルにエンコードするように構成されている。言い換えれば、エンコーダは、与えられた機能構造のツリーを入力とし、一の潜在ベクトルを出力する。エンコーダは、そのエンコードモジュールを用いて、ツリーのノードを、ルートノードに到達するまで、連続する潜在ベクトルに再帰的に集約する(または折り畳む)ことにより、これを行う。この再帰的なボトムアップエンコードプロセスの最後には、ツリーは一の潜在ベクトルにエンコードされる。
【0131】
ボトムアップエンコードプロセス中に、リーフエンコードモジュールは、各リーフノードについて、それぞれの潜在ベクトルを出力する。リーフエンコードモジュールは、境界ボックスの仕様と結果として生じる力を含むデータに基づいてこれを行う。一例においては、これは、各リーフノードについて、リーフエンコードモジュールが、境界ボックスの仕様(すなわち、形状と配置がリーフノードによって表される剛性部品の周囲の境界ボックス)と結果として生じる力(すなわち、上記の剛性部品に作用する力)とを含むデータを入力として、それぞれの潜在ベクトルを出力することを意味する。上述のように、このデータは、それぞれの剛性部品の周囲の境界ボックスを特徴付ける第1の座標、結果として生じる力を特徴付ける第2の座標、および、場合により、幾何プリミティブのタイプを特徴付ける第3の座標を有するベクトルであるか、またはそれを含む。そのような場合、リーフエンコードモジュールは、このベクトルをそれぞれの潜在ベクトルに変換する。
【0132】
ボトムアップエンコードプロセス中に、機械的リンクエンコードモジュールは、機械的リンクを表す各非リーフノードについて、それぞれの潜在ベクトルを出力する。機械的リンクエンコードモジュールは、各非リーフノードの複数の子をエンコードする複数の潜在ベクトルに基づいて、それを行う。一例においては、これは、非リーフノードのそれぞれの子がそれぞれ予め潜在ベクトルにエンコードされているような機械的リンクを表す非リーフノードのそれぞれについて、機械的リンクエンコードモジュールが、これらすべての潜在ベクトルを入力とし、それぞれの潜在ベクトルを出力することを意味する。上述のように、非リーフノードは、機械的リンクパラメータのベクトルをさらに含んでいてもよい。そのような場合、機械的リンクエンコードモジュールは、上記潜在ベクトルに加えて、機械的リンクパラメータのベクトルを入力とし、それぞれの潜在ベクトルを出力してもよく、機械的リンクが存在しない場合、機械的リンクパラメータのベクトルは、例えばnullである。あるいは、エンコーダは、第1の機械的リンクエンコードモジュールおよび第2の機械的リンクエンコードモジュールを含んでいてもよい。第1の機械的リンクエンコードモジュールは、機械的リンクパラメータのベクトルを持たない機械的リンクを表す非リーフノードごとに、非リーフノードの子ノードを表すすべての潜在ベクトルを入力とし、それぞれの潜在ベクトルを出力する。第2の機械的リンクエンコードモジュールは、機械的リンクパラメータのベクトルを有する機械的リンクを表す非リーフノードごとに、非リーフノードの子ノードを表すすべての潜在ベクトル、および機械的リンクパラメータのベクトルを入力とし、それぞれの潜在ベクトルを出力する。
【0133】
ボトムアップエンコードプロセス中に、複製エンコードモジュールは、複製を表す各非リーフノードについて、それぞれの潜在ベクトルを出力する。複製エンコードモジュールは、各非リーフノードの一の子をエンコードする潜在ベクトルに基づいて、それを行う。一例においては、これは、非リーフノードの一の子が予め潜在ベクトルにエンコードされているような重複を表す非リーフノードのそれぞれについて、重複エンコードモジュールが、この潜在ベクトルを入力とし、潜在ベクトルを出力することを意味する。複製エンコードモジュールは、さらに、一の子ノードによって表される下位アセンブリの複数のインスタンスの互いに対する配置を特定する上述のデータを入力としてもよい。特に、上述のように、このデータは、複製が対称関係である例では、対称関係パラメータのベクトルであるか、またはそれを含んでいてもよい。そのような場合、複製エンコードモジュールは、上記潜在ベクトルおよび対称関係パラメータのベクトルを入力とし、それぞれの潜在ベクトルを出力する。
【0134】
ここで説明している一例において、デコーダは、与えられた一の潜在ベクトルに関して、再帰的なトップダウンプロセスに従って、与えられた一の潜在ベクトルを機能構造のツリーにデコードするように構成されている。言い換えれば、デコーダは、与えられた一の潜在ベクトルを入力とし、ツリーを出力する。デコーダは、そのデコードモジュールを用いて、子の潜在ベクトルが最終的にリーフノードへとデコードされるまで、連続する潜在ベクトル(すなわち、デコードプロセス中に、それにより連続的に生成される潜在ベクトル)を子の潜在ベクトルへと再帰的にデコードする。
【0135】
トップダウンデコードプロセス中に、ノード分類器は、デコード中に生成された各潜在ベクトルを、リーフノードに対応するもの、機械的リンクを表す非リーフノードに対応するもの、または複製を表す非リーフノードに対応するものとして分類する。言い換えれば、デコードで生成された連続する潜在ベクトル(すなわち、与えられた一の潜在ベクトルおよびデコードモジュールによって出力された潜在ベクトル)のそれぞれについて、ノード分類器は、潜在ベクトルを入力とし、それをリーフノードに対応するもの、機械的リンクを表す非リーフノードに対応するもの、または重複を表す非リーフノードに対応するものとして分類する。言い換えれば、ノード分類器は、適切なデコードモジュールが潜在ベクトルに適用されるように、連続する各潜在ベクトルをノードのいずれかのタイプに対応するものとして分類することにより、再帰的デコードをガイドする。実際、ノード分類器は、潜在ベクトルを分類する際に、この潜在ベクトルに適用するデコードモジュールを選択してもよい。一例において、潜在ベクトルのデコードは、ノード分類器を呼び出すことにより潜在ベクトルを分類し、分類の結果として潜在ベクトルをデコードするための適切なデコードモジュールを選択し、選択されたデコードモジュールを潜在ベクトルに適用することを含む。
【0136】
トップダウンデコードプロセス中に(および、例えば、ノード分類器に選択されたとき)、上記リーフデコードモジュールは、デコード中にリーフノードに対応するものとして分類された潜在ベクトルごとに、それぞれの境界ボックスの仕様およびそれぞれの結果として生じる力を含むデータを出力する。リーフデコードモジュールは、潜在ベクトルに基づいてこれを行う。一例においては、これは、潜在ベクトルをリーフノードに対応するものとして分類した結果、リーフデコードモジュールが潜在ベクトルを入力として、各境界ボックス(すなわち剛性部品の周囲の境界ボックス)の仕様と、結果として生じるそれぞれの力(すなわち、当該剛性部品に作用する力)とを含むデータを出力することを意味する。このデータは、それぞれの剛性部品の周囲の境界ボックスを特徴付ける第1の座標、結果として生じる力を特徴付ける第2の座標、および、場合により、幾何プリミティブのタイプを特徴付ける第3の座標を有するベクトルであるか、またはそれを含む。これは、リーフデコードモジュールがリーフノードを出力することに相当する。
【0137】
トップダウンデコードプロセス中に(および、例えば、ノード分類器に選択されたとき)、機械的リンクデコードモジュールは、デコード中に機械的リンクを表す非リーフノードに対応するものとして分類された潜在ベクトルごとに、複数の子潜在ベクトルを出力する。機械的リンクデコードモジュールは、潜在ベクトルに基づいてこれを行う。一例においては、これは、潜在ベクトルを、機械的リンクを表す非リーフノードに対応するものとして分類した結果、機械的リンクデコードモジュールが潜在ベクトルを入力として、複数の子潜在ベクトルを出力することを意味する。言い換えれば、機械的リンクデコードモジュールは、潜在ベクトルが対応する非リーフノードの複数の子ノードをそれぞれエンコードする複数の潜在ベクトルを出力する。機械的リンクデコードモジュールは、一例において、さらに、機械的リンクパラメータのベクトルを出力してもよく、機械的リンクが存在しない場合、機械的リンクパラメータのベクトルは、例えばnullである。あるいは、デコーダは、第1の機械的リンクデコードモジュールおよび第2の機械的リンクデコードモジュールを含んでいてもよい。第1の機械的リンクデコードモジュールは、機械的リンクパラメータのベクトルを持たない機械的リンクを表す非リーフノードごとに対応するものと分類された潜在ベクトルごとに、当該潜在ベクトルを入力とし、当該潜在ベクトルが対応する非リーフノードの複数の子ノードをそれぞれエンコードする複数の潜在ベクトルを出力する。第2の機械的リンクデコードモジュールは、機械的リンクパラメータのベクトルを有する機械的リンクを表す非リーフノードごとに対応するものと分類された潜在ベクトルごとに、当該潜在ベクトルを入力とし、当該潜在ベクトルが対応する非リーフノードの複数の子ノードをそれぞれエンコードする複数の潜在ベクトルを、機械的リンクパラメータのベクトルとともに出力する。
【0138】
トップダウンデコードプロセス中に(および、例えば、ノード分類器に選択されたとき)、重複デコードモジュールは、デコード中に重複を表す非リーフノードに対応するものとして分類された潜在ベクトルごとに、一の子潜在ベクトルを出力する。重複デコードモジュールは、潜在ベクトルに基づいてこれを行う。一例においては、これは、潜在ベクトルを、重複を表す非リーフノードに対応するものとして分類した結果、重複デコードモジュールが潜在ベクトルを入力として、一の子潜在ベクトルを出力することを意味する。言い換えれば、機械的リンクデコードモジュールは、潜在ベクトルが対応する非リーフノードの一の子ノードをエンコードする一の潜在ベクトルを出力する。機械的リンクデコードモジュールは、一例において、さらに、対称パラメータのベクトルなど、互いに関連する、一の子ノードによって表される下位アセンブリの複数のインスタンスの配置を特定するデータを出力してもよい。
【0139】
学習方法(またはモデリングプロセスのオフライン段階)の一例において、データセットの機能構造の少なくとも一部(例えば、それらすべて)のツリーの1つまたは複数のノード(例えば、それらすべて)が、それぞれ、所定のラベルのリストのうちの1つのラベルでタグ付けされる。これらの一例において、学習方法(またはモデリングプロセスのオフライン段階)は、さらに、潜在空間分類器の学習(S30)を含む。潜在空間分類器は、潜在ベクトルを入力とし、当該潜在ベクトルに所定のラベルのリストのうち1つのラベルでタグ付けするように構成されたニューラルネットワークである。
【0140】
ここで、そのような例について説明する。
【0141】
データセットは、所定のリストのうちのラベルで既にタグ付けされた上記少なくとも一部についての各ツリーを提供(S10)されてもよい。ツリーが所定のリストのうちのラベルでタグ付けされるとは、ツリーの1つまたは複数の第1のノードが当該所定のリストのうちの第1のラベルでタグ付けされることを意味する。ツリーの1つまたは複数の第2のノードは、所定のリストのうちの第2のラベルでタグ付けされてもよい。1つまたは複数の第3のノードは、所定のリストのうちの第3のラベルでタグ付けされてもよい。例えば、以下同様に、ツリーの各ノードは、所定のリストに属する各ラベルでタグ付けされる。追加的に、または代替的に、提供(S10)は、例えばユーザ動作により、所定のリストのうちのラベルを有する上記少なくとも一部のうちの1つまたは複数のツリー(例えばすべてのツリー)にタグ付けすることを含んでいてもよい。
【0142】
ラベルの所定のリストは、(例えば、提供(S10)の前またはその最中に)ユーザによって提供されてもよい。ラベルの所定のリストは、提供された機能構造のデータセットの剛性部品の機械的アセンブリのクラスに対して相対的(例えば、固有)であってもよい。これは、提供されたデータセットのすべてまたは実質的にすべての機能構造が、上述のように、すべて同じクラスの剛性部品の機械的アセンブリに属する剛性部品の機械的アセンブリを表すこと、および、ラベルの所定のリストがこのクラスに関連することを意味する。ラベルの所定のリストは、特に、特別なラベルとその他のラベルからなっていてもよい。特別なラベルはラベルがないことを示すが、その他のラベルはそれぞれ、該当クラスに典型的な有意な下位構造を表す(例えば、示す)。その他のラベルのうちの1つは、クラスを示すラベルであってもよく、ルートノードのみがタグ付けされる。言い換えれば、クラスに属し、そのようなリストのラベルでタグ付けされた剛性部品の機械的アセンブリを表すツリーは、次のようにタグ付けされてもよい。
【0143】
・剛性部品の機械的アセンブリの有意な下位構造でもあるサブアセンブリを表す任意のノードに、有意な下位構造を示すラベルをタグ付けてもよい。なお、ノードの子ノードがある場合、それらはすべて有意な下位構造の一部でもあり、よって有意な下位構造を示すラベルがタグ付けされていない。下位構造の親ノードのみがタグ付けされる。ただし、子ノードがある場合、それらは、リストの別のラベルでタグ付けしてもよい(例えば、下位構造内の別の有意な下位構造に対応する場合)。
【0144】
・その他のノードは、それらのどれも有意な下位構造の親ノードではないため、特別なラベルでタグ付けされる。
【0145】
例えば、提供された機能構造のデータセットの剛性部品の機械的アセンブリのクラスが自動車のクラスである場合、ラベルの所定のリストは、次のラベルで構成される:特別なラベルであるラベル「Car」(ルートノードにタグ付けするため、クラスを示す)、ラベル「Body Substructure」、ラベル「Interior Substructure」、およびラベル「Chassis」。
【0146】
例えば、提供された機能構造のデータセットの剛性部品の機械的アセンブリのクラスが椅子のクラスである場合、ラベルの所定のリストは、次のラベルで構成される:特別なラベルであるラベル「Chairs」(ルートノードにタグ付けするため、クラスを示す)、ラベル「Arm」、ラベル「Leg」、ラベル「Seat」、およびラベル「Back」。
【0147】
潜在空間分類器は、生成オートエンコーダと一緒に(すなわち、潜在空間分類器の学習(S30)と生成オートエンコーダの学習(S20)が一緒に実行される)、またはその後に(すなわち、潜在空間分類器の学習(S30)が、生成オートエンコーダの学習(S20)の後に実行される)、潜在ベクトルを入力として所定のラベルリストのうちの1つのラベルで潜在ベクトルにタグ付けするように構成されたニューラルネットワークを学習できる任意の機械学習技術を用いて、学習されてもよい。
【0148】
上述のように、再帰的なボトムアップエンコードプロセスと再帰的なトップダウンデコードプロセスの両方が、連続する潜在ベクトルを再帰的に生成する。このような連続する潜在ベクトルのそれぞれは、リーフノード、ルートノード、または内部ノード(すなわち、ルートノードではない非リーフノード)のいずれか1つであるツリー(すなわち、機能構造のツリー)のノードに対応するか、またはそれをエンコードする。言い換えれば、連続する潜在ベクトルは、中間潜在空間、つまり、リーフノード、ルートノード、またはその間の非リーフノードに対応する潜在ベクトルを含む潜在空間に属していてもよい。潜在空間分類器は、そのような潜在ベクトルを入力とし、対応するノードにリストのラベルをタグ付けする。言い換えれば、潜在空間分類器は、中間潜在ベクトル、すなわち中間潜在空間に属するベクトルを認識し、そのそれぞれに所定のリストのラベルでタグ付けすることができる。なお、同じ中間潜在空間に属する中間潜在ベクトルはすべて同じラベルでタグ付けされる。逆に、同じラベルでタグ付けされる中間潜在ベクトルは、すべて同じ中間潜在空間に属する。
【0149】
一例においては、有意な下位構造を表すノードに対応する中間潜在ベクトルに、有意な下位構造を示すラベルがタグ付けられている。前述のように、このノードの子ノードがある場合、それらは、中間潜在ベクトルの子潜在ベクトルに対応する(例えば、エンコードされる)。潜在空間分類器は、これらの子潜在ベクトルのそれぞれを(例えば、デコードプロセスの後の段階/ステップで)入力とし、有意な下位構造を示すラベルではないラベルでタグ付けする。これは、下位構造を表す親ノードのみがこのラベルでタグ付けされるためである。しかしながら、そのような子潜在ベクトルが、別の有意な下位構造、例えば、親ノードによって表される下位構造の下位構造に対応するラベルでタグ付けされてもよい。そうでない場合、子は特別なラベルがタグ付けられる。
【0150】
有意な下位構造に対応する潜在ベクトルにタグ付けを行うと、潜在空間分類器をそのような潜在ベクトルに適用することにより、それらをエンコードする中間潜在ベクトルのみに基づいて、再帰的なデコード中にこれらの下位構造を認識できるようになる。これにより、以下でさらに説明するように、有意な下位構造に対し、補間演算などの演算を実行することができる。興味深いことに、このような演算は、剛性部品の機械的アセンブリ全体、およびその有意な下位アセンブリに対して実行してもよい。
【0151】
ここで、機能構造および生成オートエンコーダの実施について、図5図7を参照して説明する。
【0152】
この実施例では、データセットは、前述のように、リーフノードと、2つの子を有しそれぞれが2つの子のそれぞれ1つで表される2つの下位アセンブリ間の隣接関係を表す非リーフノードと、それぞれが一の子を有し一の子によって表される下位アセンブリのインスタンス間の対称関係を表す非リーフノードとを含むバイナリツリーを含む(例えばそれからなる)機能構造からなる。単純化のため、本実施例の説明では、2つの子を有する非リーフノードは「隣接ノード」と呼び、一の子を有する非リーフノードは「対称ノード」と呼ぶ。この実施例では、データセットの各ツリーまたは実質的に各ツリーの各ノードに、上述のように、所定のリストのうちの1つのラベルがタグ付けされ、潜在空間分類器がデータセットで学習(S30)する。
【0153】
ここで、ツリーのノードについてさらに説明する。明瞭性のため、この説明では、n-Dという表記は「n次元」または「n次元の」を意味する。
【0154】
ツリーの各リーフノードは、(例えば不可分の)剛性部品(つまり、ツリーで表される機械的アセンブリ)に対応し、固定サイズのベクトルで、剛性部品のジオメトリ、物理的外力、および意味に関する情報を表す。言い換えれば、上述のように、リーフノードは、剛性部品の周囲の境界ボックスを特徴付ける第1の座標、および結果として生じる、剛性部品に作用する力を特徴付ける第2の座標とを有するベクトルを含む。具体的には、リーフノードは
【数1】

のタイプである18次元のベクトルによって記述(例えばエンコード)される。最初の12個の座標/パラメータ
【数2】

は、境界ボックス座標を特徴付ける。最後の6個の座標/パラメータ
【数3】

は、結果として生じる外力を特徴付ける。境界ボックス座標の12個のパラメータは、ボックスの中心の座標、3次元パラメーター(高さ,幅,長さ)と、絶対座標系内でその向きを表す2つの軸を連結する。結果として生じる外力は、境界ボックスに適用されるすべての外力ベクトルの合計に対応するベクトルである。パラメータ
【数4】

は、結果として生じる力の適用点に対応し、パラメータ
【数5】

は結果として生じるベクトルに対応する。18次元ベクトルは、剛性部品のジオメトリのタイプを表す第3の座標を含んでいてもよい。具体的には、18次元ベクトルは、剛性部品の幾何プリミティブのタイプを示す1つの追加の整数座標/パラメータ
【数6】

を含んでいてもよく、これは、円柱、環状体、角錐、または球など、最大で12個のパラメータにより特徴付けられる幾何プリミティブである。
【0155】
ツリーの各隣接ノードは、リーフノード、または1つのリーフノードと内部ノード、または2つの内部ノードである、2つの子を有する。隣接ノードは、2つの子によって表される2つの下位アセンブリ間の機械的リンクを特徴付ける隣接パラメータの固定サイズのベクトルをさらに含んでいてもよい。この固定サイズのベクトルは、
【数7】

のタイプであってもよい。座標/パラメータ
【数8】

は3Dフレームの変化を特徴付ける。座標/パラメータ
【数9】

は、同じフレームの原点についての任意の変形を特徴付ける3つの角度
【数10】

である。座標/パラメータ
【数11】

は、フレームの原点を変更するための並進3Dベクトルに対応する。座標/パラメータ
【数12】

は、
【数13】

のタイプの運動学的トルソーを特徴付け、ここで
【数14】

は、3つの正準回転の自由度であり、
【数15】

は、3つの正準並進の自由度である。座標/パラメータ
【数16】

は、結果として生じる力の3D適用点に対応し、座標/パラメータ
【数17】

は結果として生じる3Dベクトルに対応する。なお、
【数18】

の場合、2つの下位アセンブリ間には運動学的リンクは存在しない。このとき、隣接関係は、上述のように静的隣接関係とも呼ばれる。逆に、運動学的テンソルの自由度の1つがゼロでない場合、隣接関係は、上述のように運動学的隣接関係とも呼ばれる。
【0156】
上述のように、各対称ノードは一の子を有する。ここで説明している実施例では、上述のように、対称ノードは、さらに、対称関係パラメータのベクトルを含む。対称関係パラメータのベクトルは、
【数19】

のタイプであってもよい。これは、以下でさらに説明するように、対称エンコード(またはデコード)モジュールへの第2の入力(または出力)である。座標/パラメータ
【数20】

は、対称関係のタイプ(反射、回転、並進)に対応する。座標/パラメータ
【数21】

は、回転および並進対称関係の反復回数に対応する。座標/パラメータ
【数22】

は、鏡像対称の反射面のパラメータ(3D法線ベクトルと平面に属する3D点の仕様(例えば座標)を含む)、回転対称の回転軸のパラメータ(軸と同一線上にある3Dベクトルと、軸に属する1つの点の仕様/座標を含む)、または並進対称の変位ベクトルのパラメータのいずれかに対応する。
【0157】
ここで、生成オートエンコーダについて説明する。図5は、生成オートエンコーダのVAE-GAN構造の概略図を示す。生成オートエンコーダは、さらに、それぞれが再帰的エンコードモジュールおよびデコードモジュールをそれぞれ含むエンコーダおよびデコーダを含む。これらについて、ここで図6および図7を参照して説明する。各再帰的エンコードモジュールと各デコードモジュールは、例えば100-D隠れ層と80-D出力層を有する、2層パーセプトロンネットワークであってもよい。
【0158】
図6は、上述の、エンコーダの再帰的エンコードモジュールおよび再帰的ボトムアップエンコードプロセスの概略図を示す。図6に示すように、エンコーダは、与えられた機能構造のツリー60を入力とし、それを一の固定サイズの潜在ベクトルにエンコードする。ツリー60の隣接ノードは「A」を含む円として表され、当該ツリーの対称ノードは「S」を含む円として表され、リーフノードは文字を含まない円として表されている。エンコーダは、3つの再帰的エンコードモジュールを含む(図6において境界ボックス64、66、および68として表されている)。すなわち、リーフエンコードモジュール64、機械的リンクエンコードモジュール66(この実施例では「隣接エンコードモジュール」とも呼ぶ)、および複製エンコードモジュール68(この実施例では「対称エンコードモジュール」とも呼ぶ)である。再帰的ボトムアップエンコードプロセスは、矢印60によって示される方向に従って、ツリー60のノードの最下位レベルからツリー60のルートノードまで行くことにより、ツリー60のノードを再帰的に折り畳み/集約し、ノードに遭遇するたびに、以下に説明するように、適切なエンコードモジュールを適用することによってノードをエンコードする。
【0159】
エンコードプロセス中に、リーフエンコードモジュール64は、リーフノードに含まれるベクトル(すなわち、境界ボックスと結果として生じる力とをそれぞれ特徴付ける第1と第2の座標を有するベクトル)を入力とし、1つの固定サイズの潜在ベクトルを出力することによって、遭遇したリーフノードをエンコードする。具体的には、リーフエンコードモジュール64は、リーフノードのベクトルに対応する1つの18-D入力(あるいは、ベクトルが上述のように第3の座標を有する場合は、オプションで19-D)および1つのn-D出力を有する。そのパラメータは、式
【数23】

を用いて子リーフノード
【数24】

から親ノードyの潜在ベクトルを取得するのに用いられる重み行列
【数25】

とバイアスベクトル
【数26】

である。
【0160】
エンコードプロセス中に、隣接エンコードモジュール66は、遭遇した隣接ノードを以下によってエンコードする。
【0161】
・隣接ノードが隣接関係パラメータのベクトルを含まない場合(図6に示す状況)、隣接ノードの2つの子のそれぞれ1つをエンコードする2つの潜在ベクトルを入力とし、1つの潜在ベクトルを出力する。隣接エンコードモジュールには、2つのn-D入力と1つのn-D出力を有する。nは整数である。そのパラメータは、式
【数27】

を用いて子
【数28】

および
【数29】

から(マージした)親ノードyの潜在ベクトルを取得するのに用いられる重み行列
【数30】

とバイアスベクトル
【数31】

である。
【0162】
・あるいは、隣接ノードがさらに隣接関係パラメータのベクトルを含む場合、当該ベクトルと、隣接ノードの2つの子のそれぞれ1つをエンコードする2つの潜在ベクトルを入力とし、1つの潜在ベクトルを出力する。この場合、隣接エンコードモジュールは2つのn-D入力、すなわち隣接関係パラメータのベクトルに対応する1つのm-D入力と、1つのn-D出力を有する。nとmは整数である。そのパラメータは、式
【数32】

を用いて子
【数33】


【数34】

および
【数35】

から(マージした)親ノードyの潜在ベクトルを取得するのに用いられる重み行列
【数36】

とバイアスベクトル
【数37】

である。
【0163】
エンコードプロセス中に、対称エンコードモジュール68は、対称ノードの一の子をエンコードする潜在ベクトルおよび対称関係パラメータのベクトルを入力とし、1つの潜在ベクトルを出力することによって、遭遇した対称ノードをエンコードする。具体的には、対称エンコードモジュールは、2つの入力、すなわち、1つのn-D入力と1つのs-D入力(s=8)、および、1つのn-D出力を有する。そのパラメータは、式
【数38】

を用いて子ノード
【数39】

および対称パラメータベクトル
【数40】

から(マージした)親ノードyの潜在ベクトルを取得するのに用いられる重み行列
【数41】

とバイアスベクトル
【数42】

である。
【0164】
図7は、上述の、デコーダの再帰的デコードモジュールおよび再帰的トップダウンデコードプロセスの概略図を示す。図7に示すように、デコーダは、与えられた機能構造の一の潜在ベクトル70を入力とし、それを機能構造のツリー80へとデコードする。ツリーの隣接ノードは「A」を含む円として表され、当該ツリーの対称ノードは「S」を含む円として表され、リーフノードは文字を含まない円として表されている。エンコーダは、3つの再帰的デコードモジュールを含む(図7において境界ボックス74、76、および78として表されている)。すなわち、リーフデコードモジュール74、機械的リンクデコードモジュール76(この実施例では「隣接デコードモジュール」とも呼ぶ)、および複製デコードモジュール78(この実施例では「対称デコードモジュール」とも呼ぶ)である。再帰的トップダウンデコードプロセスは、矢印72によって示される方向に従って、ツリー80のノードの与えられた一の潜在ベクトル(ツリー80のルートノードを表す)からデコード中に生成される最後の子潜在ベクトル(かつツリー80の最下位レベルのノードを表す)まで行くことにより、以前のデコードステップで生成した潜在ベクトルを、それぞれがツリー80のノードを表す子潜在ベクトルへと、再帰的にデコードする。生成した潜在ベクトルに遭遇するたびに、以下に説明するように、適切なデコードモジュールを適用することによって潜在ベクトルをデコードする。
【0165】
デコーダは、ノード分類器700をさらに含み、これは、与えられた一の潜在ベクトル70から始めて、デコード中に潜在ベクトルが生成されるたびに、当該潜在ベクトルを入力とし、それをリーフノード、隣接ノード、あるいは対称ノードに対応するものとして分類し、適切なデコードモジュールを選択し、次いで、それが当該潜在ベクトルに適用される。言い換えれば、デコーダは上述のようにデコードをガイドする。
【0166】
デコードプロセス中に、リーフデコードモジュール74は、潜在ベクトルを入力とし、境界ボックスと結果として生じる力をそれぞれ特徴付ける第1および第2の座標(および場合により幾何プリミティブのタイプを指定する第3の座標)を有する18-Dベクトル(または場合によりで19-Dベクトル)を出力することにより、リーフノードに対応するものとして分類された生成された潜在ベクトルをデコードする。具体的には、リーフデコードモジュール64は、リーフノードのベクトルに対応する1つのn-D入力および1つの18-D出力(あるいは、ベクトルが上述のように第3の座標を有する場合は、オプションで19-D)を有する。そのパラメータは、式
【数43】

を用いて親ノードyから子リーフノード
【数44】

の潜在ベクトルを取得するのに用いられる重み行列
【数45】

とバイアスベクトル
【数46】

である。
【0167】
デコードプロセス中に、隣接デコードモジュール76は、隣接ノードに対応するものとして分類された生成された潜在ベクトルを、以下によってデコードする。
【0168】
・潜在ベクトルが隣接関係パラメータのベクトルを含まない隣接ノードに対応するものとして分類された場合(図7に示す状況)、当該潜在ベクトルを入力とし、2つの子潜在ベクトルを出力する。具体的には、隣接デコードモジュール76は、隣接エンコードモジュールのうちの1つの正確なミラー演算を行う。それは、1つのn-D入力と2つのn-D出力を有する。隣接デコードモジュール76は、そのパラメータは、式
【数47】

を用いて親ノード
【数48】

から2つの子ノード
【数49】

および
【数50】

の2つの潜在ベクトルを取得するのに用いられる重み行列
【数51】

とバイアスベクトル
【数52】

である。
【0169】
・潜在ベクトルが隣接関係パラメータのベクトルを含まない隣接ノードに対応するものとして分類された場合(図7に示す状況)、当該潜在ベクトルを入力とし、2つの子潜在ベクトルおよび隣接パラメータのベクトルを出力する。この場合、隣接デコードモジュールは1つのn-D入力、と2つのn-D出力および隣接関係パラメータのベクトルに対応する1つのm-D出力を有する。nとmは整数である。そのパラメータは、式
【数53】

を用いて親ノード
【数54】

のベクトルから2つの子ノード
【数55】

および
【数56】

の潜在ベクトルを取得するのに用いられる重み行列
【数57】

とバイアスベクトル
【数58】

である。
【0170】
デコードプロセス中に、対称デコードモジュール78は、潜在ベクトルを入力とし、一の子潜在ベクトルと対称関係パラメータのベクトルを出力することによって、対称ノードに対応するものとして分類された生成された潜在ベクトルをデコードする。具体的には、対称デコードモジュール78は、次のように、対称エンコードモジュールのうちの1つの正確なミラー演算を行う。
【数59】

具体的には、対称デコードモジュールは、1つのn-D入力と2つの出力、すなわち1つのn-D出力および1つのs-D出力(s=8)を有する。そのパラメータは、式
【数60】

を用いて親ノード
【数61】

の潜在ベクトルから子ノード
【数62】

と対称パラメータベクトル
【数63】

を取得するのに用いられる重み行列
【数64】

とバイアスベクトル
【数65】

である。
【0171】
図7はさらに、デコードプロセス中に、生成された潜在ベクトルを入力とし、上述のように所定のリストのうちの1つのラベルでそれにタグ付けする、潜在空間分類器7000を示す。潜在空間分類器7000とノード分類器700は、上述のように、一緒に、または個別に学習でき、本実施例では、これらはともに、以下のタイプの、いわゆる「多項論理損失」(「クロスエントロピー損失」とも呼ぶ)を最小限に抑えることで学習される。
【数66】

この式において、Cはクラスの個数である。ノード分類器の学習(S20)の場合、クラスは、リーフノード、隣接ノード、および対称ノードである。潜在空間分類器の学習(S30)の場合、クラスは予め定義したリストのラベルである。この式において、クラスラベル
【数67】

がグラウンドトゥルースラベルである場合、
【数68】

はバイナリインディケータであり、
【数69】

は、このクラスのネットワークによって出力された予測確率である。ノード分類器は、n-Dベクトルを入力とし、「リーフノード」、「隣接ノード」、および「対称ノード」の各クラスの確率を出力する。ラベル分類器は、n-Dベクトルを入力とし、リストの各ラベルの確率を出力する。
【0172】
ここで、1つまたは複数の潜在ベクトルの提供(S100)について説明する。
【0173】
1つまたは複数の潜在ベクトルの少なくとも一部(例えば、それらのすべて)におけるそれぞれの潜在ベクトルは、ガウス分布をサンプリングすることによって提供(S100)されてもよく、サンプリングの結果、潜在ベクトルが得られる。代替的に、または追加的に、1つまたは複数の潜在ベクトルの少なくとも別の一部(例えば、それらすべて)におけるそれぞれの潜在ベクトルは、エンコーダをツリーに適用し、機能構造のそれぞれのツリー(例えば、提供(S10)されたデータセット、またはテストデータセットなどの別のデータセットのもの。テストデータセットの概念はそれ自体が機械学習の分野で知られている)をエンコードすることによって提供されてもよく、これによりツリーを潜在ベクトルにエンコードする。
【0174】
ここで、機能構造の生成(S200)について説明する。
【0175】
当該生成(S200)は、各潜在ベクトル(すなわち、提供(S100)された1つまたは複数の潜在ベクトルのうちの潜在ベクトル)をデコーダでデコードすることを含む。言い換えれば、各潜在ベクトルについて、生成(S200)は、当該潜在ベクトルにデコーダを適用することを含む。デコーダを潜在ベクトルに適用すると、上述のように、連続した子潜在ベクトルが、例えば、最終的にデコードによって機能構造のツリーが出力されるまで、生成される。一例において、特に、1つまたは複数の提供(S100)された潜在ベクトルが一の潜在ベクトルからなる例では、生成(S200)は、提供(S100)された各潜在ベクトルをデコードすることからなってもよく、デコードにより、各潜在ベクトルについて、機能構造のツリーが出力される。提供(S100)される一の潜在ベクトルがある場合、一の潜在ベクトルがデコードされて生じる各ツリーを含む、一の生成(S200)された機能構造がある。
【0176】
一例において、潜在空間分類器が学習(S30)されると、当該1つまたは複数の潜在ベクトルは、第1の潜在ベクトルと第2の潜在ベクトルを含む。一例において、デコードは、当該第1の潜在ベクトルおよび当該第2の潜在ベクトルのそれぞれについて、中間潜在ベクトルを含む潜在ベクトルを生成する。これらの一例において、機能構造の生成(S200)は、第1の潜在ベクトルの第1の中間潜在ベクトルと第2の潜在ベクトルの第2の中間潜在ベクトルとの間の補間演算を実行することを含む。補間演算の実行は、第1の中間潜在ベクトルと第2の中間潜在ベクトルにタグ付けするのと同じラベルに基づく。
【0177】
言い換えれば、第1(または第2)の潜在ベクトルのデコードにより、第1(または第2)の中間潜在ベクトルが生成される。第1(または第2)の潜在ベクトルは、機能構造の第1(または第2)のツリーをエンコードし、第1(または第2)の中間潜在ベクトルは、それぞれ第1(または第2)のツリーによって表される剛性部品の機械的アセンブリのそれぞれのサブアセンブリを表す第1(または第2)のツリーの各ノードをエンコードする。上述のように、各中間潜在ベクトルは、リーフノード、内部ノード、またはルートノードのうちいずれか1つを表してもよい。このように、それらの各サブアセンブリは、剛性部品の機械的アセンブリ全体、または一の剛性部品など、剛性部品の機械的アセンブリの厳密なサブアセンブリのいずれか1つであってもよい。
【0178】
第1(または第2)の潜在ベクトルのデコード中に、第1(または第2)の中間潜在ベクトルのそれぞれについて、潜在空間分類器は、それぞれの第1(または第2)の中間潜在ベクトルを入力とし、所定のリストのうちの1つのラベルでタグ付けする。補間演算が実行される第1の中間潜在ベクトルと第2の中間潜在ベクトルは、潜在空間分類器により同じラベルでタグ付けされる。これは、第1の中間潜在ベクトルは、剛性部品の第1の機械的アセンブリの第1の有意な下位構造を表す第1のツリーのノードをエンコードし、第2の中間潜在ベクトルは、剛性部品の第2の機械的アセンブリの第2の有意な下位構造を表す第2のツリーのノードをエンコードする、ということを意味する。これは、第1の中間潜在ベクトルと第2の中間潜在ベクトルが、ともに同じ中間潜在ベクトル空間に属していることも意味する。これはさらに、第1の有意な下位構造と第2の有意な下位構造が同じタイプであること、すなわち、同じクラスの剛性部品の2つの機械的アセンブリの、対応する下位構造であることを意味する。
【0179】
ここで、補間演算について説明する。v1とv2をそれぞれ第1の中間潜伏ベクトルと第2の中間潜伏ベクトルとする。補間演算は、v1とv2を入力とし、
【数70】

を満たすベクトル
【数71】

を出力する。補間演算を実行することは、ベクトルv3を算出することと、第1の中間潜在ベクトルと第2の中間潜在ベクトルのうち1つのベクトル、例えばv1を、算出したベクトルv3で置き換えることを含む。補間演算は、ブレンディング演算とも呼ばれ、これはα=1または0の限界ケースである。このように、ブレンディング演算の実行は、v1をv2で(またはv2をv1で)置き換えることからなる。
【0180】
補間演算が実行されると、デコードが続行される。より正確に、補間演算の結果として、v1がv3(またはα=0でのブレンディングの場合は単にv2)に置き換えられたとする。次いで、第1の潜在ベクトルのデコードが続行され、これはv1のデコードからなる。ここで、v1はv3およびまだデコードされていない第1の潜在ベクトルの他の子潜在ベクトルに等しくなる。次いで、第1の潜在ベクトルのデコードにより、ベクトルv3で表される有意な下位アセンブリを含む、剛性部品の機械的アセンブリを表す機能構造の第1のツリーが生成される。第2の潜在ベクトルのデコードは、それが第2のツリーを生成するまで同様に継続してもよい。
【0181】
なお、αの異なる値を用いて、複数の演算が実行されてもよい。
【0182】
図8図9、および図10は、生成オートエンコーダが、椅子を表す機能構造のデータセットについて学習(S20)された例における補間(またはブレンディング)演算を示す。上述のように、ツリーには「椅子」、「シート」、「背」、「アーム」、および「脚」というラベルでタグ付けられている。
【0183】
図8に示すように、椅子82は、補間演算を実行せずに第1の潜在ベクトルのデコードにより得られる機能構造の3Dビューである。椅子84は、補間演算を実行せずに第2の潜在ベクトルのデコードにより得られる機能構造の3Dビューである。他の椅子は、αの異なる値について、椅子82と椅子84の脚の下位構造を表す中間潜在ベクトル間の補間演算を実行した結果を表す。
【0184】
図9は、椅子の脚の下位構造間の補間の結果の別の例を示す。
【0185】
図10は、椅子102に対して実行されたブレンディング補間の結果得られる椅子104を示し、ここでは椅子102の脚は別の椅子の脚で置き換えられている。
【0186】
いずれの場合も、生成(S200)が補間(またはブレンディング)を含むかどうかにかかわらず、生成(S200)により、上述のようにトポロジ最適化の実行対象となりうる、部品の機械的アセンブリを表す生成された機能構造が得られる。
【0187】
ここで、トポロジ最適化の実行(S300)について説明する。この説明の前に、その概念について説明する。
【0188】
剛性部品の機械的アセンブリに対してトポロジ最適化を実行する(S300)ことは、剛性部品の機械的アセンブリ、またはそれを表し、トポロジ最適化に適したデータ構造に対して、任意のトポロジ最適化方法、プロセス、またはアルゴリズムを実行することを意味する。このようなデータ構造は、特に、生成された機能構造であってもよいし、それから推論されてもよい。このように、トポロジ最適化の実行(S300)は、トポロジ最適化の入力を提供すること(すなわち、トポロジ最適化方法、プロセス、またはアルゴリズムに、入力を提供すること)を含む。
【0189】
トポロジ最適化の分野からそれ自体が知られているように、トポロジ最適化の入力は、FEMを含む。FEMは、剛性部品の機械的アセンブリ、または、それを表すモデル化オブジェクトを含む空間を表す。FEMは2Dであっても、3Dであってもよい。FEMは規則的であっても、不規則であってもよい。規則的なFEMは、トポロジ最適化中の演算を容易にする。FEMは、例えば、各有限要素が四面体または六面体である、任意のタイプのものであってよい。FEMを提供することは、設計空間および設計空間のメッシュを定義することを含んでいてもよい。トポロジ最適化の実行(S300)は、FEMをユーザに表示すること、およびユーザがトポロジ最適化の他の入力を定義することを含んでもよく、これは、例えば、表示されたFEM上でのグラフィカルなユーザ対話操作によるものを含む。要素の定義に関する「グラフィカルなユーザ対話操作」とは、設計者が触覚システム(例えば、マウス、または感応/タッチスクリーンや感応/タッチパッドなどのタッチデバイス)を用いてディスプレイユニットの1つまたは複数の場所をアクティブにして、要素を配置する、任意のユーザ対話操作を意味する。シーンの場所をアクティブにすることは、その上にマウスのカーソルを位置させること、またはその上でタッチを実行することを含んでいてもよい。アクティブ化後、実質的にリアルタイムで、定義された要素の表現が表示されてもよい。
【0190】
トポロジ最適化の分野からそれ自体が知られているように、トポロジ最適化の入力は、さらに、FEMに関連付けられ剛性部品の機械的アセンブリに依存するデータを含む。
【0191】
トポロジ最適化の分野からそれ自体が知られているように、これら関連付けられたデータは、材料に関連するパラメータ、言い換えれば、剛性部品の機械的アセンブリが形成される材料を表すデータを含む。これらの材料パラメータは、特に、材料の機械的特性を表してもよい。材料パラメータは、例えば、材料のヤング率、および/または、材料のポアソン比を含んでいてもよい。一例において、ユーザは、例えばリストからの選択により、材料を指定してもよく、かつ/あるいは、システムは、例えば、1つまたは複数の式、および/または、データベースに基づいて、材料パラメータを自動的に決定し、かつ/あるいは、その選択をユーザに提案してもよい。材料は、任意の材料、例えば、金属(例えば、鋼鉄、銀、金、チタン)、プラスチック(例えば、ナイロン、ABS、ポリカーボネート、樹脂)、セラミック、または合成物などの、固体、および/または、等方性材料であってもよい。
【0192】
トポロジ最適化の分野からそれ自体が知られているように、関連付けられたデータは、さらに、全体的な数量の制約を含む。全体的な数量の制約は、FEM内の材料の全体的な数量に関連する。言い換えれば、全体的な数量の制約は、FEM全体の材料の合計量の値を制限する。全体的な数量の制約は、例えば、FEM(全体)の材料で満たすことができる割合の境界、例えば、当該割合の上限として提供されてもよい。あるいは、全体的な数量の制約は、境界ではなく、到達すべき値を提供してもよい。ただし、トポロジの最適化は、最適な結果において、利用可能な限り多くの材料を用いる傾向がある目的関数を最適化し、そのような等式制約を上限制約と同等なものとすることができる。すべての場合において、割合は体積分率であってもよい(このような場合、「Global Volume Constraint(全体的な体積の制約)」のように、GVCとも呼ばれる)。他の一例において、全体的な数量の制約は、材料の重量を表す値を含んでいてもよい。
【0193】
トポロジ最適化の分野からそれ自体知られているように、関連付けられたデータはさらに、剛性部品の機械的アセンブリの利用条件を表すデータを含み、それに基づき、トポロジ最適化は、そのような予測される使用を考慮して、剛性部品の機械的アセンブリを最適化できる。
【0194】
トポロジ最適化の分野からそれ自体知られているように、関連付けられたデータは、特に、本開示の機能構造のリーフノードで表されるものなど、力を含む。言い換えれば、関連づけられたデータは、それぞれFEMの1つまたは複数の有限要素に適用可能でありリンクされたベクトル(例えば、ニュートンの大きさまたはその倍数)を含む。これらの力は、使用時に剛性部品の機械的アセンブリが受ける荷重を部分的に表す。言い換えれば、データにおいてそれぞれの力が存在するFEMの1つまたは複数の有限要素ごとに、データは、当該1つまたは複数の有限要素に対応する場所での剛性部品の機械的アセンブリの材料が、対応する荷重を受けることになるという事実を表す。ただし、剛性部品の機械的アセンブリは理論的に無数の荷重を受ける可能性があるため、すべて荷重がデータに存在する力によって表されるわけではない。力は、荷重の集合全体の制約のみ、例えば、最も重要な荷重および/または最も代表的な荷重を表す。力は各モデリング問題について決定され、オブジェクトがその存続期間中に受ける可能性がある最大の(すなわち、大きさが最高の)力になるように選択される。なぜなら、これらの力は最大の変形と機械的応力を引き起こす傾向があるためである。これらの力は、荷重ケースと呼ばれる集合にグループ化されてもよい。産業上の問題は、一例において、1-12の荷重ケースを有してもよい。一例において、ユーザは、FEMのグラフィカルなユーザ対話操作を介して有限要素を選択し、次いで、それに適用可能な力を指定してもよい。
【0195】
トポロジ最適化の分野からそれ自体が知られているように、関連付けられたデータは、境界条件も含む。各境界条件は、メッシュの1つまたは複数の有限要素に適用され、かつリンクされ、剛性部品の機械的アセンブリに対して利用時に適用される境界の各制約を表する。言い換えれば、各境界条件は、上記1つまたは複数の有限要素に対応する場所において、剛性部品の機械的アセンブリの材料がその変位に対する制約を受けるという事実を、例えばディリクレ境界条件を用いて表す。要素は、平面に沿って、曲線に沿って、軸に沿って/軸の周りに、または点に/点の周りに拘束された変位を有してもよく、かつ/あるいは、その変位は、平行移動でのみ、回転のみで、または平行移動と回転の両方で拘束されてもよい。移動と回転の両方で点に拘束された変位の場合、要素は3D空間において固定され、「クランプ」されていると言われる。しかしながら、要素は、その変位が、平面に沿った並進に拘束されるが当該平面上を自由に移動するか(例えば、ベアリング上に搭載された物体に属する場合)、軸に沿った並進に拘束されるが当該軸上を自由に移動するか(例えば、ピストン内)、または軸周りの回転に拘束されてもよい(例えば、ロボットアームの関節)。
【0196】
一例においては、境界条件はすべての拘束された境界を表す。言い換えれば、最終的に拘束された(たとえば、固定されたままになる)材料を含むことを目的とするFEMの各有限要素に対して、境界(たとえば、クランプ)条件を関連付けて、この事実をトポロジ最適化に統合してもよい。一例において、ユーザは、FEMのグラフィカルなユーザ対話操作を介して有限要素を選択し、次いで、それに適用可能な境界条件を指定してもよい。
【0197】
一例においては、剛性部品の機械的アセンブリの1つまたは複数の拘束された境界は、1つまたは複数の固定された境界を含むか、またはそれで構成され(すなわち、上記1つまたは複数の境界における材料は移動できない)、対応する1つまたは複数の境界条件は、クランプ条件である。
【0198】
トポロジ最適化は、広く知られているように、入力に基づいて目的関数を自動的に最適化することを含んでもよい。目的関数は、最適化されるべき任意の機械的特性を表してもよい。トポロジ最適化は、特に剛性を最大化してもよい。そのための目的関数はコンプライアンス関数であってもよい。コンプライアンスは、構造について、その構造の剛性の逆数である。このように、コンプライアンスは、指定された荷重シナリオと固定境界条件を考慮して、構造の変形量をカプセル化する。よって、最適化プロセスがコンプライアンスを最小化する場合、これは与えられた質量に対する設計の剛性を最大化することに対応する。目的関数の自由変数は、FEM上における材料の量(例えば、体積分率)の分布(すなわち、レイアウト)であってもよい。このように、トポロジ最適化は、メッシュの各有限要素における材料の量(例えば、体積分率)を変化させて目的関数を最適化する。目的関数は材料パラメータに依存してもよく(すなわち、目的関数の固定変数が材料パラメータを含んでいてもよく)、最適化は、全体的な数量の制約を含む制約の下で実行されてもよい。最適化は、任意のアルゴリズム、例えば反復アルゴリズムに従って実行されてもよい。材料の量が材料の体積分率の場合、最適化プロセスにより、有限要素ごとの材料の体積分率の分布が得られる。そのような場合、トポロジ最適化またはトポロジ最適化の実行(S300)は、(例えば、自動的な)フィルタリング、すなわち、各有限要素が(完全に)材料で満たされているかどうかをそのような体積分率分布に基づいて判断するさらなるステップを含んでいてもよい。例えば、これは、(例えば、所定の)閾値(例えば、0.1または0.2より大きく、かつ/あるいは、0.9または0.8より小さい、例えば、0.5程度)との比較に基づいてもよく、最適化の結果として得られる体積分率が閾値よりも大きい(または小さい)場合、有限要素は材料で完全に満たされている(または完全に空である)と見なされる。トポロジ最適化の実行(S300)は、一例においては、さらに、結果に基づいて境界表現(B-Rep)モデルなどの3Dモデル化オブジェクトを(例えば、自動的に)算出することを含んでいてもよい。例えば、トポロジ最適化の実行(S300)は、最適化および/またはフィルタリングから生じる一連の有限要素に基づき、またそれに沿って、掃引ボリュームを算出してもよい。
【0199】
トポロジ最適化シナリオの仕様を例示した図11に示すように、一般的なトポロジ最適化ワークフローは、設計空間112(ここでは小さな正方形の要素に細分化される)、荷重ケース114の集合(設計に加えられる力)および境界条件116(設計が変形に対して拘束、例えば、「クランプ」される場所、ここでは設計空間112の左側全体)を入力として必要とする。追加のパラメータ、例えば、保持する必要がある外殻、選択した材料の機械的構成特性、目標質量、最大許容変形、あるいはその他の制約などを定義できる。設計ワークフローでは、設計空間の定義以外の初期ジオメトリの規定を除外できる。なぜなら、トポロジ最適化の目的は空のキャンバス(設計空間)から、最適化された設計を生成することだからである。
【0200】
一般的なトポロジ最適化ワークフローの出力は、入力された仕様にできる限り準拠する、最適化された設計のジオメトリである。図12は、最適化中のそのような設計の1つを示しており、最適化プロセス中に進化する設計を示している。この例では、全体的な体積分率は30%に設定されている。図12は、初期設計122、5回の最適化の繰り返し124の後の設計、10回の最適化の繰り返し126の後の設計、および25回の最適化の繰り返し128の後の最終的に収束した設計を示す。
【0201】
図13に示すように、一般的なトポロジ最適化のワークフローは、一例において、以下に示す8つのステップに従ってもよい。
【0202】
1.設計空間のメッシュ化
図11に示すように、設計空間の離散化を作成する。これは、空間を接続された小さな単純な要素、例えば四面体や六面体に分割することを意味する。これらの小さな要素は、後に、シミュレーションのFEMおよび最適化の設計変数の両方として機能してもよい。
【0203】
2.荷重ケースと境界条件の適用
ここで、一般的なトポロジ最適化ワークフローは、力と境界条件を与えれられた入力仕様とし、それらをFEMのノードに適用してもよい。図11は、設計空間が規則的な正方形の要素に細分化されたメッシュを示す。左側のノードがクランプ(2D空間に固定)され、下向きの力が設計空間の中央右側に加わる。
【0204】
3.設計変数の初期化
各要素は、それぞれ「0」と「1」の値で定義された、空であるか材料で満たされているかを定義する所定の相対密度値を有する。さらに、最適化問題を連続的にするために、一般的なトポロジ最適化ワークフローでは、要素が0-1の間の任意の値を取れるようにしてもよい。これは「緩和」とも呼ばれる。中間密度の要素の解釈があいまいになる可能性があるため、一般的なトポロジ最適化ワークフローでは、中間要素密度を、下限および上限がそれぞれ0または1の要素よりも全体的に構造動作の効率が低くなるようにするペナルティアプローチを導入してもよい。これは、図12に示すように連続的な形成を維持しながら、オプティマイザを駆動して、中間密度の少ない最終設計を生成する効果がある。
【0205】
4.平衡の解の算出
この時点で、一般的なトポロジ最適化ワークフローは、メッシュ化されて力と境界条件が付加された完全に定義された有限要素モデルを有してもよく、ここで、各要素は相対密度値を有する。これにより、一般的なトポロジ最適化ワークフローは、全体的な剛性マトリックスを組み立てて、構造平衡の節点変位の解を算出してもよい。言い換えれば、一般的なトポロジ最適化ワークフローでは、加えられた力と境界条件について、現在の状態での構造の変形を算出してもよい。
【0206】
5.目的関数値と導関数の算出
任意のトポロジ最適化で使用できる目的関数は、構造のコンプライアンスである。これは剛性の逆であり、よって、指定された荷重シナリオと境界条件を考慮した、構造の変形量をカプセル化する。よって、最適化プロセスがコンプライアンスを最小化する場合、これは与えられた質量に対する設計の剛性を最大化することに相当する。さらに、プロセスには多数の設計変数があるため、勾配ベースの方法で最適化を実行できる。したがって、一般的なトポロジ最適化ワークフローは、各設計変数に関する目的関数の導関数も算出してもよい。言い換えれば、一般的なトポロジ最適化ワークフローは、各要素の相対密度をどのように変更してコンプライアンスを改善し制約を満たすかを算出してもよい。コンプライアンスのため、これはよく知られている古典的な「随伴感度解析」を用いて実行してもよい。さらに、導関数を算出した後、これらの導関数をフィルタリングにより平滑化し、数値的安定性を改善してもよい。一般的なトポロジ最適化ワークフローは、誤った格子パターンを削減し、最適化に長さスケールを導入して明確に定義するようにしてもよい。
【0207】
6.制約値と導関数の算出
一般的なトポロジ最適化ワークフローの制約関数は、構造の全体的な体積分率であってもよい。このようなGVCは、使用が許可される最大の材料の体積を定義し、したがって、デザインを構成するマテリアルの最大質量を定義する。したがって、オプティマイザは、設計空間でこの質量の最適な分布を見つけて、剛性を最大化する必要がある。図12は、全体的な体積分率は同じであるが、プロセス中の最適化反復中に材料の分布が変化する、最適化ワークフローにおける中間設計124および126を示す。この制約についての導関数は要素の体積に等しく、要素のサイズが等しい場合、導関数は各要素に対して一定であるため、容易に算出できる。
【0208】
7.数理計画法を用いた設計変数の更新
目的関数と制約の値が、それらの導関数とともに既知である場合、一般的なトポロジ最適化ワークフローは、勾配ベースの数理計画法を用いて各要素の相対密度を変更し、指定されたGVCに違反することなく構造コンプライアンスを改善してもよい。数理計画法によって各要素の相対密度値が変更され、最適化プロセスで指定された変更済み設計がまだ収束していない場合、一般的なトポロジ最適化ワークフローはステップ4にループバックしてもよい。この問題に対する単純な数理計画法は、いわゆる最適性基準(Optimality Criteria:OC)である。他の公知の数理計画法を用いてよい。
【0209】
8.最終設計の出力
収束が達成されると、一般的なトポロジ最適化ワークフローは、各要素が最適化された相対密度値を有する設計空間における最終的な設計を提示してもよい。単純な閾値処理プロセスにより、一般的なトポロジ最適化ワークフローは、相対密度値が特定の閾値(例えば、0.5になるように選択される)を超える要素の集合によって定義されたジオメトリを抽出してもよい。ここで、一般的なトポロジ最適化ワークフローは、一般的なトポロー最適化ワークフローの出力である最適化された設計のジオメトリを提示してもよい。図12は、ステップ2で説明し、図11に示した仕様に最適化された最終設計128を示す。
【0210】
生成された機能構造によって表される剛性部品の機械的アセンブリに対するトポロジ最適化の実行(S300)では、この一般的なトポロジ最適化ワークフローのすべてのステップを実施してもよい。
【0211】
特に、トポロジ最適化の実行(S300)は、一例において、上述の一般的なトポロジ最適化ワークフローを実施する任意のアルゴリズムなど、トポロジ最適化アルゴリズムを提供することを含む。
【0212】
これらの一例においては、トポロジ最適化の実行(S300)は、さらに、トポロジ最適化アルゴリズムに入力を提供することを含む。これは、生成された機能構造から上記入力の少なくとも一部を取得することを含む。例えば、生成(S300)は、それぞれが、生成された機能構造のツリーのリーフノードによって表される力である力を生成してもよい。これらの生成された力は、このように生成された機能構造から取得される、トポロジ最適化の入力を形成してもよい。上述のように、トポロジ最適化アルゴリズムはさらに、FEM、FEMに関連付けられた機械的アセンブリに依存するデータ、全体的な数量の制約、剛性部品の機械的アセンブリの利用条件、および/または境界条件(例えば、クランプ)を入力としてもよい。
【0213】
これらの一例においては、トポロジ最適化の実行(S300)は、剛性部品の機械的アセンブリ(または、例えば、それを表しアルゴリズムへの入力に適した任意のデータ構造)に対してトポロジ最適化アルゴリズムを実行することを含む。
【0214】
図14は、椅子を表す生成された機能構造に対してトポロジ最適化を実行(S300)した結果の例を示す。図14は、生成された椅子142の3Dビュー、および生成された椅子142に対してトポロジ最適化を実行(S300)した結果144の3Dビューを示す。
【0215】
図15はモデリングプロセスの実施例を示すパイプラインである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15