为什么我的 CPLEX API 无法解决问题?
我已经在 CPLEX API 中编写了二次程序,但是当我尝试求解它时,模型没有执行任何操作。以下是代码:
import numpy as np
from docplex.mp.model import Model
# Model Design
COVID_19_QP_CPLEX_MODEL = Model() # Name of the model ('...Name... ') Optional
# Input Data
Days = 80
τ_min = 11
τ_max = 27
ζ_min = 10
ζ_max = 40
ζ_mode = 28
Ĉ = [7,16,23,33,42,49,55,59,63,68,72,77,81,87,90,95,100,106,112,115,119,123,127,129,132,136,140,143,145,149,152,156,160,163,166,170,174,179,183,187,192,197,201,206,210,215,218,222,227,231,234,238,243,247,252,257,260,265,271,277,282,287,291,296,301,305,311,316,322,328,333,340,344,350,355,362,368,373,379,386]
# Logistic Function Trial Values
K = 1000000
Q = 2000
λ = 0.5
v = 0.5
# Quadratic Program (NLP)
def I(t, K, Q, λ, v): # I(t) Equations Number (1 & 2)
return (K / (1 + Q * np.exp(-λ * t)) ** (1 / v))
def N(t, K, Q, λ, v): # N(t) Equations Number (3 & 4)
if t == 0:
return I(0, K, Q, λ, v)
else:
return I(t, K, Q, λ, v) - I(t - 1, K, Q, λ, v)
# Decision Variables
# Epsilon (Error) ε
ε = COVID_19_QP_CPLEX_MODEL.continuous_var_list(Days, name = 'ε')
# aj is the expected rate of individuals that die j days afer being infected (j = τmin, ... , τmax). Including Constraint Number 21 Bounding
a = COVID_19_QP_CPLEX_MODEL.continuous_var_list(τ_max, name = 'a' , lb = 0) # No need for ub
# bj represents the rate of individuals that recover j days afer being infected (j = rmin, ... ,rmax). Including Constraint Number 22 Bounding
b = COVID_19_QP_CPLEX_MODEL.continuous_var_list(ζ_max, name = 'b' , lb = 0) # No need for ub
# Constraint Number 17
COVID_19_QP_CPLEX_MODEL.add_constraints((sum(sum(a[j] * N(k - j, K, Q, λ, v) for j in range(τ_min, τ_max)) for k in range(Days)) - ε[t] == Ĉ[t]) for t in range(Days))
# Constraint Number 18
COVID_19_QP_CPLEX_MODEL.add_constraint(sum(a[j] for j in range(τ_min, τ_max)) + sum(b[j] for j in range(ζ_min, ζ_max)) == 1)
# Constraint Number 19
COVID_19_QP_CPLEX_MODEL.add_constraints(b[j - 1] <= b[j] for j in range(ζ_min + 1, ζ_mode))
# Constraint Number 20
COVID_19_QP_CPLEX_MODEL.add_constraints(b[j] >= b[j + 1] for j in range(ζ_mode, ζ_max - 1))
# Objective Function
Objective_Function = sum(ε[t]*ε[t] for t in range(Days))
# Setting Objective Function (Minimize)
COVID_19_QP_CPLEX_MODEL.set_objective('min', Objective_Function)
# Print Information
COVID_19_QP_CPLEX_MODEL.print_information()
COVID_19_QP_CPLEX_MODEL.solve()
# Print Solution
#print('Optimization is done. Objective Function Value: %.2f' % COVID_19_QP_CPLEX_MODEL.objective_value)
COVID_19_QP_CPLEX_MODEL.print_solution()
另外,如果我添加以下命令 -> print('优化完成。目标函数值: %.2f' % COVID_19_QP_CPLEX_MODEL.objective_value) 出现以下错误 -> docplex.mp.utils.docplexException:模型
I have written my quadratic program in the CPLEX API but when I try to solve it the model doesn't do anything. The following is the code:
import numpy as np
from docplex.mp.model import Model
# Model Design
COVID_19_QP_CPLEX_MODEL = Model() # Name of the model ('...Name... ') Optional
# Input Data
Days = 80
τ_min = 11
τ_max = 27
ζ_min = 10
ζ_max = 40
ζ_mode = 28
Ĉ = [7,16,23,33,42,49,55,59,63,68,72,77,81,87,90,95,100,106,112,115,119,123,127,129,132,136,140,143,145,149,152,156,160,163,166,170,174,179,183,187,192,197,201,206,210,215,218,222,227,231,234,238,243,247,252,257,260,265,271,277,282,287,291,296,301,305,311,316,322,328,333,340,344,350,355,362,368,373,379,386]
# Logistic Function Trial Values
K = 1000000
Q = 2000
λ = 0.5
v = 0.5
# Quadratic Program (NLP)
def I(t, K, Q, λ, v): # I(t) Equations Number (1 & 2)
return (K / (1 + Q * np.exp(-λ * t)) ** (1 / v))
def N(t, K, Q, λ, v): # N(t) Equations Number (3 & 4)
if t == 0:
return I(0, K, Q, λ, v)
else:
return I(t, K, Q, λ, v) - I(t - 1, K, Q, λ, v)
# Decision Variables
# Epsilon (Error) ε
ε = COVID_19_QP_CPLEX_MODEL.continuous_var_list(Days, name = 'ε')
# aj is the expected rate of individuals that die j days afer being infected (j = τmin, ... , τmax). Including Constraint Number 21 Bounding
a = COVID_19_QP_CPLEX_MODEL.continuous_var_list(τ_max, name = 'a' , lb = 0) # No need for ub
# bj represents the rate of individuals that recover j days afer being infected (j = rmin, ... ,rmax). Including Constraint Number 22 Bounding
b = COVID_19_QP_CPLEX_MODEL.continuous_var_list(ζ_max, name = 'b' , lb = 0) # No need for ub
# Constraint Number 17
COVID_19_QP_CPLEX_MODEL.add_constraints((sum(sum(a[j] * N(k - j, K, Q, λ, v) for j in range(τ_min, τ_max)) for k in range(Days)) - ε[t] == Ĉ[t]) for t in range(Days))
# Constraint Number 18
COVID_19_QP_CPLEX_MODEL.add_constraint(sum(a[j] for j in range(τ_min, τ_max)) + sum(b[j] for j in range(ζ_min, ζ_max)) == 1)
# Constraint Number 19
COVID_19_QP_CPLEX_MODEL.add_constraints(b[j - 1] <= b[j] for j in range(ζ_min + 1, ζ_mode))
# Constraint Number 20
COVID_19_QP_CPLEX_MODEL.add_constraints(b[j] >= b[j + 1] for j in range(ζ_mode, ζ_max - 1))
# Objective Function
Objective_Function = sum(ε[t]*ε[t] for t in range(Days))
# Setting Objective Function (Minimize)
COVID_19_QP_CPLEX_MODEL.set_objective('min', Objective_Function)
# Print Information
COVID_19_QP_CPLEX_MODEL.print_information()
COVID_19_QP_CPLEX_MODEL.solve()
# Print Solution
#print('Optimization is done. Objective Function Value: %.2f' % COVID_19_QP_CPLEX_MODEL.objective_value)
COVID_19_QP_CPLEX_MODEL.print_solution()
Also, if I add the following command -> print('Optimization is done. Objective Function Value: %.2f' % COVID_19_QP_CPLEX_MODEL.objective_value) the following error appears -> docplex.mp.utils.docplexexception: model<docplex_model1> did not solve successfully
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
添加
如果你在解决之后
所以你没有得到解决方案,因为模型不可行
如果你把你的目标函数变成非二次函数
,那么你可以得到一些放松,如果你写
if you add
after the solve you will see
So you do not get a solution because the model is not feasible
If you turn your objective function to non quadratic
then you could get some relaxation if you write