线性规划:如何使用多个约束实现?

时间:2015-10-08 14:30:28

标签: linear-programming

我正在尝试解决线性编程模型并需要一些帮助。我不是编程专家,但从概念上讲,我可以提出问题并希望能够帮助实现它。

我正在从理论的角度研究投资组合的资产配置问题,但为了简化这篇文章,我将使用通用术语。

我有500多个选项的列表,这些选项都有指定的成本和增值。我的目标是最大化增值的总和,因为我可以花多少钱。这500个选项分为5个类别,每个类别可以有多少选择限制。

第1类= 1

第2类= 1

第3类= 2或3

类别4 = 1或2

第5类= 2

第3类+第4类= 4

我认为我需要使用附加到每个选项的二进制X变量,1意味着我选择了这个选择,而0则不是这样,最后应该有8个变量有1个,其余的有一个在给定每个选项的成本约束的情况下,0值导致最大值增加。

我最终希望能够运行并说出例如“什么是第n个最高值”,所以不是获得最大值添加,而是可以得到第二个最高值add等等。

这是可能的,最适合的软件/语言是什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

为了简化所有内容,我们假设您有15个资产,其中包含增值v_1, v_2, ..., v_15和费用c_1, c_2, ..., c_15。假设资产1,2和3属于类别1,资产4,5和6属于类别2,资产7,8和9属于类别3,资产10,11和12属于类别4,资产13,14和15属于类别5.最后,我们假设预算B。

我们会创建二进制变量x_1, x_2, ..., x_15来表明我们是否购买了每项资产。现在,我们的整数程序的目标函数是:

max v_1*x_1 + v_2*x_2 + ... + v_15*x_15

我们的预算约束是:

c_1*x_1 + c_2*x_2 + ... + c_15*x_15 <= B 

第1类中的一个选择:

x_1 + x_2 + x_3 = 1

第2类中的一个选择:

x_4 + x_5 + x_6 = 1

第3类中的2或3个选项:

x_7 + x_8 + x_9 >= 2
x_7 + x_8 + x_9 <= 3

第4类中的1或2个选项:

x_10 + x_11 + x_12 >= 1
x_10 + x_11 + x_12 <= 2

第5类中只有2个选择:

x_13 + x_14 + x_15 = 2

第3类和第4类的4种选择合并:

x_7 + x_8 + x_9 + x_10 + x_11 + x_12 = 4

最后,您将所有变量指定为二进制。

请注意,您需要对问题进行的唯一调整是将每个约束中的变量更改为与您的五个类别相关联的变量。

剩下的就是实施模型。所有主要语言都有无数的线性编程包;查看this survey了解详情。由于Stack Overflow不是软件推荐网站,并且您没有真正提供有关您的情况的任何详细信息(例如,免费解决方案或您正在使用的编程语言),我将不会建议特定的包。< / p>