Docplex Python规划模型问题求助(毕业设计使用)
Docplex优化模型约束与目标函数问题排查求助
我正在为毕业设计开发基于Docplex的Python优化模型,使用环境如下:
- 编译器:Visual Studio 1.84.2
- Python版本:3.10.1
- CPLEX版本:12.8
目前无法定位代码中的问题,已尝试调整变量声明、咨询AI生成工具,但均未解决。代码的约束条件与目标函数存在逻辑问题,恳请帮助排查解决。相关代码如下:
from statistics import mode from unicodedata import name from docplex.mp.model import Model model=Model('PFE') Nroutes=1 routes=range(1,Nroutes) Noperations=4 operations=range(1,Noperations) Nproducts=2 products=range(1,Nproducts) Nressources=4 ressources=range(1,Nressources) Nlocations=3 locations=range(1,Nlocations) temp_sum = model.continuous_var(name='temp_sum') ic= 5000 c= [5000, 5000, 5000, 5000] ct=100 K= 3 B= [ [ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ], [ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ] ] Q=552000 a=[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ] D=[1000, 1000] d=[ [0, 10, 10], [10, 0, 10], [10, 10, 0] ] e=[ [ [ [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [ [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0, 0], [0, 0, 0, 0]] ] ] # 决策变量 y=model.binary_var_matrix(locations,ressources, name='y') x=model.binary_var_dict(locations,name='x') z=model.binary_var_dict(locations, ressources,locations,ressources,name='z') f=model.continuous_var_matrix(products,routes,name='f') v=model.continuous_var_dict(operations,ressources,operations,ressources,products,routes, name='v') # 约束条件 for l in locations: model.add_constraint(model.sum(y[l,r] for r in ressources )<=K*x[l]) for r in ressources: model.add_constraint(model.sum(y[l,r])<=1) for l in locations: for r in ressources: for L in locations: for s in ressources: model.add_constraint(z[l,r,L,s]<=y[l,r]) for l in locations: for r in ressources: for L in locations: for s in ressources: model.add_constraint(z[l,r,L,s]<=y[L,s]) for l in locations: for r in ressources: for L in locations: for s in ressources: model.add_constraint(z[l,r,L,s]>=y[l,r]+y[L,s]-1) for s in ressources: model.add_constraint(model.sum(v[o,r,q,s,p,n]*B[p,s,q] for n in routes for p in products for r in ressources for o in operations)<=Q) for s in ressources: for q in operations: model.add_constraint(model.sum(v[o,r,q,s,p,n] for n in routes for p in products for r in ressources for o in operations)<=a[s,q]*model.sum(y[l,s] for l in locations)*model.sum(D[p] for p in products)) for o in operations: for q in operations: for p in products: for n in routes: model.add_constraint(model.sum(v[o,r,q,s,p,n] for s in ressources)== f[p,n]*e[n,p,p,q]) for p in products: model.add_constraint(D[p]==model.sum(f[p,n] for n in routes)) for q in operations : for s in ressources: for p in products: for n in routes: model.add_constraint(model.sum(v[o,r,q,s,p,n] for r in ressources for o in operations)==model.sum(v[q,s,u,t,p,n] for t in ressources for u in operations)) # 目标函数 fct_obj=model.sum(x[l] for l in locations) * ic + model.sum(y[l,r]*c[r] for l in locations for r in ressources) + model.sum(z[l,r,L,s]*d[l,L] for p in products for r in ressources for s in ressources for l in locations for L in locations)*ct* model.sum(v[o,r,q,s,p,n] for o in operations for q in operations for n in routes) model.set_objective('min',fct_obj) model.solve()
我已尝试修改变量声明,但无效果,核心问题集中在约束条件和目标函数的逻辑错误上。
内容的提问来源于stack exchange,提问作者El Hadi Mohieddine Terki Hassa
相关产品推荐
相关产品推荐

