You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:14:51