注册 登录
编程论坛 VFP论坛

求助各位大师,一个算法问题

smshp 发布于 2021-03-12 09:53, 3970 次点击
一个数据表, 假如有N条记录,根据要求每8条一组,再根据一个百分比的字段的和不能大于1,
这样进行分组,分到最后假如没有8条记录了只要百分比字段不大于1就算一组,如果百分比字段
大于1就再分组。 哪位大师能帮组解决可以有偿解决,非常感谢!
24 回复
#2
smshp2021-03-12 10:04
一个数据表, 假如有N条记录,根据要求每8条一组,再根据一个百分比的字段的和不能大于1,
这样进行分组,分到最后假如没有8条记录了只要百分比字段不大于1就算一组,如果百分比字段
大于1就再分成2组,以此类推。 要求用VFP代码。哪位大师能帮组解决可以有偿解决,非常感谢!

#3
吹水佬2021-03-12 10:10
先来点感性的
给数据表看看
#4
smshp2021-03-12 10:10
添加数据表 大家可以参考一下
只有本站会员才能查看附件,请 登录
#5
smshp2021-03-12 10:18
这是一个装箱单问题,8条记录装一个箱子里,百分比和不大于1说明能装一箱,大于一就不能装一箱了,要分开装了。
8条记录组合好把箱号写入,例如简单可以写A1、 A2、 A3 等等
#6
smshp2021-03-12 10:21
版主吹水佬在关注了,非常感谢!
#7
吹水佬2021-03-12 14:29
以下是引用smshp在2021-3-12 10:18:59的发言:

这是一个装箱单问题,8条记录装一个箱子里,百分比和不大于1说明能装一箱,大于一就不能装一箱了,要分开装了。
8条记录组合好把箱号写入,例如简单可以写A1、 A2、 A3 等等

这样可否:
1、按“百分比”从高到低排
2、每一箱:记录数<=8 and 百分比和<=1


[此贴子已经被作者于2021-3-12 14:30编辑过]

#8
smshp2021-03-12 14:41
也是一种思路,但是这个范围太大了,一条记录就可以装一箱太浪费了,要接近或8条记录最好
#9
吹水佬2021-03-12 15:09
回复 8楼 smshp
确是,从高到低不是最优,要求箱数最少
#10
smshp2021-03-12 15:12
回复 9楼 吹水佬
是啊
#11
吹水佬2021-03-12 15:14
回复 10楼 smshp
试试用“贪心算法”,搜搜了解一下,应该不难理解。
#12
吹水佬2021-03-12 15:42
这个问题的最优化算法可能有点难度,如果数据量大可能会受到软硬件的限制,这是一个复杂的离散组合最优化问题。
#13
厨师王德榜2021-03-12 15:50
最近我也受相似问题的困扰,跟你的问题类似,勉强有一个算法,供你参考.
问题: 见附图
只有本站会员才能查看附件,请 登录

我自己写了一段很笨的代码,勉强算出来的结果:
只有本站会员才能查看附件,请 登录

为便于大家研究,附件 和代码 都 打包发上来:
只有本站会员才能查看附件,请 登录


我的算法存在的问题就是各箱体之间的重量值偏差大,有的箱很重,有的箱过轻.
箱子的总数量,我觉得已经是最小值了,再往上加的话,要么总重量超出,要么总订单数超出.
唯一想解决的问题,就是希望各箱之间的重量相对平衡.

[此贴子已经被作者于2021-3-12 16:17编辑过]

#14
smshp2021-03-12 16:45
回复 13楼 厨师王德榜
非常感谢厨师王德榜! 我好好学习一下,想最优化写代码很难我还在琢磨当中
#15
smshp2021-03-12 16:47
回复 11楼 吹水佬
贪心算法我也学习一下,谢谢
#16
mywisdom882021-03-12 17:33
把重量先按10个等级分类,然后,每个登记取1条数据,
#17
sdta2021-03-13 09:36
以下是引用smshp在2021-3-12 10:04:15的发言:

一个数据表, 假如有N条记录,根据要求每8条一组,再根据一个百分比的字段的和不能大于1,
这样进行分组,分到最后假如没有8条记录了只要百分比字段不大于1就算一组,如果百分比字段
大于1就再分成2组,以此类推。 要求用VFP代码。哪位大师能帮组解决可以有偿解决,非常感谢!

每8条一组,再根据一个百分比的字段的和不能大于1这是绝对标准吗  
#18
吹水佬2021-03-13 10:11
大概意思应该是:任意取不多于8条记录且百分比的和不大于1的组合,要求所有组合数最小的。
#19
sdta2021-03-13 11:22
18条记录说明不了问题,标本量太少了,应该尽可能的多,有不少关键问题楼主也没有说清楚,至于是什么关键问题,楼主心里最清楚。把问题说清楚,才能更好的解决问题。
#20
sdta2021-03-13 11:41
回复 18楼 吹水佬
记录条数 <= 8 AND 百分比之和 <= 1
符合这个条件就好装箱了
把表扫描一遍,问题应该能得到圆满解决
#21
schtg2021-03-13 18:13
@集装箱问题,我手工研究了一下数据,没有写出算法,这是我目前找到的最好组合,但不一定最优。
只有本站会员才能查看附件,请 登录
#22
吹水佬2021-03-13 18:23
以下是引用sdta在2021-3-13 11:41:46的发言:

记录条数 <= 8 AND 百分比之和 <= 1
符合这个条件就好装箱了
把表扫描一遍,问题应该能得到圆满解决

楼主要求优选算法,符合条件的装箱组合可能有多种,要求组合数最小,即装完的箱数最小。
#23
mywisdom882021-03-15 08:55
楼主的问题,还要有个条件
是优先满足:8条记录,重量小于尽量接近1?
是优先满足:重量接近1,记录数小于8
同时,总箱数最少
这3个条件不同,结果不同
#24
smshp2021-03-16 16:27
非常感谢各位老师! 该问题基本上已经解决了
#25
sdta2021-03-16 16:46
以下是引用smshp在2021-3-16 16:27:06的发言:

非常感谢各位老师! 该问题基本上已经解决了

能说下思路吗,让大家一起学习下!
1