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

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

▶ マツダ株式会社の特許一覧

特開2022-168521最適解の演算方法、装置及びプログラム
<>
  • 特開-最適解の演算方法、装置及びプログラム 図1
  • 特開-最適解の演算方法、装置及びプログラム 図2
  • 特開-最適解の演算方法、装置及びプログラム 図3
  • 特開-最適解の演算方法、装置及びプログラム 図4
  • 特開-最適解の演算方法、装置及びプログラム 図5
  • 特開-最適解の演算方法、装置及びプログラム 図6
  • 特開-最適解の演算方法、装置及びプログラム 図7
  • 特開-最適解の演算方法、装置及びプログラム 図8
  • 特開-最適解の演算方法、装置及びプログラム 図9
  • 特開-最適解の演算方法、装置及びプログラム 図10
  • 特開-最適解の演算方法、装置及びプログラム 図11
  • 特開-最適解の演算方法、装置及びプログラム 図12
  • 特開-最適解の演算方法、装置及びプログラム 図13
  • 特開-最適解の演算方法、装置及びプログラム 図14
  • 特開-最適解の演算方法、装置及びプログラム 図15
  • 特開-最適解の演算方法、装置及びプログラム 図16
  • 特開-最適解の演算方法、装置及びプログラム 図17
  • 特開-最適解の演算方法、装置及びプログラム 図18
  • 特開-最適解の演算方法、装置及びプログラム 図19
  • 特開-最適解の演算方法、装置及びプログラム 図20
  • 特開-最適解の演算方法、装置及びプログラム 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022168521
(43)【公開日】2022-11-08
(54)【発明の名称】最適解の演算方法、装置及びプログラム
(51)【国際特許分類】
   G06N 99/00 20190101AFI20221031BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021074043
