- 締切済み
トラス構造の最適化問題に関する質問です
画像のようなトラス構造の重量を最小化する最適化問題を遺伝的アルゴリズムで解くという問題です 遺伝的アルゴリズムについては概ね理解はしているのですが、構造力学については素人のため力の釣合い式などの式をどのように立てればいいのかわかりません おそらくモーメント法とか変位法と呼ばれる手法を使うと思われるのですが、調べてもちんぷんかんぷんです 設定はこのようになっています L = 300(in) P = 100(kips) E(ヤング率) = 10^4(ksi) ρ(部材密度) = 0.1(lb/in^3) 断面積A_i(i=1,2,...,10)の範囲: [0.1,40] 応力σ_iの条件: σ_i<=25(ksi) 部材1~10の断面積A_iのベクトル{A_1,A_2,...,A_10}を説明変数(遺伝子)とし f = ρLΣA_i を最小化するという条件です 詳しい方、式の立て方をご教示ください
- みんなの回答 (8)
- 専門家の回答
#6です。まずお詫びです。 #6で変位と力の未知数を合わせて40個と書きましたが、そんな訳ないですよね。部材を全部ばらせば10個、1部材につき節点2個、1節点につき変位と力の成分2個ずつで未知数4だから、 ・10×2×4=80個 の未知数 でした。 部材の支配方程式は4×10=40本あるので、80個の未知数に対して方程式系が解けるためには、80-40=40個の追加条件が必要です。つまり部材結合条件は40個出てきます。 80本の条件式の内、68本を適当に組み合わせて使うと、丸1~丸6の正味の節点変位の未知数12個分の連立1次方程式になります。それが重ね合わせの結果です。どうも重ね合わせのイメージから抜けられなくて間違いました。申し訳ない。 で、ここまで来たので、重ね合わせの手順を述べます。 重ね合わせ操作では最初に、添付図の表と同等なものを用意します。jは部材番号で、丸付きの節点番号kは、あなたの図のものです。1節点につき変位成分2個(X方向とY方向)があるので、例えば、 ・節点kのX方向成分を表す未知数 → i=2×(k-1)+1 ・節点kのY方向成分を表す未知数 → i=2×(k-1)+2 と決めれば、系統的に未知数番号がふれます(i1,i2,i3,i4)。(i1,i2,i3,i4)に対応する部分剛性マトリックスは、添付図のK(j)です。 以後、p,q=1~4とし、[p]などは下付き添え字を表すとします。 全体剛性マトリックスをAとした場合、Aは12×12とわかっているので、その寸法の空のA(要素全て0)をあらかじめ用意し、K(j)の成分k[pq]を、Aの(ip,iq)の位置へ足しこんでいくだけです。 上記を部材 j=1~10に対して行います。つまり部材番号jは、作業を進行させるループカウンターとして働き、節点番号kは実質的に使用しません。K(j)のk[pq]の計算はループの過程で、都度やれば十分です。 得られた全体剛性マトリックスのAの列順は、i=2×(k-1)+1 と i=2×(k-1)+2 で定義した変位の未知数D[i]の行順と同じです。イメージは、 AD=F です。Aの行順は、節点に作用する力Fの行順と同じですが、荷重がかかっていない節点については、全て0です。0でないFの成分は、k=丸4,丸2のY方向なので、i=2×(4-1)+2=8,i=2×(2-1)+2=4、すなわちF[8]とF[4]に-Pを与えます。マイナスなのは、鉛直下向き荷重だからです。 最後に支点条件を投入します。節点丸5と6が支点(動かない)なので、Aの9,10,11,12行を、条件D[9]=D[10]=D[11]=D[12]=0 におきかえます。対応するFの成分も0に調整しますが、今回はもともと0です。 ちなみに、D[9]=D[10]=D[11]=D[12]=0 へのおきかえは、Aの任意のどの4行でやっても数値的にはOKなのですが、上記のようにするのが普通です。理論的根拠もいちおうあります。 後はDについて解くだけです。 #5さんの方法でも解は得られるでしょうが、反復法によらずとも解を得る方法があるなら、ちゃんとやった方が良いと思うのと、確かに重ね合わせは言葉で言うと面倒臭いですが、しかしそんなに難しい話ではないと思うからです。
#4です。 有限要素法の基本は、「構造系を部材に分割し、それぞれの部材に対して支配方程式を与え、それらを組み上げる」が基本です。 トラス部材の支配方程式は、前回のK(j)です。K(j)のもとの式は普通のバネの扱いに慣れてれば当然だし、K(j)への変換は、遺伝的アルゴリズムをやるくらいなら行列(配列)の扱いは自由自在だろうから、K(j)まではOKと想定します。全てのK(j)(j=1~10)から出てくる条件式は40本です。 問題は、部分剛性マトリックの重ね合わせの部分ですが、例えば添付図のように構造系を部材にばらして節点番号をつけます。1部材につき2節点あるので、節点番号は1~20になります。各節点における変位は黒矢印で、作用力は赤矢印で表してます。 1節点につき変位成分は2個、それへの作用力の分力も2個あるので、全てのK(j)から来る条件数に対応して未知数は40個になりますけれど、さらに部材結合条件を書いてやります。 点線枠で囲った範囲の部材節点が、本来の節点番号:丸1,丸2,・・・と一致するものです。従って点線枠内の節点番号の変位は全て等しい、点線枠内の節点番号の節点への作用力は足せば0という条件を書けば、部材結合条件は尽くされます。 ただし本来の節点である丸2と丸4に関しては、関連する節点への作用力の和は、-Pです。また本来の節点である丸5と丸6に関しては、関連する節点の変位は全て0です。 これら28個の部材結合条件と、全ての部材の支配方程式40個の、合計68個の連立1次方程式をそのまま解いても、じつはOKなんですよ。力学的に正しい事をやってるからです。 ※遺伝的アルゴリズムをやるのだから、連立1次方程式のプログラムくらい自由自在と想定しています(^^;)。 部材の支配方程式40個に28個の部材結合条件を代入した結果が、前回書いてしまった部分剛性マトリックスの全体剛性マトリックスへの、重ね合わせ操作です。日常的に余りにもなじんでいたので、前回は思わず書いちゃいましたが(^^;)、本質は上記です。 68×68くらいなら重ね合わせなくても、全然全然問題ないはずですし、こっちの方がわかりやすい。最近のコンピューターは無茶苦茶に速いので・・・(^^)。
- foomufoomu
- ベストアンサー率36% (1018/2761)
>なぜ静定トラスにはならないのでしょう #1に書いた、静定トラスの条件式を満たさないからです。 >また、不静定トラスと静定トラスはどのように違うのでしょうか #1に書いたように、 >>力の釣合を連立方程式で解くだけで問題が解けます。 が、できるのが静定トラスです。力の釣合方程式の数と 力の未知数の数が同じなので、簡単に解けます。 #3の人も書いてますが、不静定トラスの正式な解法はとても難しくて、それだけで工業高校の期末課題になるぐらいの問題です。 もっと簡単な方法(たぶん、どの本にも載っていない)を書いておきましょう。(今回はこの程度の方法で解けると思います。) 1.(後述の方法で)X,Y変位を決める。 2.部材両端の変位から部材の伸び量dを計算する 3.σ=d*A*E から各部材の引張り力σ(圧縮の場合は負)をもとめる。 4.各節点に働く、部材からの力σ、支点からの反力、外力、のベクトルの合計がゼロになれば適切なX.Y変位になっている。(支点からの反力と書きましたが、これは任意に決めてよいので、部材からの力の負数とすればよい) 5.1へもどる (後述の方法で)の部分は、 前回計算した節点の力ベクトルの合計に、適当な係数を乗じて(ベクトルの方向の)変位とします。(係数はほんとにテキトーに決めます。値がまずいと収束しませんが) 初期値は全X,Y変位=0でよいでしょう。 このループを何回か(おそらく数十回)繰り返すことで、不静定トラスの解とすることができます。
2次元トラスの式の立て方のみ説明します。#2さんの仰るように、図は外部不静定かつ内部不静定なトラスなので、モーメント法(切断法)では答えが出ません。変位法を用いるのが一般的です。変位法といっても、有限要素法なんですが(^^;)。 トラスは伸び変形にのみ抵抗する部材なので、1本のバネにおきかえられます。バネ定数をkとすれば、k=EA/Lです。これはヤング率の意味を考えれば、すぐ出てきます。 以後、部材の両端点を節点と呼び、iで表します(丸付き数字に対応)。部材番号はjで表します。添付図を見て下さい。 添付図のxi2(j),yi2(j)などは、節点i2の変位です。あなたの図で言うと、部材7の節点丸3です。右上段の式は、節点i1,i2の変位によって部材jに作用する力Fx1(j),Fy1(j)などを表す式です。要するにxi2(j)とxi1(j)の変位差(伸び)に、バネ定数をかけたものがバネjへの作用力だよね、という式です。Fx1(j),Fy1(j)などは、仮定した変位方向の力の分力です。 ただしトラスは伸び変形にのみ抵抗する部材なので、Fy1(j)とFy2(j)は常に0です。添付図の下段は、右上段の式を、部材座標系x-yから全体座標系X-Yへ変換した形です。X-Y系は、あなたの図の水平-鉛直と思ってOKです。θは、x-y系とX-Y系との間の角度です。 K(j)の事を部分剛性マトリックと言いますが、K(j)において使用するべき節点iの変位は、あなたの図の水平-鉛直方向となり、右辺の力は部材jに作用する水平-鉛直力です。基底変換をご存知なら、こんなの容易いと思います。 次に部分剛性マトリックを重ね合わせて、全体剛性マトリックを作ります。ここまでの状態は、各部材について4×4の部分剛性マトリックが10個あり、全部ならべれば係数マトリックスとして、40×40になっています(対角ブロックに4×4が10個)。しかし部材間の結合条件があります。 例えば、部材1と2は節点3を共有するので変位は等しく、部材1の部分剛性マトリックの節点3の変位に対応する列へ、部材2の部分剛性マトリックの節点3の変位に対応する列を、移動させれば、部材1と2で節点3の変位が等しい事を表せるのがわかります。部材2,5,9についても同じ事をします。 さらに部材1,2,5,9において節点3に作用する力を全て足せば、0になります。作用・反作用からの帰結です。なので部材2,5,9の部分剛性マトリックの節点3への作用力に関する行を、部材1の節点3への作用力に関する行へ足し込めば、作用・反作用を表せるのがわかります。 以上を全ての節点についておこなえば、節点数×2の12×12の全体剛性マトリックが得られます。行,列番号13以上は不要です。部材結合条件を使用したからです。イメージとしては、 KX=F (1) になります。ここでKは12×12の全体剛性マトリック,Xは節点数×2の12個の変位を適当に並べた変位ベクトル,FはXに対応する各節点への作用力(水平,鉛直)です。 しかしこうして得られた剛性方程式(1)は、じつは無荷重状態です。どうしてかというと、全ての節点力の和を0としているからです。例えば節点3に荷重Qが鉛直方向にかかっていたら、部材1,2,5,9の節点3への作用力の和が0では、節点3で力が釣り合っていない事になります。つまり節点3に荷重Qが鉛直方向にかかるなら(1)で、節点3の鉛直変位に関するFの行成分にQを与えます。今のケースなら、節点2と4に鉛直力-Pを与えます。 しかしこうして得られた剛性方程式(1)は、じつは不安定状態です。どうしてかというと、(1)は全体系への力と変位の一般的関係を記述するものなので、釣り合えないなら釣り合えないという解も出せないと不合理だからです。じっさいこのまま(1)を解くと、全体剛性マトリックは特異になり、解は剛体変位と回転(無変形状態)を含む不定解になります。 そこで支点条件を与えます。今のケースなら、剛性方程式(1)の節点5,6に対応する行を、x5=x6=y5=y6=0におきかえます。 後は何らかの方法で(1)をXについて解くだけです。得られたXを部分剛性マトリックスに代入すれば、各部材の節点への作用力F(j)が得られ、σ(j)=Fi(j)/EA(j)で部材応力が得られます。特に部材1,8と7,3の支点側節点への作用力の和が、節点5,6への支点反力です。 例え部材断面積を変えても部材応力は変わらない静定トラスであっても、無意味な最適化問題ではないと自分は思っています。今は不静定トラスなのでなおさらです。確かに現在は鋼重最小は余り流行っていませんが、そんなに簡単な問題ではないと、自分は思います。
- foomufoomu
- ベストアンサー率36% (1018/2761)
あれ? 問題の >部材1~10の断面積A_iのベクトル{A_1,A_2,...,A_10}を説明変数(遺伝子)とし ということは、断面積の調整だけですか? う~~ん、おもいっきり無意味な問題じゃないですか。 なお、図のトラスは静定トラスにはならないので、(書き忘れていましたが、n≧3という条件があります)前述の解法が使えません。 数値計算する場合は、変位法を使うのが普通です。 http://kentiku-kouzou.jp/index-advance.html
- foomufoomu
- ベストアンサー率36% (1018/2761)
トラスは、部材の断面が応力にもたらす影響は微々たるものなので、部材断面積を調整するだけなら遺伝子アルゴリズムを使う意味はほとんどありません(1回の計算でほぼ最適断面が出てしまう)。 なので、この問題は、部材数の増減を含めたトラスの最適形状を求める問題だと思います。(これは難しいですよ。(^_^;) どんな形状のトラスでも計算できる、本格的な計算はたいへんなので、「静定トラス」に限定した計算方法を使うのがよいと思います。部材の交差する点(節点)ごとの力の釣合を連立方程式で解くだけで問題が解けます。また、部材断面積は計算に影響しないので、断面積は応力が出た後で決めればよいです。 静定トラスは、応力が温度(熱膨張)の影響を受けないので、土木構造物ではよく使われる構造です。 http://www2.biglobe.ne.jp/~k_wata/study/truss/index.html 問題に曲げ剛性を示す数がないので、すべての部材は曲げを伝えない=すべての部材の接合はピン接合とするという事だと思います。 (当然のことですが、)支点位置と荷重点位置は固定だと思います。 静定トラスは、次の条件を満たすトラスです。 (n+s+r)-2*k=0 n:支点の反力数の合計(自由端=0、ローラー支点=1、ピン支点=2、剛接合支点=3) s:部材数 r:節点に剛に接合されている部材の数(問題の条件から、ここでは0) k:節点数 遺伝子アルゴリズムの手順としては 1・(ランダムに?)中間節点位置を決める 2・(ランダムに?)節点をつなぐ部材を決める。 3・静定トラスであるか、チェックする。静定トラスでないなら、最初に戻る。 4・トラスの応力計算をする。 5・部材の断面積を計算する。 6・トラス全体の重さを計算する。 2番目の作業を、「静定トラスになるように節点をつなぐ」と、することができれば、3番目の作業は不要になります。(無理かな?) うまくすれば、次の写真のような構造体ができるかも。 http://blogs.yahoo.co.jp/miyabiman_now/26326352.html
補足
回答ありがとうございます。 #1を含めてコメントさせていたきます >う~~ん、おもいっきり無意味な問題じゃないですか 無意味かもしれませんが、こういう問題なのです 断面積を求めることがこの問題の全てです >なお、図のトラスは静定トラスにはならないので、 なぜ静定トラスにはならないのでしょう また、不静定トラスと静定トラスはどのように違うのでしょうか