我有一些容器包含特定类型的项目,并且对它们执行了一些操作:
container_id item_type no_of_items operation1_executions operation2_executions
600 1 500 400 300
700 1 200 600 600
600 2 400 200 900
目标是每个容器平衡no_of_items
,operation1_executions
和operation2_executions
,使每个容器尽可能彼此接近。显然,每个容器可以容纳最多数量的项目,并且操作执行有成本(增加log
个项目数。)
catch:唯一可用的操作是将指定数量的特定类型的项从指定的源容器移动到指定的目标容器。也就是说,除了项目类型,项目不能单独选择(它们是随机选择的)。
这里最佳/合理的解决方案是什么?某种线性回归?一些具有启发性的“善良契合”功能?
(使用pandas / SciKit的解决方案会更好,如果有人认为smth比“纯”算法更多)
更新:Josilber指出“尽可能接近彼此”是一个朦胧的目标。
问题在于它正在精确地平衡容器负载,以最小化由operation1 .. operationN
施加的总负载,这是我所追求的并且该模式是未知的。我甚至不确定附加到operation
特定类型的重量/成本(如果有的话)。
这不是一个理论问题,这是我在制作中遇到的一个扭曲而复杂的问题。
在每次操作中使用简单假设的重量/成本1,无论操作类型如何,对于初学者来说都是足够好的。所以我想我会在下面的矩阵中寻求最小化和向量:
(container 1) [sum(oper1 cost .. operN cost)] [no of item_type1, no of item_type2, ... item_typeL]
(container 2) [sum(oper1 cost .. operN cost)] [no of item_type1, no of item_type2, ... item_typeL]
. =
.
(container M) [sum(oper1 cost .. operN cost)] [no of item_type1, no of item_type2, ... item_typeL]
当然,这只是第一次和粗略的近似。如果我最小化左手总和成本向量但是说某个容器中的成本(执行时间)开始过度上升,那将是不可接受的。但是,我需要从解决这个问题的某个地方开始,这一点似乎与任何一个一样好。