Python MIP 库 - 如何有效地施加二进制变量约束

问题描述 投票:0回答:0

非常感谢您阅读这篇文章并与我分享您宝贵的见解。

最近尝试用Python MIP库构建模拟投资组合。目标函数是最大化投资组合回报 - 权重 i x 资产回报 i 的总和。限制条件包括两个:1.北美投资数量应在45-39之间,2.欧盟投资数量应在12-9之间。

但是 MIP 库导致资产权重违反了两个约束。请查看快照中橙色突出显示的部分。 The resulting weights Violate the two constraints

我使用以下代码来施加约束。 na_dum (eu_dum) 是一个虚拟变量,如果投资属于北美(欧洲)则取 1,否则取 0: na_bool = [ m.add_var(var_type=BINARY) for i in range(numSecurities) ] eu_bool = [ m.add_var(var_type=BINARY) for i in range(numSecurities) ] m += xsum(weights[i] * na_dum[i] for i in range(numSecurities))<=na_sumweight_upper m += xsum(weights[i] * na_dum[i] for i in range(numSecurities))>=na_sumweight_lower m += xsum(weights[i] * eu_dum[i] for i in range(numSecurities))<=eu_sumweight_upper m += xsum(weights[i] * eu_dum[i] for i in range(numSecurities))>=eu_sumweight_lower

如果你能告诉我如何解决这个问题并有效地施加这两个约束,我将不胜感激。

如果你能告诉我如何解决这个问题并有效地施加这两个约束,我将不胜感激。

python optimization constraints mips
© www.soinside.com 2019 - 2024. All rights reserved.