ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 342|回复: 10

[求助] 平均分箱问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-7-13 15:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教大神:

工作重要安排装集装箱。请问如何比较均匀的分箱,例如
货物,数量(件) ,单重(KG),可拆分
A, 40 , 480,Y
B,   80,   1520,Y
C,  44,   635,  Y
D,  7,   8960,  Y
E,160, 10.6,  N

要求:
假设集装箱的可装重量一定,在20,000KG以下
1)用最少的箱数
2)每个集装箱尽可能种类少(能不拆分货物就不要拆分,同种货物尽可能装同一箱)
3)集装箱重量尽可能均匀



TA的精华主题

TA的得分主题

发表于 2023-7-14 08:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我想到一个思路,想考虑不能拆分的装箱,再考虑能拆分的。
能拆分的,总重量从小到大装箱,因为总重量小的,拆分的几率小,这样能保证同一种货物尽可能在一个集装箱内。

TA的精华主题

TA的得分主题

发表于 2023-7-14 08:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
要求比别那么高,能够分出来就算不错了,还要最优,难啊!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-16 22:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-16 22:41 | 显示全部楼层
我想第一步应该是先算出箱数:
N=int(总重量/20,000)+1
然后得到没想平均重量m=总重量/N
根据平均重量,剔除每种产品可以装整柜的部分,然后再分配剩余不足一个柜的货物

TA的精华主题

TA的得分主题

发表于 2023-7-17 10:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这种问题交给Chat-GPT就行了,以下回答由GPT4.0模型提供

根据给出的条件,我们可以采取以下策略来均匀地分箱:

首先,我们将无法拆分的货物E放入单独的箱子中。由于每个集装箱最多能装20000kg,货物E的总重量为1696kg(10.6kg * 160),属于可容纳范围内。

然后,我们根据货物的重量和可拆分性进行分析和安排。

对于可拆分的货物A、B、C和D,我们需要将它们拆分成适当的重量,并尽可能装在同一箱子中。

首先,考虑货物D,由于其重量较大,我们可以将每个箱子中的货物D数量控制在一个较低的水平,以确保每个箱子的重量均衡。根据重量限制20000kg,我们可以将每个箱子中的货物D数量设置为1个,重量为8960kg。

接下来,我们将考虑货物B,由于其重量为1520kg,可以适当拆分。根据重量限制20000kg,我们可以将每个箱子中的货物B数量设置为13个,重量为19760kg(1520kg * 13)。

然后,我们考虑货物C,重量为635kg,可以拆分。根据重量限制20000kg,我们可以将每个箱子中的货物C数量设置为31个,重量为19685kg(635kg * 31)。

最后,我们将考虑货物A,重量为480kg,可以拆分。根据重量限制20000kg,我们可以将每个箱子中的货物A数量设置为41个,重量为19680kg(480kg * 41)。

综上所述,我们可以得出以下装箱方案:

第一个集装箱:
- 货物E:160个(总重1696kg)

第二个集装箱:
- 货物D:1个(8960kg)
- 货物B:13个(19760kg)
- 货物C:31个(19685kg)
- 货物A:41个(19680kg)

请注意,由于没有给出货物A、B和C的详细尺寸和特殊要求,以上仅是一种可能的分箱方案。在实际操作中,还需要考虑货物的体积、特殊包装需求等因素。

TA的精华主题

TA的得分主题

发表于 2023-7-17 17:56 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这种问题在实际解决中只有近似最优解,想要最优就只能暴力穷举,随着变量的增多,变化呈指数级增长。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-17 21:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-17 21:16 | 显示全部楼层
不过仙女的方案好像是用脑袋想出来的,我想要一个自动化方案

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-18 10:37 | 显示全部楼层
这是一个Python的均分方案,请哪位大神帮忙解释一下
import random
random.seed()

groups = 3

values = [random.randint(0, 1000) for i in range(100)]
values.sort(reverse=True)

load_balance_groups = [[] for grp in range(groups)]

for v in values:
    load_balance_groups.sort(key=lambda x: sum(x))
    load_balance_groups[0].append(v)

for per in load_balance_groups:
    print(sum(per))
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-15 15:31 , Processed in 0.040097 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表