簡體   English   中英

CPLEX 未提供預期結果

[英]The CPLEX does not provide the expected result

我正在使用 python CPLEX 庫為標記優化問題開發 python 代碼。 這是數學方程。

標記優化數學方程

這是 python 代碼(我對每個代碼用各自的數學方程用# 給出注釋)

import cplex
from docplex.mp.model import Model
import numpy as np

mdl = Model(name='Marking Optimization')
inf = cplex.infinity


n = 2 
A = np.array([1,2])

p = np.array([40,100]) 
c = np.array([20,100])
v = 3 
w = 5 
m = np.array([1,3])


y = mdl.integer_var(lb = 0, ub=inf, name='y')

z = np.empty((n,), dtype= object)
for i in range(n):
    z[i] = mdl.integer_var(lb = 0, ub=inf, name='z' + str(i + 1))

#constraint 15
mdl.add_constraint(1 >= y*(n+1)*(2*v + 2*w))

#constraint 16
for i in range(n):
    mdl.add_constraint(1 >= y*1/m[i]*(p[i] + c[i] + 2*w))

#constraint 17
for i in range(n):
    mdl.add_constraint(m[i] - z[i] >= y*(p[i] + 3*v + 4*w))

#constraint 18

for i in range(len(A)):
    mdl.add_constraint((1 + z[i] >= y*((n+1 -2*(len(A)))*(2*v + 2*w) + (2*w+v+c[i]))))
   

#constraint 19A
for i in range(n):
    mdl.add_constraint(0 <= z[i])

#constraint 19B
for i in range(n):
    mdl.add_constraint(z[i] <= m[i] -1)

#equation 14
mdl.maximize(y)
mdl.print_information()
solver = mdl.solve() #(log_output=True)
if solver is not None:
    mdl.print_solution()
else:
    print("Solver is error")

當我運行程序時,結果與預期不符。 正確答案應該是 y = 0.014285,z1 = 0 和 z2 = 1。但是代碼的結果是 0,如下圖所示。

來自 Pycharm 的結果

誰能告訴我,這里出了什么問題,我該怎么辦? 先感謝您!

您聲明“正確答案應該是 y = 0.014285”,但您已使用以下命令將 y 變量聲明為 integer:

y = mdl.integer_var(lb = 0, ub=inf, name='y')

嘗試先修復它。 如果您的 model 和結果仍然存在問題,請使用一些“標准”model 調試方法:

  • 嘗試將生成的 model 從 CPLEX 輸出到 LP 文件中。 該格式可讀性很強,您可以檢查您實際創建的 model 是否與您打算創建的一致。
  • 添加一些約束以將部分或全部決策變量的值固定為已知值,然后再次運行 model 以查看這些值是否可行以及它們為您提供的客觀值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM