電力フロー最適化問題 CVXPY

電力フロー最適化問題

電力フロー最適化問題の例として、電力システムにおいて、電力の生成伝送、および消費を最適化する問題を考えます。

ここでは、簡単な3ノードの電力ネットワークを考え、CVXPYを使用して最適化問題を解きます。


この例では、3つのバス(ノード)があり、それぞれに発電機が接続されています。

各バスには、発電コストが異なります。

目的は、発電コストを最小化しながら、各バスの電力需要を満たすことです。

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
import cvxpy as cp

# パラメータ
demand = [50, 100, 150] # 各バスの電力需要
gen_cost = [10, 20, 30] # 各発電機の発電コスト
capacity = [100, 200, 300] # 各発電機の容量

# 変数
power_gen = cp.Variable(3) # 各発電機の発電量

# 制約
constraints = [
power_gen >= 0, # 発電量は非負
power_gen <= capacity, # 発電量は容量以下
cp.sum(power_gen) == sum(demand), # 電力需要を満たす
]

# 目的関数
objective = cp.Minimize(cp.sum(power_gen * gen_cost))

# 最適化問題
prob = cp.Problem(objective, constraints)

# 最適化問題を解く
result = prob.solve()

# 結果を表示
print("最適発電量:", power_gen.value)
print("最小発電コスト:", result)

このコードは、3つのバスの電力需要を満たすために、各発電機がどれだけの電力を生成する必要があるか、またその際の最小発電コストはいくらかを計算します。

CVXPYを使用して、最適化問題を定義し、制約条件を設定し、目的関数を最小化することで、最適な発電量と最小発電コストを求めることができます。

[実行結果]
1
2
最適発電量: [9.99999998e+01 1.99999999e+02 9.31465184e-07]
最小発電コスト: 5000.000011406152

この最適化問題の結果は、各発電機がどれだけの電力を生成する必要があるかを示しています。

最適発電量は以下のようになります。

🔹発電機1: 99.99999998
🔹発電機2: 199.9999999
🔹発電機3: 9.31465184e-07(ほぼ0)

この結果から、発電機1と発電機2がそれぞれの容量限界まで発電しており、発電機3はほとんど発電していないことがわかります。

これは、発電機1と発電機2の発電コストが発電機3よりも低いため、発電コストを最小化するために発電機1と発電機2が主に使用されていることを示しています。


最小発電コストは、5000.000011406152です。

これは、最適な発電量を達成するために必要な合計発電コストを示しています。

この値は、各発電機の発電量と発電コストを掛け合わせたものの合計です。


この最適化問題の解は、電力需要を満たしながら発電コストを最小化するための最適な発電量を示しています。

この情報は、電力システムの運用者が、コスト効率の良い方法で電力を供給するための参考情報となりえます。