質問: 現在、学校であるプログラムについて作る課題をやっているのですが、 調べても解決できないので質問させていただきます。 ある式があり、簡単に書くと (x+a)が100以上では、目標値=2log(x+a)+3log(4x+b)+5 (x+a)が100以下では、目標値=7log(x+a)+8log(4x+b)+9 です。a,bは別の計算からの値です。このときのxの値を求める計算をしたいと考えています。 今まではExcelでやっている時は上の2式をifで繋いで、ゴールシークを使い求めていました。 そこでpythonを用いてif文で繋いでいる式の逆算方法を教えて頂きたいです。よろしくお願いします。 ※追記 言葉足りずだったので修正しました。 pulpなどを用いて逆算する場合だとxやa,bに対して制約条件が成り立つと考えています。 間違っていたら申し訳ありません。 今回は出てきた結果について制約条件をつけて 制約条件に対して式が変化するというものです。 様々なライブラリを見てみましたが、なかなか見つからない状況です。 Excelでは、まずC7=B7+20とし、 D7=IF(C7>20,2*LOG(C7*10)+3*LOG(4*C7+20)+5,7*LOG(C7+3)+8*LOG(4*C7+20)+9)としています。 ゴールシークを実施する場合D7を計算するものをD7、目標値を20、変化させるセルをB7としています。 結果B7=-21.2908981、D7=20.00000574と出ます。 pulpは確かに線形しかできないとあったので、 pyomoというものでもやってみましたが、 “出てきた結果について制約条件をつけて 制約条件に対して式が変化するというもの”のところで詰まっています。 よろしくお願いします。
回答: 「最適化 python」でググれば色々でてきます。それでご自分で試してみて、つまづいたときに改めて質問するのが良いでしょう。 例:最適化におけるPython