优化问题(一般)/ / nchoosek优化

2视图(30天)
你好,
我新的优化在Matlab和优化(只有在大学基础),所以我不寻找一个确切的code-solution(我认为这个项目将很难解决几步骤)。我在寻找什么,是一般的优化方法和具体的建议
我的问题如下:
  1. 我有一个表或细胞与特点在每一行条目:“Name_1”、“Number_1”(0 - 70之间的一个整数)、“Number_2”(3000 - 12000年之间的另一个整数)。我想解决每一个问题,我有40 - 80行/问题。
  2. 我的问题如下:我需要确切的8名“Name_1”列。从第二列是一个,我想要最大化。唯一约束我有:第三列的总和(3000 - 12000之间的整数)必须低于或等于50000。在练习中,不会有一个最优解,sum-value低于48000。
  3. 完美的解决方案也将返回最优解越少。所以我的完美的输出将是一个细胞包含100 - 200条目。每个条目包含8名。第一个是最佳的,第二个有点少最佳....
我已经试图解决这个nchoosek和一些排序方法,但与80年选择8(280亿)这不是一个实际的解决方案。- >我发现我必须使用一个优化方法。有人有一个matlab函数可能是有用的建议吗?或一般优化方法可能是有用的吗?
我期待着你的答案。
亲切的问候,
基督教

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2019年3月26日
编辑:沃尔特·罗伯森 2019年3月26日
如果你有一个更新的版本,您可以使用类似于具体问题具体分析优化 //www.tianjin-qmedu.com/help/optim/examples/office-assignments-by-binary-integer-programming.html
你的f将 你的第二列,安排一个向量。
你的intcon是1:number_of_rows
你将有一个行第三列的值,作为行安排。相应的条目是50000。
你Aeq是将一行的人(1,number_of_rows),与相应的beq条目8(所以完全8变量打开。)
你的磅会0 (1,number_of_rows)。你的乌兰巴托的(1,number_of_rows)。
你会使用一个二进制变量原始数据,每一行的值0是不选择和价值1被选中。Aeq beq组合确保选择8。b组合确保第三列的总和所选的元素是< = 50000
上面(试图)会让你最优的解决方案。为最优解,使用一个选择结构,使用Outpu万博 尤文图斯tFcn“savemilpsolutions”。这将创建xIntSol在工作区中,每一列是一个可行的解决方案。你可以做一个适当的矩阵乘法由f矩阵来计算价值相关的解决方案;按照升序进行排序,得到良好的价值观越来越少。记住这些值将会负你寻找的东西:你找到极大值通过最小化系统的负面。
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年3月31日
只使用
(3000 5500 3000 3000 7100。等
0 1 1 1 0。等
0 1 1 0 0
]
b = [5500;1;1;1;1;1);
它是正确的,你有重叠的类别吗?第二个名字是第一和第二类别?
你的第四行1 + 0矩阵显示所有0;你不应该最后一排所有0这样的约束。

登录置评。

更多的答案(0)

类别

找到更多的在开始使用优化工具箱帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!