ここに質問の内容を詳しく書いてください。
「ジョブスケジューリング問題」についてPythonを用いて、一番ペナルティが少ない組み合わせを求めたいです。
A~E のリストには、0番目が必要時間、1番目があるべき終了時間、2番目がその終了時間を超えた場合、1単位に付き加えられるペナルティです。
このコードではとりあえず、全ての組み合わせの結果のペナルティの合計をその組み合わせ数分、表示したいのですが何も表示されませんでした。
初めての質問のため、分かりづらい点が多数あると思われますがご指摘くださるとありがたいです。
よろしくお願いします。
何も表示されません。
エラーメッセージ
Python
1 2 3### import itertools 4 5A = [10, 20, 8] 6B = [20, 25, 2] 7C = [15, 20, 3] 8D = [25, 35, 2] 9E = [50, 30, 5] 10 11per = [A, B, C, D, E] 12 13for aaa in itertools.permutations(per, 5): 14 qqa = aaa[0] 15 qqb = aaa[1] 16 qqc = aaa[2] 17 qqd = aaa[3] 18 qqe = aaa[4] 19 20#1人目 21 wwa = qqa[1] - qqa[0] 22 if wwa < 0: 23 alla = (-wwa) * qqa[2] 24#2人目 25 wwb = abs(wwa) + qqb[0] 26 wwb = qqb[1] - wwb 27 if wwb < 0: 28 allb = (-wwb) * qqb[2] 29 #3人目 30 wwc = abs(wwb) + qqc[0] 31 wwc = qqc[1] - wwc 32 if wwc < 0: 33 allc = (-wwc) * qqc[2] 34 #4人目 35 wwd = abs(wwc) + qqd[0] 36 wwd = qqd[1] - wwd 37 if wwd < 0: 38 alld = (-wwd) * qqd[2] 39 #5人目 40 wwe = wwd + qqe[0] 41 wwe = qqe[1] - wwe 42 if wwe < 0: 43 alle = (-wwe) * qqe[2] 44 45 print(alla + allb + allc + alld + alle) 46 47 48
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
print(alla + allb + allc + alld + alle)
の下にある
```Python
という行を、
import itertools
の前の行に移動してください。
そうでないと、ソースコードが読めません。
ご指摘ありがとうございます。
修正してみました。
確認できますでしょうか。
はい、表示されました。
print文のインデントを修正して、あと初期化を加えれば出力が出るようにすることはできますが、たぶん求める答えではないでしょう。
rrkkrさんの解きたい「ジョブスケジューリング問題」が何なのかが不明確です。
どこかのサイトに問題の定義があるなら、そのURLを教えてください。
サイトにないのであれば、簡単で良いので問題を説明してください。
そうすれば回答できると思います。
知識不足のため、有名な問題だと勘違いしていました。
問題の詳細は、追加した画像で確認していただけますでしょうか。
いくつか想定してみた問題の内のひとつですね。
ご質問は
1 print文が何も出力しない理由を知りたい。
2 どういうアルゴリズムで考えれば良いかを知りたい。
3 Python言語の仕様を理解したい
4 全ての組み合わせのコストを出力したい
5 なるべく高速な解を知りたい
のどれでしょう。それぞれの質問で回答は全く違うものになります。
はじめの質問内容の時点では、1の内容のつもりでしたが、
特に、2について詳しく回答を得たいと思っています。
大変押し付けがましい事ではありますが、お時間があれば1~5の内容全てご教授くださると嬉しいです。
回答2件
あなたの回答
tips
プレビュー