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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

363閲覧

pulpの目的関数内にlpsum+lpsumとすることはできないのでしょうか?

paradoxshadow

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/07/15 21:17

生産量をx[a]、x[b]…としたときの利益最大化問題をpulpのlpsumで以下のようなモデルを作成して問題を解決できております。
(文法が間違えているかもしれませんが、質問のポイントには影響がない限り無視してください)

製品i ∈ I、生産時間t[i]、利益p[i]
(目的関数)
prob += pulp.lpsum(p[i] * x[i] i in I)
(制約条件)
prob += pulp.lpsum(t[i] * x[i] i in I)≦ 180

ここに、原料αの会社から一か月の購入数量が一定(T)以上になった場合に、その超過分の数量の単価を半分にするという条件が提示された場合に、以下のように変えてみたのですが、pulpによって展開された目的関数には、この値引分が反映されずに悩んでおります。修正後の目的関数内の二つのlpsum部分をどちらか一つを有効にした場合はちゃんと
pulpによって正しく展開されているよう思われます。目的関数内に二つ以上のlpsumを使うことはできないのでしょうか?

部品表中の原料aの使用量:r_a[i]
原料aの購入単価:c_a
(修正後の目的関数)
prob += pulp.lpsum(p[i] * x[i] i in I)-pulp.lpsum(((r_a[i] * x[i] i in I)- T)* c_a *1/2)

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

guest

回答1

1

ベストアンサー

lpsum+lpsumとすることはできない

のではなく、単にそう見えるような結果になってるだけ、ではないでしょうか。

ってことで、
pulp.lpsum(p[i] * x[i] i in I)

pulp.lpsum(((r_a[i] * x[i] i in I)- T)* c_a *1/2)
で、どういう結果が返ってるのか調べてみては

投稿2022/07/15 23:15

編集2022/07/15 23:17
y_waiwai

総合スコア87473

paradoxshadow👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

paradoxshadow

2022/07/16 04:17

y_waiwai様 アドバイスありがとうございました。ご指摘のとおりでした。ちゃんと式の中に両要素とも反映されておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.60%

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

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

質問する

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。