設計変数と制限値

設計変数を使用してパラメトリックモデルを定義します。

モデルの設計変数の値を変更することで、そのモデルを変更できます。最適化エンジンでは、モデルの設計変数の値を変更することで最適解を見つけようとします。

すべての設計変数には、1つの値と上限値 / 下限値( b L MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbdfgBPj MCPbqefqvATv2CG4uz3bIuV1wyUbqeduuDJXwAKbYu51MyVXgaruWq VvNCPvMCG4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC 0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yq aqpepae9pg0FirpepeKkFr0xfr=xfr=xb9adbaGaaiGadmWaamaaci GaaqqaceqbcaGcbaGaamOyaaaa@3DE5@ および b U MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbdfgBPj MCPbqefqvATv2CG4uz3bIuV1wyUbqeduuDJXwAKbYu51MyVXgaruWq VvNCPvMCG4uz3bqeeuuDJXwAKbsr4rNCHbGeaGqiVu0Je9sqqrpepC 0xbbL8F4rqqrFfpeea0xe9Lq=Jc9vqaqpepm0xbba9pwe9Q8fs0=yq aqpepae9pg0FirpepeKkFr0xfr=xfr=xb9adbaGaaiGadmWaamaaci GaaqqaceqbcaGcbaGaamOyaaaa@3DE5@ )があります。設計変数の値を使用してモデルを定義します。最適化エンジンは、モデルの挙動を最適化しようとする際に、設計変数を上限値と下限値の間に維持するという制約を受けます。

MotionSolveのモデリングエンティティの属性の多くは“設計可能”です。これは、属性の値を、設計変数に対する参照を使用した数値表現に設定できることを意味します。モデルは、任意の数の設計変数を持つことができます。

以下の例は、MotionSolveで設計変数を使用する方法を示しています。

この例では、半径と材料密度をパラメータ化した球状Partを作成すると想定します。入力した半径と密度に基づいて、このPARTの質量と慣性が自動的に推定され、以降のPARTの作成で使用されます。以下に、この操作を実現する方法を示します。

次のように、密度rho、半径r、および位置locに基づいて球状Partを作成する関数sphereを作成します。

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
このsphere関数を使用して、パラメトリックな球状PARTを次のように作成します。

# 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は設計可能です。

Markerの位置と向きも“設計可能”にすることができます。以下に例を示します。

>>> #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リファレンスガイドをご参照ください。各エンティティの属性サマリーの表では、エンティティの属性が設計可能かどうかが指定されています。