【发布时间】:2013-03-04 16:12:40
【问题描述】:
我遇到了一个问题,我会感谢任何可以提供帮助的人。问题如下:
假设我们有一个向量D = [D1;D2;D3;...;DN] 和一组时间实例TI = {t1,t2,t3,...,tM}。向量D、Di 的每个元素对应于TI 的一个子集。例如D1 可以对应于时间实例{t1,t2,t3} 和 D2 对应于{t2,t4,t5}。
我想找到与TI 的所有元素相对应的D 的元素组合,其中任何一个都不会被多次考虑,同时最小化成本函数sum(Dj) . Dj 是向量 D 的元素,每个元素对应一组时间实例。
让我举个例子。让我们考虑一个向量
D = [15;10;5;2;35;15;25;25;25;30;45;5;1;40]
还有一套
TI={5,10,15,20,25,30}
每个D元素对应
{[5 15];[5 20];[5 25];[5 30];[5 15 20];[5 20 25];[5 15 30];[5 20 25 30];[10 15];[10 20];[10 25];[10 15 20];[10 15 20 25];[10 30]}
分别,例如D(1)=15 对应时间实例 [5 15]。
程序必须提出的解决方案是 D(4) 和 D(12) 的组合,即分别为 2 和 1,具有最小和并对应所有时间实例。
我不得不提到,该过程必须能够处理大向量。
感谢您的每一次帮助!
【问题讨论】:
-
我的方法如下:我开始使用 combntns 函数,我正在尝试 D 元素的几种组合。之后,我检查所有时间实例都考虑了哪些组合,没有考虑任何组合两次。然后我将与最小总和的组合作为解决方案。我的问题是我的方法真的很慢,我正在寻找可以使程序更快的不同方法。
-
使用matlab的
bintprog -
我刚通过。如果我错了,请纠正我,但这就是我的想法:你有一组时间实例。然后你有一组它的一些子集,每个子集都有一个权重。然后你想以最低的成本重建整个集合?
-
@DedekMraz 并且权重应该是二进制的。
-
@Shai 您能否详细说明一下,因为我对 bintprog 的实现不是很清楚。谢谢。
标签: matlab combinations minimize