設計変数と制限値
設計変数を使用してパラメトリックモデルを定義します。
モデルの設計変数の値を変更することで、そのモデルを変更できます。最適化エンジンでは、モデルの設計変数の値を変更することで最適解を見つけようとします。
すべての設計変数には、1つの値と上限値 / 下限値( および )があります。設計変数の値を使用してモデルを定義します。最適化エンジンは、モデルの挙動を最適化しようとする際に、設計変数を上限値と下限値の間に維持するという制約を受けます。
MotionSolveのモデリングエンティティの属性の多くは“設計可能”です。これは、属性の値を、設計変数に対する参照を使用した数値表現に設定できることを意味します。モデルは、任意の数の設計変数を持つことができます。
以下の例は、MotionSolveで設計変数を使用する方法を示しています。
例
この例では、半径と材料密度をパラメータ化した球状Partを作成すると想定します。入力した半径と密度に基づいて、このPARTの質量と慣性が自動的に推定され、以降のPARTの作成で使用されます。以下に、この操作を実現する方法を示します。
def sphere (r, rho, loc, label):
mass = (4/3) * math.pi * (r**3) * rho
ixx = iyy = izz = 0.5 * mass * r**2
sphere = Part (mass=mass, ip=[ixx,iyy,izz], label=label)
sphere.cm = Marker (part=sphere, qp=loc, label=label + ”_CM”)
return sphere
# Steel sphere of radius 100 mm
r1 = Dv (label=”Radius of sphere-1”, b=100, blimit=[90,110])
rho1 = Dv (label=”Density of Steel”, b=7.8E-6, blimit=[2E-6,9E-6])
loc1 = [0,10,-25]
sph1 = sphere (r1, rho1, loc1, "Steel-Sphere")
# Aluminum sphere of radius 50 mm
r2 = Dv (label=”Radius of sphere-2”, b=50, blimit=[40,60])
rho2 = Dv (label=”Density of Aluminum”, b=2.7E-6, blimit=[2E-6,9E-6])
loc2 = [23, 34, 45]
sph2 = sphere (r2, rho2, loc2, "Aluminum-Sphere")
MotionSolveは、sph1の質量と慣性がr1とrhoに依存していることを認識しています。同様に、sph2の質量と慣性がr2とrhoに依存していることも認識しています。sph1およびsph2のPartは設計可能です。
例
>>> #Create a designable Point
>>> px = Dv (label=”px”, b=1, blimit = [-2, +2])
>>> py = Dv (label=”py”, b=2, blimit = [-3, +3])
>>> pz = Dv (label=”pz”, b=3, blimit = [-4, +4])
>>> p = Point(px,py,pz)
>>> p
Point (1.0, 2.0, 3.0)
>>> #Create a Part
>>> b2 = Part (mass=1, ip=[1e-4,1e-4,1e-4])
>>> b2.cm = Marker (body=b2)
>>> #Create a MARKER m2 on PART b2: Its origin is at the designable point p
>>> m2 = Marker (body=b2, qp=p, zp=p+[0,0,1], label="Left end")
>>> m2.qp
Point (1.0, 2.0, 3.0)
MARKER m2の原点はPoint pという形で指定されており、このPoint pは設計変数px、py、pzという形で定義されています。MARKER m2の原点は設計可能です。
エンティティと設計可能なエンティティ属性の全リストについては、MSOLVE APIリファレンスガイドをご参照ください。各エンティティの属性サマリーの表では、エンティティの属性が設計可能かどうかが指定されています。