Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Algorithm 将n个值拆分为m个组时避免明显代价高昂的组合的算法_Algorithm_Dynamic_Heuristics_Np_Simulated Annealing - Fatal编程技术网

Algorithm 将n个值拆分为m个组时避免明显代价高昂的组合的算法

Algorithm 将n个值拆分为m个组时避免明显代价高昂的组合的算法,algorithm,dynamic,heuristics,np,simulated-annealing,Algorithm,Dynamic,Heuristics,Np,Simulated Annealing,我有7个值,我需要将它们分成5组。每个组应至少包含一个值。有15种方法可以将这些值分成5组 星期一至十三 星期二-5 星期三-4 星期四至四 星期五至十一 Sat-2 太阳-1 分组时,应保留周一、周二、周三、周四、周五、周六、周日的顺序 假设有一个函数决定分组的好坏 13,5,4,4,11,2,1 功能 分组1-13,5,4,11,2,1] 增加13个,撤回13个,剩余0个 增加5个,撤回5个,剩余0个 [4,4]增加,4撤回,4剩余 增加0个,撤回4个,剩余0个 增加11个,撤销11个,剩余

我有7个值,我需要将它们分成5组。每个组应至少包含一个值。有15种方法可以将这些值分成5组

星期一至十三 星期二-5 星期三-4 星期四至四 星期五至十一 Sat-2 太阳-1

分组时,应保留周一、周二、周三、周四、周五、周六、周日的顺序

假设有一个函数决定分组的好坏

13,5,4,4,11,2,1

功能

分组1-13,5,4,11,2,1]

增加13个,撤回13个,剩余0个

增加5个,撤回5个,剩余0个

[4,4]增加,4撤回,4剩余

增加0个,撤回4个,剩余0个

增加11个,撤销11个,剩余0个

[2,1]增加,2撤回,1剩余

增加0个,撤回1个,剩余0个

成本=一天结束时剩余收入的总和=4+1=5

我需要找到成本最低的分组。有没有一种方法(例如:启发式方法)可以避免明显的高成本组合,这样我就不必尝试所有分组来找到成本最低的分组

明显昂贵组合的示例

13、[5,4]、[4,11]、2,1

一天结束时剩余的金额越大,分组的成本就越高

两周的实际预测数据


n/m可能小吗?我觉得如果平均组大小受到某种限制,这将是一个更容易的问题。n=7,但m可以是5,3或1。如果至少可以为m的一个值求解,这就足够了。所以,是的,请考虑n是7,m是5。订购MON,TE,WED,THU,FRI,SAT,Sun,应该保留。示例-13[5,4,4],11,2,1正确。但不是13,[5,4,4],2,11,1如果n总是只有7,我认为尝试组合是相当合理的。对于这样小的输入,一个合适的算法可能更糟糕。也许您可以排除最大数字位于最大组末尾的组合:)。或者,如果一个高于平均值的值位于最大组的末尾,则可能?即使保留顺序,对于7分为3和7分为5的每个组,也有15个组合。每周总共30种组合。一个月内,它是30*4=120个组合。如果我那样做不是要花很多时间吗?