可以使用声明为不同功能的 2 个变量来实现优化约束吗?
Can an optimization constraint be implemented with 2 variable that declared with different feature?
我的目标是使用 doxplex.mp.model 和 Python API 编写以下约束:
P[t,j] >= s[t-j+1] - sum(s[k=t-j+2] from k to t) 对于 t = 1,....,N, j = 1, ...,t
我的代码。
from docplex.mp.model import Model
clsp = Model(name = 'capacitated lot sizing problem')
no_of_period = 8
period_list = [t for t in range(1, no_of_period+1)]
s_indicator = clsp.binary_var_dict(period_list, name = 's_indicator')
p_indicator = clsp.binary_var_matrix(period_list, period_list, name = 'p_indicator')
m_8 = clsp.add_constraints(p_indicator[t,j] >= s_indicator[t-j+1] - clsp.sum(s_indicator[t-j+2] for j in range(1,t+1))
for j in t for t in period_list )
输出:Keyerror 0
如有任何帮助,我们将不胜感激
您的代码摘录不正确 Python(对于 j in t)。我不得不修改它以使其成为 运行:
m_8 = clsp.add_constraints\
(p_indicator[t,j] >= s_indicator[t-j+1] - clsp.sum(s_indicator[t-j+2] for j in range(1,t+1))
for j in period_list for t in period_list )
这给了 ma KeyError: 9
异常。
要解决此问题,请记住 binary_var_matrix
创建了一个 Python 字典,其键是第一个参数,此处 period_list,范围从 1 到 8。
为了对此进行调查,我编写了这段小代码来调查您的代码生成的所有可能的密钥:
ke = 0
for t in period_list:
for j in period_list:
ix = t-j+2
if ix not in period_list:
ke += 1
print(f"** Key error[{ke}], t={t},j={j}, t-j+2={t-j+2}")
打印 22 个键错误,例如 t=8, j=1
计算 (t-j+2)=9
,它在字典键集之外。
总而言之:检查您的索引 w.r.t 模型中变量字典的键。
我的目标是使用 doxplex.mp.model 和 Python API 编写以下约束: P[t,j] >= s[t-j+1] - sum(s[k=t-j+2] from k to t) 对于 t = 1,....,N, j = 1, ...,t
我的代码。
from docplex.mp.model import Model
clsp = Model(name = 'capacitated lot sizing problem')
no_of_period = 8
period_list = [t for t in range(1, no_of_period+1)]
s_indicator = clsp.binary_var_dict(period_list, name = 's_indicator')
p_indicator = clsp.binary_var_matrix(period_list, period_list, name = 'p_indicator')
m_8 = clsp.add_constraints(p_indicator[t,j] >= s_indicator[t-j+1] - clsp.sum(s_indicator[t-j+2] for j in range(1,t+1))
for j in t for t in period_list )
输出:Keyerror 0 如有任何帮助,我们将不胜感激
您的代码摘录不正确 Python(对于 j in t)。我不得不修改它以使其成为 运行:
m_8 = clsp.add_constraints\
(p_indicator[t,j] >= s_indicator[t-j+1] - clsp.sum(s_indicator[t-j+2] for j in range(1,t+1))
for j in period_list for t in period_list )
这给了 ma KeyError: 9
异常。
要解决此问题,请记住 binary_var_matrix
创建了一个 Python 字典,其键是第一个参数,此处 period_list,范围从 1 到 8。
为了对此进行调查,我编写了这段小代码来调查您的代码生成的所有可能的密钥:
ke = 0
for t in period_list:
for j in period_list:
ix = t-j+2
if ix not in period_list:
ke += 1
print(f"** Key error[{ke}], t={t},j={j}, t-j+2={t-j+2}")
打印 22 个键错误,例如 t=8, j=1
计算 (t-j+2)=9
,它在字典键集之外。
总而言之:检查您的索引 w.r.t 模型中变量字典的键。