# 結果の出力 print("Status:", LpStatus[status]) print("Optimal Solution:") for var in prob.variables(): print(var.name, "=", var.varValue) print("Total Cost of Ingredients = ", value(prob.objective))
# ①問題を初期化 problem = pulp.LpProblem("マーケティング最適化問題", pulp.LpMaximize)
# ②変数を定義 a = pulp.LpVariable("Aの広告費用", lowBound=0) b = pulp.LpVariable("Bの広告費用", lowBound=0) c = pulp.LpVariable("Cの広告費用", lowBound=0)
# ③目的関数を定義 problem += 300*a + 200*b + 150*c, "利益の合計"
# ④制約条件を定義 problem += a + b + c <= 10000, "広告予算の合計" problem += a <= 2000, "Aの広告費用の上限" problem += b <= 1500, "Bの広告費用の上限" problem += c <= 1000, "Cの広告費用の上限"
# 問題を定義する problem = pulp.LpProblem('Construction Project', pulp.LpMinimize)
# 変数を定義する a = pulp.LpVariable('a', lowBound=0, cat='Continuous') b = pulp.LpVariable('b', lowBound=0, cat='Continuous') c = pulp.LpVariable('c', lowBound=0, cat='Continuous') d = pulp.LpVariable('d', lowBound=0, cat='Continuous') e = pulp.LpVariable('e', lowBound=0, cat='Continuous') f = pulp.LpVariable('f', lowBound=0, cat='Continuous')
# 制約式を定義する
# 各作業の所要日数 problem += a >= 2 problem += b >= 3 problem += c >= 4 problem += d >= 2 problem += e >= 3 problem += f >= 4
# 作業A, B, Cは同時に開始することができる # a + 2 <= dは、作業Dを開始する前に、作業Aが完了している必要があることを表している # b + 3 <= cは、作業Cを開始する前に、作業Bが完了している必要があることを表している problem += a + 2 <= d problem += b + 3 <= c
# 作業Cが完了した後、作業Eを開始する # c + 4 <= eは、作業Eを開始する前に、作業Cが完了している必要があることを表している problem += c + 4 <= e
# 作業DとEは同時に開始することができる # d + 2 <= fは、作業Fを開始する前に、作業Dが完了している必要があることを表している # e + 3 <= fは、作業Fを開始する前に、作業Eが完了している必要があることを表している problem += d + 2 <= f problem += e + 3 <= f
# 結果を表示する print("Task Schedule:") print(f"\tTask A starts at day {start_a:.2f}") print(f"\tTask B starts at day {start_b:.2f}") print(f"\tTask C starts at day {start_c:.2f}") print(f"\tTask D starts at day {start_d:.2f}") print(f"\tTask E starts at day {start_e:.2f}") print(f"\tTask F starts at day {start_f:.2f}")
[実行結果]
Status: Optimal
Optimal Solution:
a: 2.00
b: 3.00
c: 6.00
d: 11.00
e: 10.00
f: 13.00
Task Schedule:
Task A starts at day 2.00
Task B starts at day 3.00
Task C starts at day 6.00
Task D starts at day 11.00
Task E starts at day 10.00
Task F starts at day 13.00