使用bash或python(2.4.x)
aaaaa, 100
aaaab, 75
aaaac, 150
aaaad, 135
aaaae, 144
aaaaf, 12
aaaag, 5
aaaah, 34
aaaai, 11
aaaaj, 43
aaaak, 88
aaaal, 3
baaaa, 25
baaab, 33
baaac, 87
baaad, 111
baaae, 45
baaaf, 99
baaag, 71
baaah, 68
baaai, 168
baaaj, 21
baaak, 11
baaal, 47
caaaa, 59
caaab, 85
caaac, 77
caaad, 33
caaae, 44
caaaf, 16
caaag, 111
caaah, 141
caaai, 87
caaaj, 59
caaak, 89
caaal, 3
我想要做的是将它分成12列,每列具有大致相同数量的传感器,每列的总和接近相同.
换句话说,如果我采用上面的列表并将其拆分为这样.
aaaaa 100 aaaab 75 baaab 33
aaaai 11 baaah 68 baaac 87
aaaak 88 caaaa 59 caaac 77
199 202 197
aaaah 34 baaaf 99 caaad 33
baaad 111 baaal 47 aaaac 150
aaaaj 43 caaae 44 caaaf 16
188 190 199
aaaag 5 aaaaf 12 baaaa 25
aaaad 135 caaai 87 caaag 111
caaaa 59 caaak 89 baaag 71
199 188 207
aaaae 144 baaaj 21 caaaj 59
aaaal 3 baaak 11 caaah 141
baaae 45 baaai 168 caaal 3
192 200 203
它产生12列相同的项目,非常接近均值.
我可以手动完成,但我们最终需要这样做几次.我甚至不确定从哪里开始除了把它变成一个数组,计算数组中的项目并进行随机分割.仍然坚持价值平衡.
有什么指针吗?
解决方法:
如果您想要最佳解决方案,这对于大型输入来说并不会很有趣.你正在寻找一些与CS-Knapsack,Bin Packing之类的一些非常着名的难题相符合的东西.一些更简单,不太完美的解决方案可能足够接近.
这不是确切的,但是,根据您的示例数据集,我设法通过一种非常简单的方法获得214,197,194,199,205,182,195,192,199,199,206,208的大小.它可能适用于也可能不适用于实际数据.
方法是:
>按大小排序列表
>将列表拆分为3个部分 – 高,中和低
>将每个成员置于一个集合中.
>反向中低列表.
>将它们(按相反顺序)放入现有的集合中
当您接近最佳分区时,解决方案可能会变得更加复杂.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。