PuLP求解器返回结果不满足约束条件的问题求助
生产规划优化问题:PuLP求解结果不满足约束
问题背景
我使用PuLP库求解生产规划优化问题,但求解器输出的最优解未满足代码中设定的约束条件,无法定位原因。
该优化问题的目标函数为:
$$f(p, e) = 20\sum_{0}^{12}s_i + 50\sum_{0}^{11}e[i]{p[i+1]-p[i]}$$
其中 $s_m = s_0 + \sum_{1}^{m}(p_m - d_m)$,$u[i]=\text{sign}(p[i+1]-p[i])$ 用于验证符号约束,$d$ 为给定的需求序列。
代码实现
def q(e, X, p0): # Constantes et données de l'énoncé mois = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] mois0 = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] e = {'1': e[0], '2': e[1], '3': e[2], '4': e[3], '5': e[4], '6': e[5], '7': e[6], '8': e[7], '9': e[8], '10': e[9], '11': e[10], '12': e[11]} # Définition du problème prob = LpProblem("Planification de la production", LpMinimize) # Définition des variables p = LpVariable.dicts("mois", mois0, 0) # Fonction objectif def lst_mois(m): L=[] for i in range(1, m+1): L.append(str(i)) return L prob += lpSum([20 * (s0 + lpSum([p[i] - d[i] for i in lst_mois(int(m))])) for m in mois0]) + lpSum([50 * e[i] * (p[i] - p[str(int(i)-1)]) for i in mois]), "Coût à constante près" # Contraintes for m in mois: prob += (s0 + lpSum([p[i] - d[i] for i in lst_mois(int(m))])) >= 0, m for i in mois: prob += e[i] * (p[i] - p[str(int(i)-1)]) >= 0, "Contrainte de signe "+i if X < np.inf: for i in mois: prob += p[i] <= X, "Coût maximal "+i prob += p['0'] == p0 # Résolution prob.solve() # On renvoie le résultat sous forme d'un tableau (indices = mois, valeur = volume à produire) production = [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] for v in prob.variables(): production[int(v.name[5])] = v.varValue print(prob.status) return production
调用参数与求解结果
调用参数:
d = {'0': 0., '1': 120, '2': 220, '3': 120, '4': 620, '5': 650, '6': 650, '7': 650, '8': 100, '9': 150, '10': 520, '11': 510, '12': 500} p0=600 s0=100 a = q([1,1,1,-1,-1,1,-1,1,1,1,1,1], np.inf, p0)
求解得到的生产序列:
[600.0, 466.25, 600.0, 600.0, 282.5, 282.5, 282.5, 282.5, 282.5, 282.5, 0.0, 0.0, 0.0]
经检查,该结果未满足代码中设定的第二个约束(符号约束 e[i] * (p[i] - p[str(int(i)-1)]) >= 0),请求帮助排查解决。
内容的提问来源于stack exchange,提问作者Jean1418
相关产品推荐
相关产品推荐

