【发布时间】:2017-01-05 06:27:56
【问题描述】:
我被要求帮助一个朋友制作一个基本的材料计算器,但我不太确定这是什么算法,因为我只是随便写一些代码,而且我的数学技能可能远不及一些这里的人:) 这是我面临的问题......
我有多个盒子 (A),每个盒子都包含特定的材料子集 (B)。这些材料 (B) 用于构建项目 (C)。一旦材料 (B) 从盒子 (A) 中取出,它们必须被使用或丢弃。由于此算法必须涵盖多个项目,因此对正在构建的项目 (C) 的要求有时会发生变化。
盒子 (A) 始终具有相同的材料子集 (B),这永远不会改变。
示例: Boxtype 1 包含 (32 mat1, 30 mat2, 24 mat3, 0 mat4) Boxtype 2 包含(1 mat1、22 mat2、13 mat3、55 mat4) Boxtype 3 包含 (55 mat1, 21 mat2, 1 mat3, 7 mat4)
我需要构建项目 foo5 - 它需要 4,311 mat1、700 mat2、443 mat3、321 mat4。需要多少个盒子 (A) 才能以最少的浪费做到这一点。
我尝试过四处搜索,但不知道这是哪种算法,我的搜索运气不佳。
编辑:要回答一些问题,还要将我的回复附加到这篇文章中。 是的,您可以选择每个盒子的倍数。订单完成后剩下的所有东西都被扔掉。装有材料的盒子是有成本的,因此如果可能的话,在该级别进行优化会很好,但这是次要目标。抱歉,如果这不清楚,因为我对这部分有点陌生:)
【问题讨论】:
-
我假设您可以选择每个盒子的倍数,即 10x 盒子 1、20x 盒子 2 等等?
-
如果你只用了盒子1最后一半的材料怎么办,剩下的怎么办?浪费?
-
不清楚优化的目标应该是什么。这些盒子会产生一些成本吗?如果没有,请随心所欲地获取材料并丢弃不需要的材料,因为它是免费的。
-
他说的是“最少的浪费”,如果“当你拿一个盒子时,你需要什么就用什么,剩下的就扔掉”,那么我认为这意味着在构建项目后尽量减少剩余的材料。但是同样,这种事情需要在问题中明确指定。
-
这听起来像是背包问题,但不是优化价值,而是最小化浪费……还有动态规划问题的感觉。
标签: algorithm