(22)【出願日】2021-04-26
(71)【出願人】
【識別番号】000003137
【氏名又は名称】マツダ株式会社
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100059959
【弁理士】
【氏名又は名称】中村 稔
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100130937
【弁理士】
【氏名又は名称】山本 泰史
(74)【代理人】
【識別番号】100162824
【弁理士】
【氏名又は名称】石崎 亮
(72)【発明者】
【氏名】山王丸 将吾
(57)【要約】
【課題】最適解を安定且つ高速に求める最適解の演算方法を提供する。
【解決手段】最適解の演算方法は、或る内部変数において目的関数を線形近似した関数が目標値を満たす解を求める第1ステップと、解に対応する目的関数値が第1ステップの目的関数値未満である場合、この解を次に第1ステップを行うべき内部変数として設定する第2ステップと、解に対応する目的関数値が第1ステップの目的関数値以上である場合、目標値を内部変数に対応する目的関数値に近付ける変更と、線形近似した関数及び変更後の目標値に基づく解の算出とを繰り返す第3ステップと、第3ステップによる解に対応する目的関数値が第1ステップの目的関数値未満になったときに、この解を次に第1ステップを行うべき内部変数として設定する第4ステップと、第2又は第4ステップで設定された内部変数から最適解を決定する第5ステップと、を有する。
【選択図】図19
【特許請求の範囲】
【請求項1】
内部変数により規定され且つ凸関数である目的関数の最適解を演算するために、コンピュータ装置によって実行される最適解の演算方法であって、
或る内部変数と、当該内部変数に対応する前記目的関数の値である目的関数値とに基づき前記目的関数を線形近似した関数が、所定の目標値を満たす解を求める第1ステップと、
前記第1ステップで求められた前記解に対応する目的関数値が、前記第1ステップで用いられた内部変数に対応する目的関数値未満である場合に、当該解を、次に前記第1ステップを行うべき新たな内部変数として設定する第2ステップと、
前記第1ステップで求められた前記解に対応する目的関数値が、前記第1ステップで用いられた内部変数に対応する目的関数値以上である場合に、前記目標値を前記第1ステップで用いられた目的関数値に近付けた値へと変更して、前記線形近似した関数が、変更された前記目標値を満たす解を求める第3ステップであって、前記変更された目標値から求められた前記解に対応する目的関数値が、前記第1ステップで用いられた目的関数値未満になるまで、前記目標値を前記第1ステップで用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、前記線形近似した関数が前記変更された目標値を満たす解を繰り返し求める前記第3ステップと、
前記第3ステップで求められた前記解に対応する目的関数値が、前記第1ステップで用いられた目的関数値未満になったときに、当該解を、次に前記第1ステップを行うべき新たな内部変数として設定する第4ステップと、
前記第2又は第4ステップで設定された内部変数に対応する目的関数値と前記目標値との差分が所定値未満になるまで、前記第1乃至第4ステップを繰り返し行わせ、前記差分が前記所定値未満になったときに、このときに用いられていた内部変数を前記最適解として決定する第5ステップと、
を有することを特徴とする最適解の演算方法。
【請求項2】
前記第3ステップでは、前記第1ステップで用いられた内部変数に対応する目的関数値と前記目標値との中央値を求め、この中央値によって前記目標値を変更する、請求項1に記載の最適解の演算方法。
【請求項3】
更に、前記第1又は第3ステップで求められた前記解に対応する目的関数値が前記目標値未満である場合、当該目標値を当該目的関数値よりも小さい値へと変更する第6ステップを有する、請求項1又は2に記載の最適解の演算方法。
【請求項4】
前記第6ステップでは、前記第1又は第3ステップで求められた前記解に対応する目的関数値が前記目標値未満である場合、当該目的関数値と当該目標値の変更前に用いられていた目標値との間の中央値を求め、この中央値によって前記目標値を変更する、請求項3に記載の最適解の演算方法。
【請求項5】
前記第5ステップでは、前記第2又は第4ステップで設定された内部変数に対応する目的関数値と前記目標値との差分が前記所定値未満で、且つ、前記第2又は第4ステップで設定された内部変数に対応する目的関数値と、前記目標値の変更前に用いられていた目標値との差分が所定値未満となったときに、このときに用いられていた内部変数を前記最適解として決定する、請求項1乃至4のいずれか一項に記載の最適解の演算方法。
【請求項6】
前記最適解の演算方法は、少なくとも一部分が固定され且つ荷重が少なくとも一部分に付与される部材について、当該部材を構成する材料の最適な充填率分布を求めるために用いられ、
前記内部変数は、前記充填率分布に対応するパラメータであり、前記目的関数は、前記荷重による前記部材の変位量に応じたパラメータにより規定される、
請求項1乃至5のいずれか一項に記載の最適解の演算方法。
【請求項7】
前記第1ステップで求められた前記解から前記部材の体積を求め、この体積が所定の制約値以上である場合には、前記体積が前記制約値未満となるまで、前記第2及び第3ステップを行わずに、前記第1ステップを繰り返し行う、請求項6に記載の最適解の演算方法。
【請求項8】
内部変数により規定され且つ凸関数である目的関数の最適解を演算する最適解の演算装置であって、
或る内部変数と、当該内部変数に対応する前記目的関数の値である目的関数値とに基づき前記目的関数を線形近似した関数が、所定の目標値を満たす解を求める第1手段と、
前記第1手段で求められた前記解に対応する目的関数値が、前記第1手段で用いられた内部変数に対応する目的関数値未満である場合に、当該解を、次に前記第1手段を行うべき新たな内部変数として設定する第2手段と、
前記第1手段で求められた前記解に対応する目的関数値が、前記第1手段で用いられた内部変数に対応する目的関数値以上である場合に、前記目標値を前記第1手段で用いられた目的関数値に近付けた値へと変更して、前記線形近似した関数が、変更された前記目標値を満たす解を求める第3手段であって、前記変更された目標値から求められた前記解に対応する目的関数値が、前記第1手段で用いられた目的関数値未満になるまで、前記目標値を前記第1手段で用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、前記線形近似した関数が前記変更された目標値を満たす解を繰り返し求める前記第3手段と、
前記第3手段で求められた前記解に対応する目的関数値が、前記第1手段で用いられた目的関数値未満になったときに、当該解を、次に前記第1手段を行うべき新たな内部変数として設定する第4手段と、
前記第2又は第4手段で設定された内部変数に対応する目的関数値と前記目標値との差分が所定値未満になるまで、前記第1乃至第4手段を繰り返し行わせ、前記差分が前記所定値未満になったときに、このときに用いられていた内部変数を前記最適解として決定する第5手段と、
を有することを特徴とする最適解の演算装置。
【請求項9】
内部変数により規定され且つ凸関数である目的関数の最適解を演算するために、コンピュータ装置によって実行される最適解の演算プログラムであって、
前記コンピュータ装置を、
或る内部変数と、当該内部変数に対応する前記目的関数の値である目的関数値とに基づき前記目的関数を線形近似した関数が、所定の目標値を満たす解を求める第1手段と、
前記第1手段で求められた前記解に対応する目的関数値が、前記第1手段で用いられた内部変数に対応する目的関数値未満である場合に、当該解を、次に前記第1手段を行うべき新たな内部変数として設定する第2手段と、
前記第1手段で求められた前記解に対応する目的関数値が、前記第1手段で用いられた内部変数に対応する目的関数値以上である場合に、前記目標値を前記第1手段で用いられた目的関数値に近付けた値へと変更して、前記線形近似した関数が、変更された前記目標値を満たす解を求める第3手段であって、前記変更された目標値から求められた前記解に対応する目的関数値が、前記第1手段で用いられた目的関数値未満になるまで、前記目標値を前記第1手段で用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、前記線形近似した関数が前記変更された目標値を満たす解を繰り返し求める前記第3手段と、
前記第3手段で求められた前記解に対応する目的関数値が、前記第1手段で用いられた目的関数値未満になったときに、当該解を、次に前記第1手段を行うべき新たな内部変数として設定する第4手段と、
前記第2又は第4手段で設定された内部変数に対応する目的関数値と前記目標値との差分が所定値未満になるまで、前記第1乃至第4手段を繰り返し行わせ、前記差分が前記所定値未満になったときに、このときに用いられていた内部変数を前記最適解として決定する第5手段と、
として機能させることを特徴とする最適解の演算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、目的関数の最適解を演算する最適解の演算方法、装置及びプログラムに関する。
【背景技術】
【0002】
従来から、所定の内部変数により規定された目的関数の最適解を演算する技術が知られている。1つの例では、この技術は、与えられた部材の設計領域内(材料分布範囲内)において、部材を構成する材料の最適な充填率分布(密度分布)を求めるための位相最適化(トポロジー最適化)に適用されている。この例では、目的関数は、荷重による部材の変位量に応じたパラメータ(例えばコンプライアンス)により規定され、この目的関数を規定する内部変数には、充填率分布に対応するパラメータが適用される。
【0003】
また、目的関数の最適解を求めるに当たって、最適化問題において目的関数の勾配に関する情報を解の探索に用いる勾配法や、方程式系を数値計算によって解くための反復法によるアルゴリズムであるニュートン法(ニュートン・ラフソン法)などが用いられている。例えば、特許文献1には、勾配法を用いて複数回計算を行うことで、複数個のパラメータの値を同時に選択して、パラメータの最適化の高速化を図る技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-181318号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、勾配法は計算時間が膨大にかかるという問題があり、ニュートン法は計算が不安定になる場合があるという問題があった。そこで、本願発明者は、このような問題を解決すべく鋭意研究を重ねた結果、目的関数の最適解を安定且つ高速に求めることができる演算方法を見出した。
【0006】
本発明は、上述した従来技術の問題点を解決するためになされたものであり、内部変数により規定され且つ凸関数である目的関数の最適解を演算する最適解の演算方法、装置及びプログラムにおいて、最適解を安定且つ高速に求めることを目的とする。
【課題を解決するための手段】
【0007】
上記の目的を達成するために、本発明は、内部変数により規定され且つ凸関数である目的関数の最適解を演算するために、コンピュータ装置によって実行される最適解の演算方法であって、或る内部変数と、当該内部変数に対応する目的関数の値である目的関数値とに基づき目的関数を線形近似した関数が、所定の目標値を満たす解を求める第1ステップと、第1ステップで求められた解に対応する目的関数値が、第1ステップで用いられた内部変数に対応する目的関数値未満である場合に、当該解を、次に第1ステップを行うべき新たな内部変数として設定する第2ステップと、第1ステップで求められた解に対応する目的関数値が、第1ステップで用いられた内部変数に対応する目的関数値以上である場合に、目標値を第1ステップで用いられた目的関数値に近付けた値へと変更して、線形近似した関数が、変更された目標値を満たす解を求める第3ステップであって、変更された目標値から求められた解に対応する目的関数値が、第1ステップで用いられた目的関数値未満になるまで、目標値を第1ステップで用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、線形近似した関数が変更された目標値を満たす解を繰り返し求める第3ステップと、第3ステップで求められた解に対応する目的関数値が、第1ステップで用いられた目的関数値未満になったときに、当該解を、次に第1ステップを行うべき新たな内部変数として設定する第4ステップと、第2又は第4ステップで設定された内部変数に対応する目的関数値と目標値との差分が所定値未満になるまで、第1乃至第4ステップを繰り返し行わせ、差分が所定値未満になったときに、このときに用いられていた内部変数を最適解として決定する第5ステップと、を有することを特徴とする。
【0008】
このように構成された本発明では、第1ステップで求められた解に対応する目的関数値が、第1ステップで用いられた目的関数値以上である場合に、目標値から求められた解に対応する目的関数値が第1ステップで用いられた目的関数値未満になるまで、目標値を第1ステップで用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、線形近似した関数(一次関数)が変更された目標値を満たす解を繰り返し求めて、解に対応する目的関数値が第1ステップで用いられた目的関数値未満になったときに、当該解を、次に第1ステップを行うべき新たな内部変数として設定する。
このような本発明によれば、悪い解も受け入れるしかなかった従来の手法(特にニュートン法)と異なり、最適解の導出のために用いられる制約値としての目標値を変動させことにより、悪い解を切り捨てて良い解を確実に求めることができるので、安定した計算を行うことが可能となる。また、本発明によれば、良い解を見つけるまでの繰り返しの処理において、目的関数を線形近似した関数及び第1ステップで用いられた内部変数に対応する目的関数値を使い回すことができるので、計算ステップ数の増大を効果的に抑制することができる。以上より、本発明によれば、最適解を安定且つ高速に求めることができる。
【0009】
本発明において、好ましくは、第3ステップでは、第1ステップで用いられた内部変数に対応する目的関数値と目標値との中央値を求め、この中央値によって目標値を変更する。
このように構成された本発明によれば、第1ステップで用いられた内部変数に対応する目的関数値及び元の目標値に応じた的確な値へと、目標値を更新することができる。
【0010】
本発明において、好ましくは、更に、第1又は第3ステップで求められた解に対応する目的関数値が目標値未満である場合、当該目標値を当該目的関数値よりも小さい値へと変更する第6ステップを有する。
このように構成された本発明によれば、最適解の演算過程において順次求められる解に対応する目的関数値に応じて、目標値を的確な値へと更新することができる。
【0011】
本発明において、好ましくは、第6ステップでは、第1又は第3ステップで求められた解に対応する目的関数値が目標値未満である場合、当該目的関数値と当該目標値の変更前に用いられていた目標値との間の中央値を求め、この中央値によって目標値を変更する。
このように構成された本発明によれば、解に対応する目的関数値及び前回用いていた目標値に応じた的確な値へと、仮目標値を更新することができる。
【0012】
本発明において、好ましくは、第5ステップでは、第2又は第4ステップで設定された内部変数に対応する目的関数値と目標値との差分が所定値未満で、且つ、第2又は第4ステップで設定された内部変数に対応する目的関数値と、目標値の変更前に用いられていた目標値との差分が所定値未満となったときに、このときに用いられていた内部変数を最適解として決定する。
このように構成された本発明によれば、目的関数値と現在の目標値との差分に加えて、当該目的関数値と前回用いていた目標値との差分を用いることで、解の収束判定を精度良く行うことができる。つまり、より正確な最適解を求めることができる。
【0013】
本発明において、好ましくは、最適解の演算方法は、少なくとも一部分が固定され且つ荷重が少なくとも一部分に付与される部材について、当該部材を構成する材料の最適な充填率分布を求めるために用いられ、内部変数は、充填率分布に対応するパラメータであり、目的関数は、荷重による部材の変位量に応じたパラメータにより規定される。
このように構成された本発明によれば、上述した演算方法を位相最適化(トポロジー最適化)に適用することで、材料の最適な充填率分布(密度分布)を安定且つ高速に求めることができる。
【0014】
本発明において、好ましくは、第1ステップで求められた解から部材の体積を求め、この体積が所定の制約値以上である場合には、体積が制約値未満となるまで、第2及び第3ステップを行わずに、第1ステップを繰り返し行う。
このように構成された本発明によれば、確実に体積制約を満たす解(最適な充填率分布)を求めることができる。
【0015】
他の観点では、上記の目的を達成するために、本発明は、内部変数により規定され且つ凸関数である目的関数の最適解を演算する最適解の演算装置であって、或る内部変数と、当該内部変数に対応する目的関数の値である目的関数値とに基づき目的関数を線形近似した関数が、所定の目標値を満たす解を求める第1手段と、第1手段で求められた解に対応する目的関数値が、第1手段で用いられた内部変数に対応する目的関数値未満である場合に、当該解を、次に第1手段を行うべき新たな内部変数として設定する第2手段と、第1手段で求められた解に対応する目的関数値が、第1手段で用いられた内部変数に対応する目的関数値以上である場合に、目標値を第1手段で用いられた目的関数値に近付けた値へと変更して、線形近似した関数が、変更された目標値を満たす解を求める第3手段であって、変更された目標値から求められた解に対応する目的関数値が、第1手段で用いられた目的関数値未満になるまで、目標値を第1手段で用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、線形近似した関数が変更された目標値を満たす解を繰り返し求める第3手段と、第3手段で求められた解に対応する目的関数値が、第1手段で用いられた目的関数値未満になったときに、当該解を、次に第1手段を行うべき新たな内部変数として設定する第4手段と、第2又は第4手段で設定された内部変数に対応する目的関数値と目標値との差分が所定値未満になるまで、第1乃至第4手段を繰り返し行わせ、差分が所定値未満になったときに、このときに用いられていた内部変数を最適解として決定する第5手段と、を有することを特徴とする。
このように構成された本発明によっても、最適解を安定且つ高速に求めることができる。
【0016】
更に他の観点では、上記の目的を達成するために、本発明は、内部変数により規定され且つ凸関数である目的関数の最適解を演算するために、コンピュータ装置によって実行される最適解の演算プログラムであって、コンピュータ装置を、或る内部変数と、当該内部変数に対応する目的関数の値である目的関数値とに基づき目的関数を線形近似した関数が、所定の目標値を満たす解を求める第1手段と、第1手段で求められた解に対応する目的関数値が、第1手段で用いられた内部変数に対応する目的関数値未満である場合に、当該解を、次に第1手段を行うべき新たな内部変数として設定する第2手段と、第1手段で求められた解に対応する目的関数値が、第1手段で用いられた内部変数に対応する目的関数値以上である場合に、目標値を第1手段で用いられた目的関数値に近付けた値へと変更して、線形近似した関数が、変更された目標値を満たす解を求める第3手段であって、変更された目標値から求められた解に対応する目的関数値が、第1手段で用いられた目的関数値未満になるまで、目標値を第1手段で用いられた目的関数値に徐々に近付ける変更を繰り返し行うと共に、線形近似した関数が変更された目標値を満たす解を繰り返し求める第3手段と、第3手段で求められた解に対応する目的関数値が、第1手段で用いられた目的関数値未満になったときに、当該解を、次に第1手段を行うべき新たな内部変数として設定する第4手段と、第2又は第4手段で設定された内部変数に対応する目的関数値と目標値との差分が所定値未満になるまで、第1乃至第4手段を繰り返し行わせ、差分が所定値未満になったときに、このときに用いられていた内部変数を最適解として決定する第5手段と、として機能させることを特徴とする。
このように構成された本発明によっても、最適解を安定且つ高速に求めることができる。
【発明の効果】
【0017】
本発明によれば、内部変数により規定され且つ凸関数である目的関数の最適解を演算する最適解の演算方法、装置及びプログラムにおいて、最適解を安定且つ高速に求めることができる。
【図面の簡単な説明】
【0018】
図1】本発明の実施形態に係る最適解の演算方法の実行主体の一例であるコンピュータ装置の概略構成図である。
図2】本発明の実施形態の基本概念についての説明図である。
図3】位相最適化方法の基本的内容についての説明図である。
図4】位相最適化方法における最適解についての説明図である。
図5】位相最適化方法でのコンプライアンスの特性を表す曲線についての説明図である。
図6】位相最適化方法における最適解を求めるための基本的考え方についての説明図である。
図7】位相最適化方法において従来の勾配法により最適解を求める方法についての説明図である。
図8】位相最適化方法において従来の勾配法を適用した場合の結果の一例を示す。
図9】位相最適化方法において従来のニュートン法により最適解を求める方法についての説明図である。
図10】位相最適化方法において従来のニュートン法を適用した場合の結果の一例を示す。
図11】位相最適化方法において従来のニュートン法を適用した場合の結果の他の例を示す。
図12】ニュートン法による計算が不安定になった1つの原因についての説明図である。
図13】ニュートン法による計算が不安定になった別の原因についての説明図である。
図14】本発明の実施形態に係る制約変動法で用いる試行解についての説明図である。
図15】本発明の実施形態に係る制約変動法において行われる第1処理についての説明図である。
図16】本発明の実施形態に係る制約変動法において行われる第2処理についての説明図である。
図17】本発明の実施形態に係る制約変動法において行われる第3処理についての説明図である。
図18】本発明の実施形態に係る位相最適化方法の全体処理を示すフローチャートであり
図19】本発明の実施形態に係る制約変動法処理を示すフローチャートである。
図20】本発明の実施形態に係る制約変動法による結果の一例を示す。
図21】本発明の実施形態に係る制約変動法による結果の他の例を示す。
【発明を実施するための形態】
【0019】
以下、添付図面を参照して、本発明の実施形態による最適解の演算方法、装置及びプログラムについて説明する。
【0020】
<コンピュータ装置>
まず、図1を参照して、本発明の実施形態に係る最適解の演算方法の実行主体の一例であるコンピュータ装置について説明する。図1に示すように、コンピュータ装置10は、利用者などにより情報が入力される入力装置1と、種々の情報を処理する処理装置3と、情報を出力する出力装置5と、を有する。
【0021】
入力装置1は、例えばマウスやキーボードやタッチパネルやマイクなどであり、出力装置5は、表示装置やスピーカなどである。処理装置3は、プログラムを実行する中央演算処理装置(Central Processing Unit:CPU)としての1以上のマイクロプロセッサ3aと、例えばRAM(Random Access Memory)やROM(Read Only Memory)やハードディスクなどにより構成されてプログラム及びデータを格納するメモリ3bと、を有する。
【0022】
本実施形態に係る最適解の演算方法は、コンピュータ装置10の処理装置3によって実行される。具体的には、処理装置3のメモリ3bには、この最適解の演算方法に対応するプログラム(本発明の最適解の演算プログラム)が記憶されており、処理装置3のマイクロプロセッサ3aが、このプログラムをメモリ3bから読み出して実行する。これにより、コンピュータ装置10(特に処理装置3)は、本発明の最適解の演算装置として機能する。具体的には、処理装置3は、本発明における第1乃至第5手段として機能する。
【0023】
<基本概念>
次に、図2を参照して、本発明の実施形態の基本概念について説明する。図2は、目的関数の一例を示している。具体的には、図2は、横軸に、目的関数を規定する内部変数(例えば設計変数など)を示し、縦軸に、この内部変数に応じた目的関数(つまり内部変数に対応する目的関数の値(目的関数値))を示している。図2に示すように、目的関数は、下に凸の形状を有しており、最小値を含んでいる。本実施形態による最適解の演算方法では、このような目的関数の最小値に対応する最適解を安定且つ高速に求めることを図っている。
【0024】
<位相最適化方法>
次に、本実施形態による最適解の演算方法について具体的に説明する。ここでは、図3乃至図19を参照して、本実施形態による最適解の演算方法を位相最適化方法に適用した例について説明する。
【0025】
まず、図3は、位相最適化方法の基本的内容についての説明図である。図3(A)に示すように、位相最適化方法は、少なくとも一部分が固定され且つ荷重が少なくとも一部分に付与される部材20について、当該部材20を構成する材料の最適な充填率分布を求めるものである。ここでは、部材20の左辺が固定され、部材20の右辺の中央部付近に荷重が付与される場合を例示している。位相最適化方法においては、目的関数は、荷重による部材20の変位量を示すコンプライアンスに相当し、このコンプライアンスは、内部変数としての充填率分布によって規定される。特に、コンプライアンスは、「荷重(外力)×変位」により規定され、この式中の変位が充填率分布に応じて変わる。
【0026】
本実施形態では、このような位相最適化方法に関して、空間の離散化モデル及び境界条件(例えば有限要素法のメッシュ)などを用いて、部材20の体積制約を課した上で、コンプライアンスが最小となる充填率分布(つまり最適な充填率分布)を最適解として求める。図3(B)は、30%の体積制約(部材20の全部が充填されているときの充填率を100%とする)が適用されたときに求められた最適な充填率分布の一例を示す。なお、図3(B)は、グレースケールで表された色によって充填率分布を表現している(以下同様とする)。
【0027】
次いで、図4は、位相最適化方法における最適解の基本的内容についての説明図である。図4は、横軸に充填率分布を示し、縦軸に目的関数としてのコンプライアンスを示している。充填率を「ρ」とし、充填率ρに応じた剛性を「K(ρ)」とし、変位を「u」とし、荷重を「b」とすると、剛性方程式は「K(ρ)u=b」で表され、また、目的関数としてのコンプライアンスを「f0」とすると、コンプライアンスf0は「f0=b・u」と表される。図4に示すように、充填率ρ分布を変化させると、種々のコンプライアンスf0が求められ、体積制約を満たすものの中でコンプライアンスf0が最小になるときの充填率ρ分布が最適解となる。全ての充填率ρ分布のパターンについてコンプライアンスf0を計算する(つまり総当たり計算を行う)ことにより、最適解を求めることができるが、実際は有限要素法の要素数が膨大にあるので、この方法は現実的に不可能である。
【0028】
ここで、1つの充填率ρ分布には、有限要素法などにより部材20に対して規定された複数の節点数の成分(節点値)が含まれるものとする。また、「u」は、剛性方程式を解いて得られた、部材20の全体変位ベクトルの節点値(次元×節点数の成分)であり、「b」は、部材20に付与される全体外力ベクトルの節点値(次元×節点数の成分)であり、「K(ρ)」は、充填率ρに依存する剛性行列((次元×節点数)×(次元×節点数))となる。
【0029】
次いで、図5は、位相最適化方法でのコンプライアンスf0の特性を表す曲線についての説明図である。図5も、横軸に充填率ρ分布を示し、縦軸にコンプライアンスf0を示している。図5に示すように、目的関数としてのコンプライアンスf0の特性を表す曲線がわかれば、上記したような最適解を求めることができ、そして、充填率ρ分布をわずかに変化(微小変化)させて多数の点を計算すれば、このコンプライアンスf0の特性を表す曲線がわかると言える。
【0030】
ところで、充填率ρそのものを設計変数(内部変数)として用いると、ρがマイナスになったり、上限値(100%)を超えたりするような異常な解が出てしまうことがある。この場合、充填率ρを「0≦ρ≦1.0」に制限するために、ムーブリミットなどの特殊な処理を行うことも可能であるが、そうすると解の性能が悪くなってしまう。したがって、本実施形態では、所定の変数θを使って充填率ρを間接的に表現することとした。つまり、充填率ρの代わりに、変数θを各節点の設計変数とする。具体的には、「ρ(θ)=1/2×tanhθ+1/2」というシグモイド関数を用いて、充填率ρを設計変数θによって規定する。こうすることで、設計変数θには範囲制限がないので(-∞<θ<∞)、ムーブリミットを用いる必要がなくなる。すなわち、ムーブリミットを用いなくても、「0≦ρ(θ)≦1.0」が自動的に成立することとなる。
【0031】
このような設計変数θを用いると、図5に示すように、コンプライアンスf0は、充填率ρ分布の代わりに設計変数θ分布(以下では単に「θ分布」とも呼ぶ。)により規定され、また、コンプライアンスf0に関係する剛性方程式は「K(ρ(θ))u=b」と表される。この場合、コンプライアンスf0が最小となる設計変数θを求めて、この設計変数θに対応する充填率ρを求めることにより、部材20の最適形状がわかる。なお、設計変数θも、充填率ρ分布と同様に、有限要素法などにより規定された複数の節点数の成分(節点値)を含むものである。
【0032】
次いで、図6は、位相最適化方法における最適解を求めるための基本的考え方についての説明図である。図6は、横軸に設計変数θ分布を示し、縦軸にコンプライアンスf0を示している。上述したように、有限要素法の要素数が膨大にあるので、コンプライアンスf0を総当たり計算することは現実的に不可能である。一方で、図6に示すように、或る設計変数θ分布に関する「高さf0」及び「勾配(傾き)g0」のみを用いて、コンプライアンスf0が改善するようにθ分布を更新していくと、θ分布の最適解を求めることができると言える。
【0033】
次いで、図7は、位相最適化方法において従来の勾配法により最適解を求める方法についての説明図である。図7も、横軸にθ分布を示し、縦軸にコンプライアンスf0を示している。勾配法は、コンプライアンスf0(目的関数)の特性を山とみなして、この山に沿ってボールを転がして最適解を見つけようとする手法である。具体的には、この勾配法では、ボールは、或る高さf0での勾配g0に応じた変化ベクトルΔθ(降下ベクトル)だけ転がす。この場合、勾配g0は「g0=∂f0/∂θ」と表され、変化ベクトルΔθは、この勾配g0に対して所定の調整定数Caを適用することで「Δθ=-g0/Ca」と表される。調整定数Caは変化ベクトルΔθを調整するパラメータであり、調整定数Caが大きいほど、変化ベクトルΔθの大きさ(絶対値)が小さくなり、調整定数Caが小さいほど、変化ベクトルΔθの大きさ(絶対値)が大きくなる。
【0034】
次いで、図8は、位相最適化方法において従来の勾配法を適用した場合の結果の一例を示す。図8は、横軸に計算ステップ(計算時間に対応する)を示し、縦軸にコンプライアンスf0(mJ)を示している。グラフG11は、比較的大きな調整定数Caを用いた場合の結果を示し、グラフG13は、比較的小さな調整定数Caを用いた場合の結果を示し、グラフG12は、これらグラフG11、G13の間の調整定数Caを用いた場合の結果を示している。図8に示すように、勾配法によれば、最小のコンプライアンスf0(最適解)が求まるまでに要する計算ステップが多くなることがわかる。特に、比較的大きな調整定数Caを用いた場合(グラフG11)には計算ステップ数が多くなり、これよりも小さな調整定数Caを用いた場合(グラフG12)には計算ステップ数が少なくなるが、更に小さな調整定数Caを用いた場合(グラフG13)には解が発散していることがわかる。
【0035】
次いで、図9は、位相最適化方法において従来のニュートン法により最適解を求める方法についての説明図である。図9も、横軸にθ分布を示し、縦軸にコンプライアンスf0を示している。ニュートン法は、或るθ分布の点において目的関数(コンプライアンスf0)を二次関数で近似し、この近似した二次関数の極値点によって、次に二次関数による近似を行うべきθ分布の値を更新する、という処理を繰り返すことで、最適解を求める手法である。
【0036】
図9に示すニュートン法の例では、まず、θ分布の値θ1(以下ではθ分布の値を適宜「θ分布値」と呼ぶ。)、及び、当該θ分布値θ1に対応するコンプライアンスf0の値f0(θ1)(以下ではコンプライアンスf0の値(目的関数値)を適宜「コンプライアンス値」と呼ぶ。)に基づき、目的関数を近似した二次関数QF1を得ることで、この二次関数QF1の極値点に対応するθ分布値θ2を求める。次いで、このθ分布値θ2及び当該θ分布値θ2に対応するコンプライアンス値f0(θ2)に基づき目的関数を近似した二次関数QF2を得ることで、この二次関数QF2の極値点に対応するθ分布値θ3を求め、このθ分布値θ3及び当該θ分布値θ3に対応するコンプライアンス値f0(θ3)に基づき目的関数を近似した二次関数QF3を得ることで、この二次関数QF3の極値点に対応するθ分布値θ4を求める、という処理が繰り返される。なお、各コンプライアンス値は、「K(ρ)u=b」という剛性方程式を用いて、「f0=b・u」というコンプライアンスf0の式から求められる。このようなニュートン法によれば、上述した勾配法よりも、最適解を求めるまでの計算ステップを短縮することができる。
【0037】
次いで、図10は、位相最適化方法において従来のニュートン法を適用した場合の結果の一例を示す。図10も、横軸に計算ステップを示し、縦軸にコンプライアンスf0(mJ)を示している。グラフG12は、図8に示したものと同じ勾配法による結果を示し、グラフG2は、ニュートン法による結果を示している。図10に示す例では、ニュートン法によれば、勾配法と比較して、最小のコンプライアンスf0(最適解)が求まるまでに要する計算ステップが少なくなることがわかる。
【0038】
次いで、図11は、位相最適化方法において従来のニュートン法を適用した場合の結果の他の例を示す。図11も、横軸に計算ステップを示し、縦軸にコンプライアンスf0(mJ)を示している。図11に示す例では(グラフG3参照)、ニュートン法による計算が非常に不安定になっていることがわかる。この例では解が最終的に収束しているが、解が収束せずに発散する場合もある。
【0039】
次いで、図12及び図13を参照して、上記したようにニュートン法による計算が不安定になった原因について説明する。図12は、ニュートン法による計算が不安定になった1つの原因の説明図である。図12において、左図は、θ分布とコンプライアンスf0(目的関数)のグラフを示し、右図は、計算のステップとコンプライアンス値のグラフを示している。図12に示す例でも、図11で述べたのと同様のニュートン法の手順により計算が順次行われる。この場合、ステップS1においては、コンプライアンス値f0(θ1)が得られ、ステップS2においては、このコンプライアンス値f0(θ1)よりも小さなコンプライアンス値f0(θ2)が得られ、ステップS3において、このコンプライアンス値f0(θ2)よりも大きなコンプライアンス値f0(θ3)が得られる。したがって、解の振動が発生していると言える。こうなったのは、コンプライアンスf0(目的関数)の非線形性が強いからであると考えられる。非線形性が強いコンプライアンスf0においては、勾配法のほうが、ニュートン法よりも、解が安定して収束すると考えられる。
【0040】
次いで、図13は、ニュートン法による計算が不安定になった別の原因の説明図である。図13において、左図は、θ分布とコンプライアンスf0(目的関数)のグラフを示し、右図は、計算のステップとコンプライアンス値のグラフを示している。図13に示す例でも、図11で述べたのと同様のニュートン法の手順により計算が順次行われる。この場合、ステップS1においては、コンプライアンス値f0(θ1)が得られ、ステップS2においては、このコンプライアンス値f0(θ1)よりも小さなコンプライアンス値f0(θ2)が得られ、ステップS3において、このコンプライアンス値f0(θ2)よりも大きなコンプライアンス値f0(θ3)が得られ、ステップS4においては、このコンプライアンス値f0(θ3)よりも小さなコンプライアンス値f0(θ4)が得られる。したがって、解の振動が発生していると言える。こうなったのは、目的関数を近似した二次関数QF2の凸の向きが変わった(下に凸から上に凸に変わった)からであると考えられる。これは、調整定数(強圧性)を調整することで緩和可能だが、この定数を決めるのに試行錯誤が必要となる。このような場合にも、勾配法のほうが、ニュートン法よりも、解が安定して収束すると考えられる。
【0041】
以上より、ニュートン法では、目的関数の形状が整ったものでないと、計算が安定せずに、最適解が得られにくいと言える。一方、勾配法は、ニュートン法と比べて、計算は安定しているが、計算時間がかかる。したがって、本実施形態では、勾配法及びニュートン法とは別の方法(本実施形態に係る最適解の演算方法を以下では適宜「制約変動法」と呼ぶ。)を位相最適化方法に適用することで、目的関数の最適解を安定且つ高速に求めることを図っている。以下では、図14乃至図19を参照して、本実施形態に係る制約変動法の内容について具体的に説明する。
【0042】
図14は、本実施形態に係る制約変動法で用いる試行解についての説明図である。図14は、横軸にθ分布を示し、縦軸にコンプライアンスf0を示している。本実施形態では、コンピュータ装置10の処理装置3は、或るθ分布値θk(或る計算ステップkでのθ分布値)において目的関数を線形近似した一次関数LF1が仮目標値f0cを満たす解を試行解θTryとして求める。具体的には、一次関数LF1は、θ分布値θk及び当該θ分布値θkに対応するコンプライアンス値f0(θk)において規定される線形近似関数であり、試行解θTryは、この一次関数LF1が、「コンプライアンス値f0=仮目標値f0c」となる水平な直線に交わる点のθ分布値である。基本的には、この試行解θTryは、目的関数を線形近似した一次関数が仮目標値f0cを満たす試行解θTryを次に求めるべき、新たなθ分布値として適用される。したがって、本実施形態では、このような手順で試行解θTryを繰り返し求めて更新していくことで、θ分布値の最適解、つまりコンプライアンス値f0が最小となるときのθ分布値を最終的に求めるようにしている。なお、仮目標値f0cは、最適解を求めるために設定されるコンプライアンス値の仮の目標値であり、詳細は後述するが、逐次変更(更新)されるものである。仮目標値f0cの初期値は、例えば0(変位量0に相当する)に設定される。
【0043】
次に、処理装置3による試行解θTryの具体的な求め方について説明する。まず、θ分布値θkと試行解θTryとの差分Δθは「{Δθ}={θk}-{θTry}」と表される。これら{Δθ}、{θk}、{θTry}は、それぞれ、各パラメータが節点数の成分を含むことを意味する(以下同様とする)。Δθは、制約条件が何もない場合、上記の勾配法と同様に、目的関数f0の勾配{g0}を用いて、「{Δθ}=-{g0}/Ca」という式で表される。この式は、関数q({Δθ})の最小化を示す式「q({Δθ})=({Δθ}・{Δθ})/2+({g0}・{Δθ})/Ca」により置き換えられる。しかしながら、本実施形態では体積制約などの制約条件を用いるため、制約条件を満たしながら関数q({Δθ})を小さくするために、Lagrangeの未定乗数法を用いる。
【0044】
ここで、「fi({θk}+{Δθ})=fic」を考える(「i」は制約関数の番号であり、「fic」は制約値である)。この式の左辺を線形化すると、以下の式が得られる(Taylor展開の第1項までを採用し線形化した制約条件にする)。
この式の第2項は「gi({θk}」となるため、当該式を変形すると、「fi({θk})+gi({θk})・{Δθ}-fic=0」となる。
【0045】
他方で、Lagrangeの未定乗数法の公式は、以下の通りである。「λi」は、Lagrangeの未定乗数であり、制約条件Gi({x})は「=0」の形を用いるものとする。
【0046】
制約条件を満たす第1項の最小化は、以下の連立方程式を解けばよい。そして、未定乗数λiを求めた後、{x}を求めればよい。
【0047】
上述したように、最小化したい関数は「({Δθ}・{Δθ})/2+({g0}・{Δθ})/Ca」であり、線形化した制約条件は「fi({θk})+gi({θk})・{Δθ}-fic=0」であるので、これらを未定乗数法に適用すると、以下の式となる。
【0048】
よって、{Δθ}を求める式は以下の通りである。本実施形態に係る制約変動法では、目的関数f0を線形化して制約関数化するので(仮目標を満たすようにするので)、下記式中の「{g0}/Ca」は消えることとなる。
【0049】
このような式を本実施形態に係る制約変動法に適用することで、以下の連立方程式(1)~(4)より、試行解θTryを求めることができる。式(1)は上述した通りで、式(2)~(4)は、上式から得られたものである。式(2)中の「λ0」、「λ1」は、Lagrangeの未定乗数である。式(3)は、仮目標値f0cを用いて目的関数f0を制約条件化した式であり、特に左辺は線形化したコンプライアンス関数を示す。式(4)は、体積制約を表し、特に、左辺は線形化した体積制約関数を示し、右辺は体積制約値f1cを示す。
【0050】
具体的には、式(2)~(4)から、Lagrangeの未定乗数λ0、λ1及びΔθを求め、このΔθを式(1)に代入することで、試行解θTryが求められる。
【0051】
次に、図15乃至図17を参照して、本実施形態に係る制約変動法において行われる第1乃至第3処理について説明する。なお、第1乃至第3処理は、上述した手順により求められた試行解θTryでの体積f1(θTry)が体積制約値f1c未満であるという体積制約が満たされていることを条件に行われるものとする。換言すると、体積f1(θTry)が体積制約値f1c以上である場合には、第1乃至第3処理は行われない。
【0052】
図15は、本実施形態に係る制約変動法において行われる第1処理の説明図である。図15は、横軸にθ分布を示し、縦軸にコンプライアンスf0を示している。第1処理では、処理装置3は、上述した手順により求められた試行解θTryに対応するコンプライアンス値f0(θTry)が、元のθ分布値θkに対応するコンプライアンス値f0(θk)未満である場合に(f0(θTry)<f0(θk))、コンプライアンス値が改善したものと判断する。そして、処理装置3は、この試行解θTryを、次なる試行解θTryを求めるために用いるべき新たなθ分布値として更新する。
【0053】
次いで、図16は、本実施形態に係る制約変動法において行われる第2処理の説明図である。図16は、横軸にθ分布を示し、縦軸にコンプライアンスf0を示すグラフを左右に2つ並べている。本実施形態では、処理装置3は、上述した手順により求められた試行解θTryに対応するコンプライアンス値f0(θTry)が、θ分布値θkに対応するコンプライアンス値f0(θk)以上である場合に(f0(θTry)≧f0(θk))、コンプライアンス値が悪化したものと判断する。この場合、処理装置3は、上記した第1処理を行わずに、つまり当該試行解θTryを次に用いるべき新たなθ分布値として更新せずに、以下のような第2処理を行う。すなわち、第2処理では、処理装置3は、仮目標値f0cをコンプライアンス値f0(θk)に近付けた値へと変更して、上記のように目的関数を線形近似した一次関数LF1(これは新たに計算することなく使い回される)が、この変更後の仮目標値f0cを満たす試行解θTry(以下では適宜「仮試行解θTry」と呼ぶ。)を新たに求める。具体的には、処理装置3は、変更前の元の仮目標値f0cを失敗値ffailとして記憶する一方で、この失敗値ffailとコンプライアンス値f0(θk)との中央値に、仮目標値f0cを更新する。よって、更新後の仮目標値f0cは「f0c=0.5×(ffail+f0(θk))」と表される。
【0054】
処理装置3は、更新された仮目標値f0cと一次関数LF1から求められた仮試行解θTryに対応するコンプライアンス値f0(θTry)が、元のθ分布値θkに対応するコンプライアンス値f0(θk)未満になるまで、仮目標値f0cの更新及び仮試行解θTryの算出を繰り返し行う(この場合、失敗値ffailの更新も繰り返す)。そして、処理装置3は、仮試行解θTryに対応するコンプライアンス値f0(θTry)がコンプライアンス値f0(θk)未満になったときに、コンプライアンス値が改善したものと判断する。処理装置3は、このときの仮試行解θTryを正式な試行解θTryとして採用し、この試行解θTryを、次なる試行解θTryを求めるために用いるべき新たなθ分布値として更新する。
【0055】
このような第2処理によれば、的確な試行解θTryが見つかるまでの繰り返しの処理において、元のθ分布値θkに対応するコンプライアンス値f0(θk)及び目的関数を線形近似した一次関数LF1を使い回せるので、計算時間に与える影響は少ない。つまり、第2処理によって大きな計算時間の増大を招くことはないと言える。
【0056】
次いで、図17は、本実施形態に係る制約変動法において行われる第3処理の説明図である。この第3処理は、第1及び第2処理後に行われる処理である。図17は、横軸にθ分布を示し、縦軸にコンプライアンスf0を示すグラフを左右に2つ並べている。第3処理では、処理装置3は、上述した手順により求められた試行解θTryに対応するコンプライアンス値f0(θTry)が仮目標値f0c未満である場合に(f0(θTry)<f0c)、コンプライアンス値が過剰改善したものと判断する。そして、処理装置3は、仮目標値f0cをコンプライアンス値f0(θTry)よりも小さい値へと変更する。具体的には、処理装置3は、コンプライアンス値f0(θTry)と記憶している失敗値ffail(前回用いていた仮目標値f0c)との中央値に、仮目標値f0cを更新する。よって、更新後の仮目標値f0cは「f0c=0.5×(ffail+f0(θTry))」と表される。このような第3処理によれば、制約変動法の実行中に、順次求められる試行解θTryに対応するコンプライアンス値f0(θTry)に応じて、仮目標値f0cを的確な値へと更新することができる。
【0057】
なお、上記した第1乃至第3処理は、試行解θTryでの体積f1(θTry)が体積制約値f1c未満である場合、つまり体積制約を満たす場合に行われものであるが、体積f1(θTry)が体積制約値f1c以上である場合、つまり体積制約を満たさない場合には、処理装置3は第4処理を行う。この第4処理では、処理装置3は、体積f1(θTry)が体積制約値f1c以上であるときに求められた試行解θTryによって更新を行うが、体積f1(θTry)が体積制約値f1c未満になるまで、この試行解θTryの更新を繰り返し行う、つまり試行解θTryを繰り返し求める。この場合、処理装置3は、仮目標値f0cを更新しない。そして、処理装置3は、体積f1(θTry)が体積制約値f1c未満になると、このときの試行解θTryを用いて、上記の第1又は第2処理を行う。
【0058】
次に、図18及び図19を参照して、本実施形態に係る位相最適化方法及び制約変動法の具体的な処理について説明する。図18は、本実施形態に係る位相最適化方法の全体処理を示すフローチャートであり、図19は、本実施形態に係る制約変動法の処理(制約変動法処理)を示すフローチャートである。なお、コンピュータ装置10の処理装置3(詳しくはマイクロプロセッサ3a)が、メモリ3bに記憶されたプログラムを読み出して実行することにより、図18及び図19に示す処理が実現される。また、これらの処理は所定の周期で繰り返し実行される。
【0059】
位相最適化方法の全体処理が開始されると、ステップS11において、処理装置3は、本処理に必要な種々のデータを取得する。具体的には、処理装置3は、構造解析用の数値計算モデルのデータ、つまり空間の離散化モデル及び境界条件(例えば有限要素法のメッシュ)に関するデータ、設計変数値としてのθ分布値の初期値{θ0}、体積制約値f1c、仮目標値f0c、位相最適化方法の収束を判定するための収束判定値eps、を取得する。1つの例では、{θ0}には、充填率ρの50%に対応する値(つまり0)が適用され、体積制約値f1cには30%が適用され、仮目標値f0cには0が適用される。
【0060】
次いで、ステップS12において、処理装置3は、「[K(ρk({θk}))]{uk}={b}」という剛性方程式を解いて、変位{uk}を求める。ここで、{θk}は、ステップk回目のθ分布値(節点値(節点数の成分))であり、{uk}は、ステップk回目での剛性方程式を解いて得られた、部材20の全体変位ベクトルの節点値(次元×節点数の成分)であり、「b」は、部材20に付与される全体外力ベクトルの節点値(次元×節点数の成分)であり、「[K(ρk({θk}))]」は、ステップk回目での充填率ρk({θk})に依存する剛性行列((次元×節点数)×(次元×節点数)の成分)である。
【0061】
次いで、ステップS13において、処理装置3は、ステップS12で求められた{uk}からコンプライアンス値f0を求めると共に、部材20の体積f1を求める。具体的には、処理装置3は、「f0={b}・{uk}」を解いてコンプライアンス値f0を求めると共に、「ρk({θk})」を部材20の空間容量で積分することにより体積f1を求める。
【0062】
次いで、ステップS14において、処理装置3は、コンプライアンス値f0を{θk}で微分することによりコンプライアンス値f0の勾配{g0}を求め({g0}=∂f0/∂{θk})、また、体積f1を{θk}で微分することにより体積f1の勾配{g1}を求める({g1}=∂f1/∂{θk})。
【0063】
次いで、ステップS15において、処理装置3は、本実施形態に係る制約変動法処理を実行する。具体的には、処理装置3は、試行解θTryの算出及びこの試行解θTryに応じた第1乃至第4処理を行う。この詳細は、図19を参照して後述する。
【0064】
次いで、ステップS16において、処理装置3は、解(θk)が収束したか否かを判定する。具体的には、現在(ステップk回目)のコンプライアンス値f0(θk)と仮目標値f0cとの差の絶対値が収束判定値eps未満であるか否かを判定すると共に(|f0(θk)-f0c|<eps)、現在(ステップk回目)のコンプライアンス値f0(θk)と失敗値ffailとの差の絶対値が収束判定値eps未満であるか否かを判定する(|f0(θk)-ffail|<eps)。処理装置3は、これら両方の条件が成立しない場合には、解が収束していないと判定して(ステップS16:No)、ステップS12に戻る。この場合には、処理装置3は、解が収束したと判定されるまで、ステップS12~S16の処理を繰り返す。
【0065】
これに対して、処理装置3は、「|f0(θk)-f0c|<eps」及び「|f0(θk)-ffail|<eps」の両方の条件が成立する場合には、解が収束したと判定して(ステップS16:Yes)、位相最適化方法の全体処理を終了する。この場合、処理装置3は、現在の解(θk)を、θ分布値の最適解(つまりコンプライアンス値f0が最小となるときのθ分布値)として決定する。そして、処理装置3は、この最適解に対応する、最適な充填率ρ分布(部材20の最適形状)を求める。例えば、処理装置3は、こうして求められた最適な充填率ρ分布に対応する画像やそれに関連する情報を、出力装置5の表示装置に表示させる。
【0066】
次に、図19を参照して、本実施形態に係る制約変動法処理について説明する。まず、ステップS21において、処理装置3は、上記の式(1)~(4)の連立方程式を解いて試行解θTryを求める。具体的には、処理装置3は、式(2)~(4)から、Lagrangeの未定乗数λ0、λ1及びΔθを求め、このΔθを式(1)に代入することで、試行解θTryを求める。
【0067】
次いで、ステップS22において、処理装置3は、ステップS21で得られた試行解θTryから体積f1(θTry)を求め、この体積f1(θTry)が体積制約値f1c未満であるか否か(f1(θTry)<f1c)、つまり体積制約が満たされているか否かを判定する。処理装置3は、体積制約が満たされている場合(ステップS22:Yes)、ステップS24に進み、体積制約が満たされていない場合(ステップS22:No)、ステップS23に進む。
【0068】
ステップS23において、処理装置3は、体積制約が満たされていないので、第4処理を行う。具体的には、処理装置3は、仮目標値f0cは更新せずに、現在の試行解θTryを次にステップS21を行うべきθ分布値として更新する。この後、処理装置3は、ステップS21に戻り、更新されたθ分布値を用いて試行解θTryを再度求め、そして、ステップS22に進み、この試行解θTryに対応する体積f1(θTry)に基づき、体積制約が満たされているか否かを判定する。すなわち、処理装置3は、ステップS21~S23において、体積制約が満たされるまで、試行解θTryを繰り返し求める。
【0069】
他方で、ステップS24において、処理装置3は、ステップS21で得られた試行解θTryからコンプライアンス値f0(θTry)を求め、このコンプライアンス値f0(θTry)が元のコンプライアンス値f0(θk)未満であるか否か(f0(θTry)<f0(θk))、つまり試行解θTryが改善したか否かを判定する。処理装置3は、試行解θTryが改善した場合(ステップS24:Yes)、ステップS25に進む。この場合、処理装置3は、第1処理を行う(ステップS25)。具体的には、処理装置3は、現在の試行解θTryを、次なる試行解θTryを求めるために用いるべき新たなθ分布値として更新する。そして、処理装置3は、ステップS27に進む。
【0070】
これに対して、処理装置3は、試行解θTryが改善していない場合(ステップS24:No)、つまり試行解θTryが悪化した場合、ステップS26に進む。この場合、処理装置3は、第2処理を行う(ステップS26)。具体的には、処理装置3は、現在の仮目標値f0cを失敗値ffailとして記憶する一方で、この失敗値ffailと元のコンプライアンス値f0(θk)との中央値に仮目標値f0cを更新して(f0c=0.5×(ffail+f0(θk)))、この更新後の仮目標値f0cに基づき試行解θTry(仮試行解θTry)を新たに求める。処理装置3は、この仮試行解θTryに対応するコンプライアンス値f0(θTry)が、元のコンプライアンス値f0(θk)未満になるまで、仮目標値f0cの更新及び仮試行解θTryの算出を繰り返し行う(この場合、失敗値ffailの更新も繰り返す)。そして、処理装置3は、仮試行解θTryに対応するコンプライアンス値f0(θTry)がコンプライアンス値f0(θk)未満になったときに、コンプライアンス値が改善したものと判断する。処理装置3は、このときの仮試行解θTryを正式な試行解θTryとして採用し、この試行解θTryを、次なる試行解θTryを求めるために用いるべき新たなθ分布値として更新する。そして、処理装置3は、ステップS27に進む。
【0071】
次いで、ステップS27において、処理装置3は、試行解θTryに対応するコンプライアンス値f0(θTry)が仮目標値f0c未満であるか否か(f0(θTry)<f0c)、つまり試行解θTryが過剰改善したか否かを判定する。処理装置3は、試行解θTryが過剰改善した場合(ステップS27:Yes)、ステップS28に進み、試行解θTryが過剰改善していない場合(ステップS27:No)、制約変動法処理を終了する。
【0072】
ステップS28において、処理装置3は、試行解θTryが過剰改善したので、第3処理を実行する。具体的には、処理装置3は、試行解θTryに対応するコンプライアンス値f0(θTry)と、記憶している失敗値ffail(前回用いていた仮目標値f0c)との中央値に、仮目標値f0cを更新する(f0c=0.5×(ffail+f0(θTry)))。そして、処理装置3は、制約変動法処理を終了する。
【0073】
なお、図19において、ステップS21は、本発明における第1ステップに相当し、ステップS24、S25は、本発明における第2ステップに相当し、ステップS24、S26は、本発明における第3及び第4ステップに相当し、ステップS27、S28は、本発明における第6ステップに相当し、図18のステップS16は、本発明における第5ステップに相当する。
【0074】
<作用及び効果>
次に、図20及び図21を参照して、本実施形態に係る最適解の演算方法による作用及び効果について具体的に説明する。
【0075】
図20は、本実施形態に係る制約変動法による結果の一例を示す。図20(A)は、勾配法、ニュートン法及び制約変動法のそれぞれを位相最適化方法に適用した場合に得られた最適な充填率分布を示す。ここでは、部材20の左辺が固定され、部材20の右辺の中央部に荷重が付与される場合を例示している。図20(B)は、勾配法、ニュートン法及び制約変動法のそれぞれによる、最適な充填率分布(つまり最小の(最適な)コンプライアンス)が得られるまでの計算ステップ(計算時間に対応する)を示している。具体的には、グラフG12は、図8に示したものと同じ勾配法による結果を示し、グラフG3は、図11に示したものと同じニュートン法による結果を示し、グラフG4は、本実施形態に係る制約変動法による結果を示している。図20(B)から、本実施形態に係る制約変動法によれば、勾配法及びニュートン法と比べて、最適解(最小のコンプライアンス)が求まるまでに要する計算ステップ数が非常に少ないこと、及び、ニュートン法と比べて、計算が非常に安定していることがわかる。
【0076】
図21は、本実施形態に係る制約変動法による結果の他の例を示す。図21(A)は、勾配法、ニュートン法及び制約変動法のそれぞれを位相最適化方法に適用した場合に得られた最適な充填率分布を示す。ここでは、部材20の底辺の2箇所が固定され、部材20内の5箇所に荷重が付与される場合を例示している。図21(B)は、勾配法、ニュートン法及び制約変動法のそれぞれによる、最適な充填率分布(つまり最小の(最適な)コンプライアンス)が得られるまでの計算ステップ(計算時間に対応する)を示している。具体的には、グラフG51は、勾配法による結果を示し、グラフG52は、ニュートン法による結果を示し、グラフG53は、本実施形態に係る制約変動法による結果を示している。図21(B)からも、本実施形態に係る制約変動法によれば、勾配法及びニュートン法と比べて、最適解(最小のコンプライアンス)が求まるまでに要する計算ステップ数が非常に少ないこと、及び、計算が非常に安定していることがわかる。
【0077】
このようなことから、本実施形態に係る制約変動法によれば、位相最適化方法において最適解を安定且つ高速に求めることができると言える。なお、本実施形態によれば、図20及び図21に示した例以外に、部材20における種々の多点曲げ問題やL字曲げ問題やオフセット曲げ問題やなどに適用した場合にも、最適解を安定且つ高速に求めることができる(例えば15ステップ前後で解を収束させることができる)。
【0078】
以上まとめると、本実施形態に係る最適解の演算方法は、
(1)或るθ分布値と、当該θ分布値に対応するコンプライアンス値に基づき目的関数を線形近似した関数が、仮目標値を満たす試行解を求める第1ステップと、
(2)第1ステップで求められた試行解に対応するコンプライアンス値が、第1ステップで用いられたθ分布値に対応するコンプライアンス値未満である場合に、この試行解を、次に第1ステップを行うべき新たなθ分布値として設定する第2ステップと、
(3)第1ステップで求められた試行解に対応するコンプライアンス値が、第1ステップで用いられたθ分布値に対応するコンプライアンス値以上である場合に、仮目標値を第1ステップで用いられたコンプライアンス値に近付けた値へと変更して、上記の線形近似した関数が、変更された仮目標値を満たす試行解を求める第3ステップであって、変更された仮目標値から求められた試行解に対応するコンプライアンス値が、第1ステップで用いられたコンプライアンス値未満になるまで、仮目標値を第1ステップで用いられたコンプライアンス値に徐々に近付ける変更を繰り返し行うと共に、線形近似した関数が変更された仮目標値を満たす試行解を繰り返し求める第3ステップと、
(4)第3ステップで求められた試行解に対応するコンプライアンス値が、第1ステップで用いられたコンプライアンス値未満になったときに、この試行解を、次に第1ステップを行うべき新たなθ分布値として設定する第4ステップと、
(5)第2又は第4ステップで設定されたθ分布値に対応するコンプライアンス値と仮目標値との差分が所定値未満になるまで、第1乃至第4ステップを繰り返し行わせ、差分が所定値未満になったときに、このときに用いられていたθ分布値を最適解として決定する第5ステップと、
を有する。
【0079】
このような本実施形態によれば、悪い解も受け入れるしかなかった従来の手法(特にニュートン法)と異なり、制約値を変動させることにより、悪い解を切り捨てて良い解を確実に求めることができるので、安定した計算を行うことが可能となる。また、本実施形態に係る最適解の演算方法によれば、良い解を見つけるまでの繰り返しの処理において、目的関数を線形近似した一次関数及び元のθ分布値に対応するコンプライアンス値を使い回すことができるので、計算ステップ数の増大を効果的に抑制することができる。したがって、本実施形態に係る最適解の演算方法によれば、最適解を安定且つ高速に求めることができるのである。
【0080】
また、本実施形態に係る最適解の演算方法によれば、第3ステップでは、第1ステップで用いられたθ分布値に対応するコンプライアンス値と仮目標値との中央値を求め、この中央値によって仮目標値を変更する。これにより、元のコンプライアンス値及び元の仮目標値に応じた的確な値へと仮目標値を更新することができる。
【0081】
また、本実施形態に係る最適解の演算方法によれば、第1又は第3ステップで求められた試行解に対応するコンプライアンス値が仮目標値未満である場合、当該仮目標値を当該コンプライアンス値よりも小さい値へと変更する第6ステップを有する。これにより、制約変動法の実行中に、順次求められる試行解に対応するコンプライアンス値に応じて、仮目標値を的確な値へと更新することができる。
【0082】
また、本実施形態に係る最適解の演算方法によれば、第6ステップでは、第1又は第3ステップで求められた試行解に対応するコンプライアンス値が仮目標値未満である場合、当該コンプライアンス値と当該仮目標値の変更前に用いられていた仮目標値(失敗値)との間の中央値を求め、この中央値によって仮目標値を変更する。これにより、試行解に対応するコンプライアンス値及び前回用いていた仮目標値(失敗値)に応じた的確な値へと仮目標値を更新することができる。
【0083】
また、本実施形態に係る最適解の演算方法によれば、第5ステップでは、第2又は第4ステップで設定されたθ分布値に対応するコンプライアンス値と仮目標値との差分が所定値未満で、且つ、第2又は第4ステップで設定されたθ分布値に対応するコンプライアンス値と、仮目標値の変更前に用いられていた仮目標値(失敗値)との差分が所定値未満となったときに、このときに用いられていたθ分布値を最適解として決定する。これにより、解の収束判定を精度良く行うことができる、つまりより正確な最適解を求めることができる。
【0084】
また、本実施形態に係る最適解の演算方法によれば、第1ステップで求められた試行解から部材20の体積を求め、この体積が所定の制約値以上である場合には、体積が制約値未満となるまで、第2及び第3ステップを行わずに、第1ステップを繰り返し行う。これにより、体積制約を確実に満たす解を求めることができる。
【0085】
<本発明の適用例>
上記した実施形態では、本発明に係る最適解の演算方法を位相最適化方法に適当する例を示したが、本発明に係る最適解の演算方法の適用はこれに限定されない。ここでは、本発明に係る最適解の演算方法の適用例について説明する。
【0086】
本発明に係る最適解の演算方法は、例えば種々の自然現象などを数値計算で求める場合に適用できる。この場合、本発明に係る最適解の演算方法は、種々の自然現象を表すシステム方程式(連立一次方程式)を解くために利用される。1つの例では、本発明に係る最適解の演算方法は、構造力学分野における剛性方程式「[K]{u}={b}」というシステム方程式([K]:剛性行列、{u}:変位ベクトル、{b}:荷重ベクトル)や、伝熱分野における熱伝導方程式「[A]{T}={F}」というシステム方程式([A]:熱伝導行列、{T}:温度、{F}:熱流束ベクトル)や、流体力学におけるNavier-Stokes方程式「[B]{p}={v}」というシステム方程式([B]:ポアソン行列、{p}:圧力、{v}:中間流速ベクトル)などに適用できる。
【0087】
ここで、バネ定数Kのバネに力bが働くことで変位uが生じる場合の剛性方程式「Ku=b」を例(1自由度の例)に挙げる。この場合、「F(u)=Ku2/2-bu」という関数を定義する。バネ定数Kは正の値なので、「F(u)」は下に凸な関数である。この「F(u)」を「u」で微分すると、「∂F(u)/∂u=Ku-b」となる。「∂F(u)/∂u=0」のときに「F(u)」の傾きが0になる。よって、傾きが0になるときは「Ku-b=0」となり、これを解くと「Ku=b」という解が得られる。したがって、剛性方程式を解くことは、「F(u)」の最小値を求めることに相当する。
【0088】
次いで、自由度が複数ある剛性方程式「[K]{u}={b}」を例に挙げる({u}は各節点の変位)。この場合、「F({u})=([K]{u}・{u})/2-{b}・{u}」というスカラー関数を定義する。[K]が正定値行列ならば、F({u})は凸関数になる(なお、自然界のシステム方程式の多くは正定値行列により定義される)。ここで、「F({u})」を「{u}」で微分すると、「∂F({u})/∂{u}=[K]{u}-{b}」となる。したがって、「∂F({u})/∂{u}=0」を解くこと、つまり「F({u})」の最小値を求めることは、「[K]{u}={b}」を解くことと同じである。
【0089】
このようから、従来の手法では、種々の自然現象を表す膨大な数の連立方程式(システム方程式)を解く必要があったが、本発明では、1つのスカラー方程式(上述した「F({u})=([K]{u}・{u})/2-{b}・{u}」など)を解けばよい、具体的にはスカラー凸関数の最小値を求めればよい。上述したように、本発明によれば、凸関数である目的関数の最適解を安定且つ高速に求めることができる。したがって、本発明によれば、種々の自然現象を表すシステム方程式を安定且つ高速に解くことができるのである。
【0090】
なお、本発明は、自然現象を数値計算で求める場合に適用することに限定はされず、他の種々の数値計算に適用可能である。要は、本発明は、内部変数により規定され且つ凸関数である目的関数の最適解を演算するために適用される。また、上記した実施形態では、下に凸な目的関数に本発明を適用する例を示したが、本発明は上に凸な目的関数にも適用できる。この場合、目的関数の最大値に対応する最適解を求めればよい。
【符号の説明】
【0091】
1 入力装置
3 処理装置
3a マイクロプロセッサ
3b メモリ
5 出力装置
10 コンピュータ装置
20 部材
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21