# 問題の定義 problem = pulp.LpProblem("Production Optimization", pulp.LpMaximize)
# 変数の定義 x = pulp.LpVariable("A", lowBound=0, cat='Continuous') y = pulp.LpVariable("B", lowBound=0, cat='Continuous')
# 目的関数の定義 problem += 40 * x + 30 * y, "Profit"
# 制約条件の定義 problem += 2 * x + y <= 40, "Time Constraint" problem += 3 * x + y <= 30, "Resource Constraint"
# 問題を解く problem.solve()
# 結果の表示 print(f"Status: {pulp.LpStatus[problem.status]}") print(f"Optimal production of A: {x.varValue}") print(f"Optimal production of B: {y.varValue}") print(f"Maximum profit: {pulp.value(problem.objective)}")
出力
このコードを実行すると、最適な生産量と最大利益が表示されます。
1 2 3 4
Status: Optimal Optimal production of A: 0.0 Optimal production of B: 30.0 Maximum profit: 900.0
# 行、列、対角線の和がすべて等しくなる制約を追加 magic_sum = n * (n * n + 1) // 2
# 行の制約 for row inrange(n): problem.addConstraint( lambda a, b, c: a + b + c == magic_sum, [row * n + i for i inrange(n)] )
# 列の制約 for col inrange(n): problem.addConstraint( lambda a, b, c: a + b + c == magic_sum, [col + n * i for i inrange(n)] )
# 対角線の制約 problem.addConstraint( lambda a, b, c: a + b + c == magic_sum, [i * (n + 1) for i inrange(n)] ) problem.addConstraint( lambda a, b, c: a + b + c == magic_sum, [(i + 1) * (n - 1) for i inrange(n)] )
# 解を取得 solutions = problem.getSolutions()
# 結果を表示 for solution in solutions: for row inrange(n): print([solution[row * n + col] for col inrange(n)]) print()