Python 最佳化入門
Jasmin Ludolf
Content Developer
需求:
禮服生產成本:


$C$:布料成本 + S 先生薪資 + T 小姐機會成本
機會成本:選擇縫製而放棄其他責任的成本
$C=110g+240g+105g+75t+160t+35t$
$C=455g+270t$
| 成本 | 布料 | S 先生 | T 小姐 |
|---|---|---|---|
| 禮服 | $\$110$ | $\$40/h \times 6h = \$240$ | $\$35/h \times 3h = \$105$ |
| 燕尾服 | $\$75$ | $\$40/h \times 4h = \$160$ | $\$35/h \times 1h = \$35$ |
限制:
需求:$g\leq20$、$t\leq12$
供給:$6g+4t\leq40$、$3g+t\leq20$
from scipy.optimize import milp, Bounds, LinearConstraintresult = milp([-545, -330],integrality=[1, 1],bounds=Bounds([0, 0], [20, 12]),constraints=LinearConstraint([[6, 4], [3, 1]], ub=[40, 20]))
print(result.message)
print(f'The optimal number of gowns produced is: {result.x[0]:.2f}')
print(f'The optimal number of tuxedos produced is: {result.x[1]:.2f}')
Optimization terminated successfully. (HiGHS Status 7: Optimal)
The optimal number of gowns produced is: 6.00
The optimal number of tuxedos produced is: 1.00
result = milp([-545, -330],
bounds=Bounds([0, 0], [20, 12]),
constraints=LinearConstraint([[6, 4], [3, 1]], ub=[40, 20]))
...
The optimal number of gowns produced is: 6.67
The optimal number of tuxedos produced is: 0.00
建議解為 6.67 件禮服與 0.00 件燕尾服 $\rightarrow$
四捨五入為 7 件禮服、0 件燕尾服
截斷為 6 件禮服、0 件燕尾服
Python 最佳化入門