在内部点求解器中,我们可以将统一约束设置为x1 + x2 + x3 + x4 = 1可以设置约束,例如0.10 <= x1 + x3> = 0.80和0.20 <= x2 + x4> = 0.50

时间:2019-04-30 13:29:07

标签: mathematical-optimization portfolio

在内部点求解器中,我们可以设置x1 + x2 + x3 + x4 = 1的单位约束,可以使用setcoefficient设置0.10 <= x1 + x3> = 0.80和0.20 <= x2 + x4> = 0.50的约束。 / p>

请提供示例以设置权重边界在扇区和安全性两个级别上的约束。

https://csharp.hotexamples.com/examples/-/InteriorPointSolver/AddRow/php-interiorpointsolver-addrow-method-examples.html

我们为Markowitz模型使用了InteriorPointSolver的代码,它已解决了最小化或最大化安全性的问题。 但是我们不能对所有证券的某些子集的总和设置设限。 我们尝试使用Setcoefficient设置约束,但是它不起作用。请提供样品

1 个答案:

答案 0 :(得分:1)

这是一个看起来很奇怪的约束。

0.10 <= x1+x3 >= 0.80

可以重述为

x1+x3 >= 0.10 
x1+x3 >= 0.80 

或者只是

x1+x3 >= 0.80 

不流汗!


如果发帖人的真实意思是:

0.10 <= x1+x3 <= 0.80

(它总是有助于重读您的问题!),我们可以这样写:

x1+x3 >= 0.10
x1+x3 <= 0.80

这很容易实现。

如果求和的长度很长:

0.10 <= x1+x2+x3+... <= 0.8

有一个更好的方法:

y in [0.1,0.8]     (extra variable with lower and upper bounds)
y = x1+x2+x3+...   (single equality constraint)

这防止了模型中两次长求和。基本上,我们创建了一个额外的变量,但保存了约束和相应的非零系数。


当然,Microsoft Solver Foundation不应在实际项目中使用:它已于2012年停产。