[英]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,如下圖所示。
誰能告訴我,這里出了什么問題,我該怎么辦? 先感謝您!
您聲明“正確答案應該是 y = 0.014285”,但您已使用以下命令將 y 變量聲明為 integer:
y = mdl.integer_var(lb = 0, ub=inf, name='y')
嘗試先修復它。 如果您的 model 和結果仍然存在問題,請使用一些“標准”model 調試方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.