# 問題の初期化 problem = LpProblem("Task Assignment Problem", LpMaximize)
# 変数の定義 staff = ['Staff1', 'Staff2', 'Staff3'] tasks = ['Task1', 'Task2', 'Task3', 'Task4', 'Task5'] x = LpVariable.dicts('x', [(i, j) for i in staff for j in tasks], lowBound=0, upBound=1, cat=LpInteger)
# 目的関数の定義 problem += lpSum([x[i, j] for i in staff for j in tasks])
# 制約条件の定義 for j in tasks: problem += lpSum([x[i, j] for i in staff]) == 1
for i in staff: problem += lpSum([x[i, j] for j in tasks]) <= 2
# 問題の解決 status = problem.solve()
# 結果の出力 print("ステータス:", LpStatus[status]) for i in staff: for j in tasks: if x[i, j].value() == 1: print(i, "は", j, "に割り当てられました。")
🔹ある工場で、製品 A と製品 B を生産することができます。 🔹製品 A の生産には 2 時間かかり、製品 B の生産には 3 時間かかります。 🔹工場は最大10時間稼働することができます。 🔹製品 A 1 個あたりの利益は 10 ドルで、製品 B 1 個あたりの利益は 15 ドルです。 🔹工場で作ることのできる製品の最大量は 50 個です。
# ①問題を定義する problem = LpProblem("Hospital Patient Assignment Problem", LpMinimize)
# ②患者がどの病院に割り当てられるかを決定する変数を定義する patient_to_hospital = LpVariable.dicts("Patient to Hospital", [(i, j) for i inrange(3) for j inrange(10)], cat="Binary")
# ④制約条件を設定する hospital_capacities = [5, 7, 3] for i inrange(3): problem += lpSum([patient_to_hospital[(i, j)] for j inrange(10)]) <= hospital_capacities[i] for j inrange(10): problem += lpSum([patient_to_hospital[(i, j)] for i inrange(3)]) == 1
# ⑤問題を解く problem.solve()
# ⑥結果を出力する for i inrange(3): for j inrange(10): if value(patient_to_hospital[(i, j)]) == 1: print("Patient {} is assigned to Hospital {}".format(j+1, i+1))
Patient 1 is assigned to Hospital 1
Patient 3 is assigned to Hospital 1
Patient 4 is assigned to Hospital 1
Patient 6 is assigned to Hospital 1
Patient 7 is assigned to Hospital 1
Patient 2 is assigned to Hospital 2
Patient 5 is assigned to Hospital 2
Patient 8 is assigned to Hospital 3
Patient 9 is assigned to Hospital 3
Patient 10 is assigned to Hospital 3
Solution status: Optimal
Monday
Alice is working.
Bob is off.
Charlie is off.
David is off.
Tom is working.
Nancy is off.
Tuesday
Alice is off.
Bob is working.
Charlie is off.
David is off.
Tom is off.
Nancy is working.
Wednesday
Alice is working.
Bob is working.
Charlie is working.
David is off.
Tom is off.
Nancy is off.
Thursday
Alice is off.
Bob is off.
Charlie is off.
David is working.
Tom is working.
Nancy is off.
Friday
Alice is off.
Bob is working.
Charlie is working.
David is working.
Tom is off.
Nancy is off.
Saturday
Alice is off.
Bob is off.
Charlie is working.
David is working.
Tom is off.
Nancy is working.
Sunday
Alice is off.
Bob is off.
Charlie is off.
David is off.
Tom is working.
Nancy is off.