我正在尝试使用我认为符合非线性编程约束的内容来解决动态机器调度问题。
我拥有线性编程技术的学术知识,并很高兴有机会尝试非线性编程。
然而,在做任何事情之前,我都在努力写下一个精心讨论的问题。情况是这样的:
你能帮我正确地表述这个问题吗?这是我开始的方式:
目标函数: 找到最佳 X_mt,使任务按时开始(限制惩罚)
限制:
我也在寻找一种算法,根据我如何放松工作负载平衡参数来找到一些 epsilon 最优解决方案。
但是在我尝试寻找算法之前,我需要帮助来正确地表述问题。
我见过示例,其中方差约束被公式化为上下边界差异的最小化,但我不知道如何在这种情况下应用它,因为我有多个方差约束。
如果这太多了,你如何将这个问题转化为强化学习问题?
其中一个要求是尽量减少机器之间作业数量和工作时间方面的差异。
所以我有两个差异正在努力最小化。正如您所提到的,最小化每个方差的跨度更容易。 我们将工作数量的方差称为
var1
和工作时间的方差 var2
。
它们的跨度分别是 max1-min1
和 max2-min2
。
我永远不会找到工作到机器的最佳归因,其中两个方差的方差都是最低的(除非我非常幸运并且它们的最小值恰好同时存在:https://math.stackexchange.com/a /452561).
所以我应该在两个方差之间提供权衡(epsilon)和权重(
w1
和w2
)。
所以我的目标函数变成
MINIMIZE sum(p_t) + w1 * (max1 - min1) + w2 * (max2 - min2)
这种情况下,如何找到w1和w2呢?蒙特卡洛?模拟退火?机器学习? 难道我理解错了?