Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中带有score的特殊组合_Java_Algorithm_Combinations_Graph Algorithm - Fatal编程技术网

Java中带有score的特殊组合

Java中带有score的特殊组合,java,algorithm,combinations,graph-algorithm,Java,Algorithm,Combinations,Graph Algorithm,我有k个调用epoch的时间间隔(例如Epoch1、Epoch2、…、Epochk)。我有一组n个元素(例如a,B,C,D,e,F) 我必须为每个历元分配一个powerset元素,但powerset中的每个元素都有一个分数 这取决于时代 例如,Epoch1中的A得分为5,但Epoch2中的A得分为4 我需要为所有历元分配一个powerset元素,但存在一个问题。我有另一个全局分数,它是所有历元分数的总和减去相邻历元之间的变化数乘以一个参数lambda 例如,如果我有: Epoch1 = AB w

我有k个调用epoch的时间间隔(例如Epoch1、Epoch2、…、Epochk)。我有一组n个元素(例如a,B,C,D,e,F)

我必须为每个历元分配一个powerset元素,但powerset中的每个元素都有一个分数 这取决于时代

例如,Epoch1中的A得分为5,但Epoch2中的A得分为4

我需要为所有历元分配一个powerset元素,但存在一个问题。我有另一个全局分数,它是所有历元分数的总和减去相邻历元之间的变化数乘以一个参数lambda

例如,如果我有:

Epoch1 = AB with score 5;
Epoch2 = A with score 6;
Epoch3= C with score 4
我在Epoch1和Epoch2之间有一个变化(删除B),在Epoch3和Epoch2之间有两个变化(删除A和添加c),那么全局分数是6+5+4-3*lambda

由于这个原因,我无法获得每个时代的最大值。 一种解决方案是进行所有组合,但如果| S |=30,| powerset(30)|=2^30,我想我们有重复的C'(2^30,k)组合


有一种方法可以在不计算所有组合的情况下获得最大值?

我的想法是找到局部最优值的算法:

将历元配置视为一个长字符串,然后使用遗传算法找到配置的局部最优值

我觉得你把问题弄得太难了,而不是把问题看成“找到集合E1{A,B,C…},E2{…}等的最佳集合,把所有的东西都看成一个大集合E{A1,B1,A2,C3},然后试着在那个空间上找到最大值。正如我所说的,遗传算法可能行得通


如果变量和分数之间的关系可以用这种方式来表示,也许你可以用这种方式对其进行建模。如果你可以用这种方式对其进行建模,那么你就可以得到一个全局最优的结果。不过,我不能在建模方面提供更多帮助,因为你没有说你是如何计算的ute历元分数。

如何计算每个历元的S子集的分数?当然,不只是给你2^30*(历元数)值。如果这些值中有一些系统,也许会有助于找到一个有效的解决方案。问题是我需要全局最优的结果。我可以通过每个时代的最大分数找到一个局部最优。计算分数考虑一个复杂的参数,我无法用简单的方式在这里解释。为什么把所有东西都看作一个大集合更简单吗?也许我理解错了。当你有很多变化时,你的分数会降低,那么你怎么能确定每个历元的最大分数是局部最优的呢?把所有的东西都看作一个集合是非常简单的,因为不是n个评分函数,你最终得到的是一个(虽然可能更复杂).我想这是一个品味的问题,但是使用遗传算法会更容易,因为你可以将你的历代序列建模为一个二进制字符串,你可以直接填充到你的算法中。是的,如果我有更多的变化,所有历代的全局分数都会下降。但是使用遗传算法,我可以得到比局部ma更好的结果每次的xima?我在哪里可以用这种算法获得更多的信息?我想,在这些条件下,追求全局最大值,是不是可能?我不想说这是不可能的,但我想有很多局部最优值,所以可靠地找到全局最优值可能是不可能的。像遗传算法之类的算法不过,算法或模拟退火有助于避开局部最优解(我对这些算法没有太多经验)