質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2667閲覧

pulpを用いて、目的関数の最適化を試みたのですが、エラーが出ました。

mimi_chan

総合スコア22

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/18 03:57

pulpを用いて、目的関数の最適化を試みました。
具体的には、van-genunchenの式である
θ(h) = θr + θs - θr/[1+(αh)n]mのパラメータの最適化を行おうとしました。
上の式では、θr, α, nがパラメータです。
h は実測値を投入します。

最終的には、実測値のθとθ(h)の差を出して、それを最小化させようと致しました。
が、
unsupported operand type(s) for ** or pow(): 'LpAffineExpression' and 'LpVariable
というエラーが出ました。

以下のコードは、https://qiita.com/asukame/items/9b55daa3d5758030aea4を参考にしてかきあげました。

python

1from pulp import * 2import numpy as np 3import pandas as pd 4import matplotlib.pyplot as plt 5import datetime 6import matplotlib.dates as mdates 7%matplotlib inline 8 9data = pd.read_excel(') 10 11s = LpProblem(sense=LpMinimize) # 数理モデル 12x = LpVariable('x', lowBound=0, cat=LpInteger) # 変数 13z = LpVariable('z', lowBound=0, cat=LpInteger) # 変数 14n = LpVariable('n', lowBound=0, cat=LpInteger) # 変数 15 16c = data["Ridge"].iloc[3:,1] 17b = data["Ridge"].iloc[3:,2] 18y = 0.386 19 20目的関数(van genunchen式) 変数{ θr:x, θs:y, α:z, h, n, m=1-1/N } 21s = 0 22 23for a,d in zip(b, c): 24 25 s += (a - (x + (y-x)*((1+(z*h)**n)**(1/n-1))))**2 26 27 28 29m.solve() # ソルバーの実行 30 31print(value(x), value(y), value(z), value(m.objective))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PuLP は線形計画ソルバーですので 非線形の問題は解けないかと思います。

unsupported operand type(s) for ** or pow(): 'LpAffineExpression' and 'LpVariable
'LpAffineExpression' と 'LpVariable`` は ** や pow() をサポートしていない型です。(意訳)

投稿2019/02/18 04:30

編集2019/02/18 04:31
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mimi_chan

2019/02/18 09:41

なるほど、非線形ソルバーで組み立てれば良いのですね!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問