兄弟萌,这种场景比较类似于哪一种算法模型?

2023-07-04 09:12:01 +08:00
 leegradyllljjjj
一个 8 层 2 列的货架,货物零星散落在某些货位上,货架上有某些空货位,怎么样通过调整把重的货物尽量通过这些空货位中转以便把货架的重心降到最低?
1857 次点击
所在节点    程序员
17 条回复
leegradyllljjjj
2023-07-04 09:18:58 +08:00
dayeye2006199
2023-07-04 09:19:19 +08:00
非线性整数优化(取决于重心是怎么算的)

不追求最优的话,建议整个遗传算法什么的,算个几步给个最好的结果就行
paopjian
2023-07-04 09:20:00 +08:00
16 个背包,每 2 个给个系数,按背包问题算最后得到的最大总数?
chengrui0428
2023-07-04 09:22:32 +08:00
littleBink
2023-07-04 10:11:41 +08:00
@chengrui0428 这是真 nb
yxd19
2023-07-04 10:16:25 +08:00
如果任何货物能放到任何货架上,那不就按重量从高到低,尽量往下放就行了吗
Georgedoe
2023-07-04 10:51:48 +08:00
约束满足问题
dode
2023-07-04 10:56:50 +08:00
插入排序
dode
2023-07-04 11:15:37 +08:00
......
7 ,8
5 ,6
3 ,4
1 ,2
leegradyllljjjj
2023-07-04 11:25:19 +08:00
@yxd19 重点是还得移动,包括移动的顺序
leegradyllljjjj
2023-07-04 11:28:59 +08:00
@chengrui0428 跑了一下 好像是有问题啊
chengrui0428
2023-07-04 13:46:51 +08:00
insanny
2023-07-04 14:02:34 +08:00
@chengrui0428 我觉得楼主描述的应该是:每个货物不能搬出来,要像推箱子一样只能往相邻的格子挪,在这种前提下不断的挪动货物调整位置,从而能得到的最优解,并且这个过程中每一步货物的移动路径也必须记录下来。和你的解题似乎有一些偏差
leegradyllljjjj
2023-07-04 19:41:47 +08:00
@insanny 搬箱子的话可以搬,可以不相邻,就是可以把箱子搬到任意一个空位上,但是不能一个箱子搬到一个已经有箱子的货位上,目的是生成一个搬运的顺序,搬运次数最少而且重心降到最低
leegradyllljjjj
2023-07-04 19:52:01 +08:00
做不出来楼主就要被开除了[流泪]
yesterdaysun
2023-07-05 14:53:25 +08:00
感觉抽象一下问题, 把货架从下而上, 从左到右编号, 抽象为数组, 里面的值就是货物重量, 空的就是 0, 比如随便写一个:
2,0,0,0,0,1,0,3,4,5
目标重心最低, 这个其实很简单就是越重的越下面就行, 所以结果就是排个序:
5,4,3,2,1,0,0,0,0,0

但是这里的难点是普通的排序算法不行, 不能像普通排序一样通过额外 temp 变量去交换(swap), 要利用现有的空位交换, 也就是只能和某个 0 交换, 而且进一步的优化是如果是同一层的货物要忽略排序, 比如最下一层原来是 4,5, 没有必要硬是调换成 5,4, 因为是同一层, 重心不会发生变化

是这个意思吗?

感觉上应该是有最优算法的, 但是我想不出来, 我能想到的就是类比冒泡, 结合贪心策略, 从最下面开始按照排序好的结果一点点去交换得到最终结果
chenlins
2023-07-06 15:30:51 +08:00
@yesterdaysun 这思路不错,可以研究下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/953854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX