PuLPで連立方程式を解く方法

Pocket

PythonでPuLPを使うと連立方程式を解くことができます。

まずはシンプルな2元連立方程式を解いてみます。

x+y=5
2x-y=4

import pulp

problem = pulp.LpProblem()

x = pulp.LpVariable("x")
y = pulp.LpVariable("y")

problem += x + y == 5
problem += 2 * x - y == 4

status = problem.solve()
print("Status", pulp.LpStatus[status])

print("x", x.value())
print("y", y.value())

実行結果
Status Optimal
x 3.0
y 2.0

次は8元でやってみます。

4x1+2x2+3x3+3x4+2x5+3x6+4x7+2x8=26
2x1+3x2+2x3+2x4+4x5+2x6+4x7+2x8=13
3x1+4x2+4x3+4x4+2x5+3x6+2x7+3x8=0
4x1+2x2+3x3+4x4+4x5+4x6+2x7+4x8=20
2x1+3x2+2x3+2x4+3x5+2x6+3x7+4x8=5
3x1+4x2+4x3+3x4+2x5+4x6+3x7+2x8=5
4x1+2x2+3x3+3x4+2x5+4x6+2x7+4x8=17
2x1+3x2+2x3+2x4+1x5+3x6+2x7+2x8=-6

import pulp

problem = pulp.LpProblem()

x1 = pulp.LpVariable("x1")
x2 = pulp.LpVariable("x2")
x3 = pulp.LpVariable("x3")
x4 = pulp.LpVariable("x4")
x5 = pulp.LpVariable("x5")
x6 = pulp.LpVariable("x6")
x7 = pulp.LpVariable("x7")
x8 = pulp.LpVariable("x8")

problem += 4 * x1 + 2 * x2 + 3 * x3 + 3 * x4 + 2 * x5 + 3 * x6 + 4 * x7 + 2 * x8 == 26
problem += 2 * x1 + 3 * x2 + 2 * x3 + 2 * x4 + 4 * x5 + 2 * x6 + 4 * x7 + 2 * x8 == 13
problem += 3 * x1 + 4 * x2 + 4 * x3 + 4 * x4 + 2 * x5 + 3 * x6 + 2 * x7 + 3 * x8 == 0
problem += 4 * x1 + 2 * x2 + 3 * x3 + 4 * x4 + 4 * x5 + 4 * x6 + 2 * x7 + 4 * x8 == 20
problem += 2 * x1 + 3 * x2 + 2 * x3 + 2 * x4 + 3 * x5 + 2 * x6 + 3 * x7 + 4 * x8 == 5
problem += 3 * x1 + 4 * x2 + 4 * x3 + 3 * x4 + 2 * x5 + 4 * x6 + 3 * x7 + 2 * x8 == 5
problem += 4 * x1 + 2 * x2 + 3 * x3 + 3 * x4 + 2 * x5 + 4 * x6 + 2 * x7 + 4 * x8 == 17
problem += 2 * x1 + 3 * x2 + 2 * x3 + 2 * x4 + 1 * x5 + 3 * x6 + 2 * x7 + 2 * x8 == -6

status = problem.solve()
print("Status", pulp.LpStatus[status])

print("x1", x1.value())
print("x2", x2.value())
print("x3", x3.value())
print("x4", x4.value())
print("x5", x5.value())
print("x6", x6.value())
print("x7", x7.value())
print("x8", x8.value())

実行結果
Status Optimal
x1 8.0
x2 -7.0
x3 6.0
x4 -5.0
x5 4.0
x6 -3.0
x7 2.0
x8 -1.0

[ 2021年2月22日 | カテゴリー: Python, デジタル | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報