宇宙工学 最適化問題 SciPy

宇宙工学 最適化問題

宇宙工学の最適化問題の一例として、宇宙船の軌道設計を考えてみましょう。

例えば、地球周回軌道への衛星の打ち上げを考えます。

具体的には、衛星の打ち上げコスト到達する軌道の高度、または到達するまでの時間などの複数の要素を最適化する問題があります。


ここでは、簡単な例として、地球周回軌道への衛星の打ち上げコスト軌道の高度の関係を考えてみます。

軌道の高度が増すにつれて打ち上げコストが増えると仮定します。

以下のコードは、この問題を最適化するためにScipyライブラリを使用しています。

具体的には、打ち上げコストを最小化するための最適な軌道高度を探します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize

# 目的関数:打ち上げコストの最小化
def launch_cost(height):
# 仮想的な打ち上げコスト関数(ここでは単純な2次関数)
return (height - 500) ** 2 # 高度と500kmの差の二乗をコストと仮定

# 初期推定値
initial_guess = 1000 # 初期の軌道高度の推定値

# 最適化の実行
result = minimize(launch_cost, initial_guess, method='BFGS')

# 最適化結果
optimal_height = result.x
min_launch_cost = result.fun

# グラフ化
heights = np.linspace(400, 600, 100) # 400kmから600kmまでの高度を考慮
costs = (heights - 500) ** 2 # 打ち上げコスト関数

plt.plot(heights, costs, label='Launch Cost')
plt.scatter(optimal_height, min_launch_cost, color='red', label='Optimal Height')
plt.xlabel('Orbital Height (km)')
plt.ylabel('Launch Cost')
plt.title('Optimization of Satellite Launch Height')
plt.legend()
plt.grid(True)
plt.show()

print(f"Optimal Height for Minimum Launch Cost: {optimal_height} km")
print(f"Minimum Launch Cost: {min_launch_cost}")

このコードは、打ち上げコストを最小化するための最適な軌道高度を見つけ、その結果をグラフ化しています。

グラフでは、軌道高度に対する打ち上げコストの関係が示され、最適な軌道高度赤い点として示されます。

[実行結果]

ソースコード解説

このコードは、宇宙工学における最適化問題の一例を示しています。

以下がソースコードの詳細です。

1. 目的関数の定義:

  • launch_cost関数は、仮想的な打ち上げコスト関数を定義しています。
    ここでは、高度と500kmの差の二乗をコストとしています。

2. 初期推定値の設定:

  • initial_guessは、最適化アルゴリズムの初期の推定値として1000kmを設定しています。

3. 最適化の実行:

  • minimize関数を使って、launch_cost関数を最小化することで最適な軌道高度を探します。
    ここではBFGS法を用いて最適化を行っています。

4. 最適化結果の取得:

  • 最適な軌道高度とその時の打ち上げコストを取得しています。

5. グラフ化:

  • heightsは400kmから600kmまでの範囲の高度を考慮するための配列です。
  • costsはそれぞれの高度における打ち上げコストを示します。
  • plt.plot()で高度に対する打ち上げコストの関係を表すグラフをプロットしています。
  • plt.scatter()で最小の打ち上げコストを達成する最適な高度を赤い点として表示しています。
  • その他、グラフのタイトルや軸ラベル、凡例、グリッドを設定しています。

6. 結果の表示:

  • 最適な軌道高度とその時の最小打ち上げコストを出力しています。

結果解説

[実行結果]

この結果は、打ち上げコストを最小化するための最適な軌道高度を見つけたことを示しています。
結果として得られた最適な軌道高度は約500kmです。
しかし、数値計算の誤差のため、厳密には499.99999999kmという値が得られています。

さらに、この最適な高度での打ち上げコストは非常に小さく、ほぼゼロに近い値となっています(6.48426847315948e-17)。
これは浮動小数点の誤差などによるもので、ほぼゼロに等しい非常に小さな値です。

グラフでは、軌道高度が高くなるにつれて打ち上げコストが増加することが示されています。
そして、その関係を表す2次関数的なカーブが描かれており、最小値が500km付近であることが視覚的に示されています。
赤い点最適な高度での最小コストを示しています。