最適化を活用して設計しようと思い立った時、例えば、「設計要件が質量1.0kg以下、変位1.0mm以下。最適化の制約は、質量<1.0kg、変形<1.0mm。で、このあと何を目的にすれば…?」と、設計要件と最適化のはざまで悩んだことはありませんか?
設計では、要件を満たすこと自体を目的に、設計を進めていけます。しかし最適化では、何か数値で表すことのできるものを最小化することを目的としないと、最適化が進みません。たいていの場合、質量を1.0kg以下に制約をかけて変位の最小化を目的としたり、その逆に、変位を1.0mm以下に制約をかけて質量の最小化を目的にしたりします。これはこれで最適化計算自体はうまく流れるのですが、「設計要件内に収めることが目的であって、とことん軽くしたいわけではないんだよなぁ」などと、ちょっともやっとした気持ちが残るのも事実です。
そこで今回は、あるテクニックを使って、設計要件を満たすことを目的としているかのような、最適化を紹介します。使用する最適化ソルバーはAltair OptiStructです。
今回のお題:(決して設計要件を満たせない)クリップのトポロジー最適化
今回のお題は、下図の性能(質量5.57E-5 ton、|変位| 2.39E-2 mm)を持つクリップを、トポロジー最適化を用いて再設計することです。与えられた設計要件は、質量 1.50E-5 ton、|変位| 5.50E-2 mmです。(ちなみに、絶対に満たせません)
「制約条件のない最適化」の考え方
今回の課題は、設計要件を満たすことを目的としたかのような最適化を行うことです。イメージとしては、要件から一番外れている特性を、ハンマーでたたいて押し込める感じです。モグラたたきのように、飛び出したものからポコポコたたいて押し込めていきたいところです。これは最適化的に言うと、
- イタレーションごとに、質量と変位のうち、要件から一番外れているものを、最小化する
ということになります(イタレーションとは最適化の繰り返し計算のことです)。
ここで一つ問題があります。前述したように、質量と変位では、そもそも桁すら違うため、比較になりません。そこでOptiStructのObjective Referenceという機能を使います。Objectiveは最適化用語で目的値、Referenceは参照、照らし合わせて比較することですので、比較することができる目的値ということになります。または直訳だと客観的参照、つまり客観的に比較できる値とも言えます。
ここで、質量M、上の節点の変位Dy1、下の節点の変位Dy2、それぞれのObjective ReferenceをRM、RDy1、RDy2と表記して、次のようにそれぞれの設計要件で割った値としてみます。
RM = M/1.50E-5
RDy1 = Dy1/5.50E-2
RDy2 = Dy2/(-5.50E-2)(Dy2 は負のため、正の値で大きさとして返す)
そして、OptiStructのMimax(最大maxを最小化minimizeする)機能で、下のような目的を立てます。
Minimize( Max( RM, RDy1, RDy2) )
どうなるか予想してみましょう。RM(初期) = 5.57/1.50 = 3.7, RDy(初期) = 2.39/5.50 = 0.43 と圧倒的にRMが大きいため、序盤は変位を犠牲にして質量が下がるでしょう。そしてどこかでRM=RDyとなるはずです。そのあとは、おそらく、団子状態で一緒に下がっていくでしょう(下図のイメージ)。なんとなく、設計要件を目指して頑張っている感じがしませんか?
皆さん、お気付きでしょうか。この方法を使うと、最適化を使うときに悩ましい、「制約」という機能を使わなくてよくなります。
やってみよう
伝わりにくいですがちゃちゃっと作業して(下図)、最適化を流してみます。
するとこのような結果になりました。残念ながら(というか、わざとですが)少し設計要件に届かない結果を得ました。
Objective Referenceも予測どおりの動きをしています。どうですか?全員が一致団結して設計要件を満たす努力を果たしたように見えませんか?
ぜひやってみてください
今回のテクニックには、以下のようなメリットがあると考えられます。
- 設計要件を満たすこと自体を目的にできる
- 最適化の悩ましい問題、制約と目的の振り分けが不要になる
- 実現不可能な設計要件に対し「実現不可能です」と断言できる
- しかも突っ返すだけでなく、折衝案を提案することにもなる
この最適化、やってみたくなりませんか?今回のお話は、
を参考につくりましたので、ぜひ一度これらのチュートリアルをお試しください。
*ユーザー限定のAltair Connectへログインする必要があります。
第35回:電柱は危険 << >> 第37話:周波数応答解析の素朴な疑問
作業方法などはこちらを
https://forum.altair.com/topic/37474-dobjref-minmax-%E4%BD%BF%E3%81%84%E6%96%B9%E8%AA%AC%E6%98%8E-%E8%B3%AA%E9%87%8F%E3%81%A8%E5%A4%89%E4%BD%8D%E3%80%81%E7%9B%AE%E6%A8%99%E3%81%8B%E3%82%89%E3%81%AE%E3%81%9A%E3%82%8C%E3%81%8C%E5%A4%A7%E3%81%8D%E3%81%84%E6%96%B9%E3%82%92%E6%9C%80%E5%B0%8F%E5%8C%96%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88/?do=findComment&comment=93192
( https://kutt.it/sldWOU )
使い方はこちらのユーザーフォーラムで説明してます
https://kutt.it/sldWOU