我有以下约束:
sum of (between p = 0 to p = 2) of X_sap <= A_sa
我的课程是:
# s
site_classes = [1, 2]
# a
age_classes = [1, 2, 3]
# p
period_classes = [0, 1, 2]
age_areas = {1: {'age_range': '0to10', 1: 3000, 2: 8000},
2: {'age_range': '11to20', 1: 6000, 2: 4000},
3: {'age_range': '21to30', 1: 9000, 2: 7000}}
我的树液定义如下:
sap = []
for s in site_classes:
for a in age_classes:
for p in period_classes:
sap.append(f'{s}_{a}_{p}')
以下是我创建 X_sap 的方式:
x_vars = lp.LpVariable.dicts("X", sap, lowBound=0, cat='Continuous')
这是我创建区域约束的方式
area_c_dict = {}
for s in site_classes:
for a in age_classes:
for p in period_classes:
area_c_dict[f'{s}_{a}_{p}'] = age_areas[a][s]
我正在努力以这种方式生成对输出的约束
X110 + X111 + X112 <= 3,000
X120 + X121 + X122 <= 6,000
X130 + X131 + X132 <= 9,000
X210 + X211 + X212 <= 8,000
X220 + X221 + X222 <= 4,000
X230 + X231 + X232 <= 7,000
我输出的变量是
area_c_dict = {'1_1_0': 3000, '1_1_1': 3000, '1_1_2': 3000, '1_2_0': 6000, '1_2_1': 6000, '1_2_2': 6000, '1_3_0': 9000, '1_3_1': 9000, '1_3_2': 9000, '2_1_0': 8000, '2_1_1': 8000, '2_1_2': 8000, '2_2_0': 4000, '2_2_1': 4000, '2_2_2': 4000, '2_3_0': 7000, '2_3_1': 7000, '2_3_2': 7000}
x_vars = {'1_1_0': X_1_1_0, '1_1_1': X_1_1_1, '1_1_2': X_1_1_2, '1_2_0': X_1_2_0, '1_2_1': X_1_2_1, '1_2_2': X_1_2_2, '1_3_0': X_1_3_0, '1_3_1': X_1_3_1, '1_3_2': X_1_3_2, '2_1_0': X_2_1_0, '2_1_1': X_2_1_1, '2_1_2': X_2_1_2, '2_2_0': X_2_2_0, '2_2_1': X_2_2_1, '2_2_2': X_2_2_2, '2_3_0': X_2_3_0, '2_3_1': X_2_3_1, '2_3_2': X_2_3_2}
对于我如何实现这一目标,我们将不胜感激。我不知道如何循环通过我的 x_vars 而不会破坏它