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

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

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

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

Q&A

解決済

2回答

5034閲覧

pythonを用いた逆算計算について

ruruonety

総合スコア7

Python

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

0グッド

0クリップ

投稿2020/01/21 13:33

編集2023/07/04 17:22

現在、学校であるプログラムについて作る課題をやっているのですが、
調べても解決できないので質問させていただきます。
ある式があり、簡単に書くと
(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,2LOG(C710)+3LOG(4C7+20)+5,7LOG(C7+3)+8LOG(4*C7+20)+9)としています。
ゴールシークを実施する場合D7を計算するものをD7、目標値を20、変化させるセルをB7としています。
結果B7=-21.2908981、D7=20.00000574と出ます。
pulpは確かに線形しかできないとあったので、
pyomoというものでもやってみましたが、
“出てきた結果について制約条件をつけて
制約条件に対して式が変化するというもの”のところで詰まっています。
よろしくお願いします。

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

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

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

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

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

tiitoi

2020/01/22 03:11 編集

> a,bは別の計算からの値です。 解が存在するa, b, 目標値の具体的な値の例を(1つでいいので)記載できますか > Excelでやっている時は上の2式をifで繋いで、 つなぐとはどういうことでしょうか? > ゴールシークを使い求めていました。 Excel では正しい値が求められたのでしょうか?つまり、出てきた値を x に代入して計算したら、目標値とほぼ一致しましたか? > pulpなどを用いて逆算する場合 pulp で解けるのは線形計画問題なので、log のような非線形関数が含まれるものは解けません
guest

回答2

0

定式化はできても解くのは難しそうですが、以下でしょうか

目的関数
k*(2log(x+a)+3log(4x+b)+5) + (1-k)*(7log(x+a)+8log(4x+b)+9)
kはバイナリ変数

制約
(x+a - 100)* (k-1) <= 100

(解説)
x+a > 100なら、k=1でないと制約を満たさない(目的関数の第2項がゼロになる)
x+a <= 100なら、k=1でも0でも制約を満たすが、目的関数の第2項のほうが係数が大きいのでk=0となるはず

投稿2023/07/04 08:22

renewable82

総合スコア2

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

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

0

ベストアンサー

「最適化 python」でググれば色々でてきます。それでご自分で試してみて、つまづいたときに改めて質問するのが良いでしょう。

例:最適化におけるPython

投稿2020/01/22 01:06

jeanbiego

総合スコア3966

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問