所以我有一个包含订单数据的矩阵,如下所示:
Order Due Date Processing Time Early Penalty Late Penalty
1 4 5 2 8
2 7 10 4 7
3 5 1 8 9
4 5 3 7 2
.. ... ... .. ..
.. ... ... .. .. .
我正在尝试对这些订单执行作业车间排序算法,以通过将到期日和处理时间相互比较来最小化惩罚。如何通过所有可能的订单排列来运行公式?
例如,我想在每个订单序列上应用特定的公式。 (序列1:订单1 - >订单2 - >订单3 - >订单4,序列2:订单2 - >订单4 - >订单3 - >订单1等)
答案 0 :(得分:0)
函数perms
将帮助您完成此操作。 perms
列出了向量的所有排列,例如:
烫发(1:4)
ans =
4 3 2 1
4 3 1 2
4 2 3 1
4 2 1 3
% Cut 16 rows
1 2 3 4
1 2 4 3
1 4 2 3
1 4 3 2
然而,请注意,这将很快变得无法管理。列表的排列数随着列表长度的阶乘而增长。因此,对于4个订单,您有24个排列。有10个订单,你现在有3628800个排列。有15个订单,你有1.3077e + 12个排列(即1.3万亿)。如果您可以保证订单数量永远不会超过10,那么这种方法仍然有用。