Phân tích Chuỗi Cung Ứng với Python
Aaren Stubberfield
Supply Chain Analytics Mgr.
Khối lượng tối đa 20.000 lb
| Sản phẩm | Khối lượng (lb) | Lợi nhuận ($US) |
|---|---|---|
| A | 12.800 | 77.878 |
| B | 10.900 | 82.713 |
| C | 11.400 | 82.728 |
| D | 2.100 | 68.423 |
| E | 11.300 | 84.119 |
| F | 2.300 | 77.765 |
prod = ['A', 'B', 'C', 'D', 'E', 'F'] weight = {'A':12800, 'B':10900, 'C':11400, 'D':2100, 'E':11300, 'F':2300} prof = {'A':77878, 'B':82713, 'C':82728, 'D':68423, 'E':84119, 'F':77765}# Initialize Class model = LpProblem("Loading Truck Problem", LpMaximize) # Define Decision Variables x = LpVariable.dicts('ship_', prod, cat='Binary')# Define Objective model += lpSum([prof[i]*x[i] for i in prod]) # Define Constraint model += lpSum([weight[i]*x[i] for i in prod]) <= 20000# Solve Model model.solve() for i in prod: print("{} status {}".format(i, x[i].varValue))
Khối lượng tối đa 20.000 lb
| Sản phẩm | Giao hay không |
|---|---|
| A | Không |
| B | Không |
| C | Không |
| D | Có |
| E | Có |
| F | Có |
Kết quả
Chọn E hoặc D, nhưng không chọn cả hai.
model += x['E'] + x['D'] <= 1
prod = ['A', 'B', 'C', 'D', 'E', 'F']
weight = {'A':12800, 'B':10900, 'C':11400,
'D':2100, 'E':11300, 'F':2300}
prof = {'A':77878, 'B':82713, 'C':82728,
'D':68423, 'E':84119, 'F':77765}
# Initialize Class
model = LpProblem("Loading Truck Problem",
LpMaximize)
# Define Decision Variables
x = LpVariable.dicts('ship_', prod,
cat='Binary')
# Define Objective
model += lpSum([prof[i]*x[i] for i in prod])
# Define Constraint
model +=
lpSum([weight[i]*x[i] for i in prod]) <= 20000
model += x['E'] + x['D'] <= 1
# Solve Model
model.solve()
for i in prod:
print("{} status {}".format(i, x[i].varValue))
Khối lượng tối đa 20.000 lb
| Sản phẩm | Giao hay không |
|---|---|
| A | Không |
| B | Không |
| C | Có |
| D | Có |
| E | Không |
| F | Có |
Kết quả
Nếu chọn sản phẩm D thì phải chọn cả sản phẩm B.
model += x['D'] <= x['B']prod = ['A', 'B', 'C', 'D', 'E', 'F'] weight = {'A':12800, 'B':10900, 'C':11400, 'D':2100, 'E':11300, 'F':2300} prof = {'A':77878, 'B':82713, 'C':82728, 'D':68423, 'E':84119, 'F':77765} # Initialize Class model = LpProblem("Loading Truck Problem", LpMaximize) # Define Decision Variables x = LpVariable.dicts('ship_', prod, cat='Binary')
# Define Objective
model += lpSum([prof[i]*x[i] for i in prod])
# Define Constraint
model +=
lpSum([weight[i]*x[i] for i in prod]) <= 20000
model += x['D'] <= x['B']
# Solve Model
model.solve()
for i in prod:
print("{} status {}".format(i, x[i].varValue))
Khối lượng tối đa 20.000 lb
| Sản phẩm | Giao hay không |
|---|---|
| A | Không |
| B | Có |
| C | Không |
| D | Có |
| E | Không |
| F | Có |
Kết quả
| Ràng buộc logic | Ràng buộc |
|---|---|
| Nếu chọn mục _i_ thì cũng phải chọn mục _j_. | x$_{i}$ - x$_{j}$ ≤ 0 |
| Chọn một trong hai mục _i_ hoặc _j_, nhưng không đồng thời. | x$_{i}$ + x$_{j}$ = 1 |
| Nếu chọn mục _i_ thì không chọn mục _j_. | x$_{i}$ - x$_{j}$ ≤ 1 |
| Nếu không chọn mục _i_ thì không chọn mục _j_. | -x$_{i}$ + x$_{j}$ ≤ 0 |
| Tối đa một trong các mục _i_, _j_, _k_ được chọn. | x$_{i}$ + x$_{j}$ + x$_{k}$ ≤ 1 |
Phân tích Chuỗi Cung Ứng với Python