【问题标题】:Assigning jobs to minimize cost - Linear programming分配作业以最小化成本 - 线性规划
【发布时间】:2014-03-19 13:02:16
【问题描述】:

我一直在尝试解决这个线性规划问题。

您想创建一个包含特征 F 列表的网站,这些特征有 n 个元素长。每个特性都有一个对应的值,表示实现它需要多长时间。由于您不知道如何编程,因此您寻求 m 程序员朋友的帮助。你的每个朋友都有三个属性 Preferences:(他们喜欢编程的特性列表,这是 F 的一个子集) 小时数:他们愿意工作的时间 成本:他们每小时收取的金额 请注意,如果您的朋友使用了他们不喜欢的功能,他们只会向您收费。

总结 对于 i = 0 到 n,

F(i) = 第 i 个特征

Ti = 编程第 i 个特征所需的时间

对于 i = 0 到 m,

M(i) = ith 程序员

P(i) = ith 程序员的首选功能

C(i) = $/hr 第 i 个程序员将​​因开发他不喜欢的功能而收费

h(i) = 第 i 个程序愿意工作的小时数 我们需要提出一个线性规划公式,它将

  1. 完成所有功能或找出是否不可能

  2. 最小化成本

到目前为止,我所做的线性规划问题通常是农民想要种植 2 种作物。所以这对我来说真的很新而且很难。 我的方法是为每个程序员设置一组不等式,但这里的主要问题是,对于某些功能,他们不收费,而有些功能却收费。我不确定如何正确地将其纳入配方中。另外,要记住的一点是,程序员可以在一个功能上工作一个小时,然后离开,让另一个程序员接手

【问题讨论】:

  • 在编程世界中,您正在制作一个关于线程和时间管理的算法。我会谷歌搜索如何优化变量的线程。例如:线程 1 可能最擅长计算图形,因为它可以访问 GPU,而线程 2 可能有很多内存,允许它存储大型集合等。这 2 个线程会使相应的任务更重,并且只会选择在其他没有繁重任务的情况下,它喜欢计算
  • 你需要的变量是 x(i, j),我在功能 j 上工作了多少程序员。
  • 好的,你能再解释一下吗,因为我还没有见过这样声明的变量。我猜约束是 x = 0 和所有 x 的总和 >= 所有 Ti 的总和但我仍然觉得我错过了如何以最佳方式将每个程序员分配给他的功能
  • 因为“一个程序员可以在一个功能上工作一个小时,然后离开它,让另一个程序员接手”,从这个词的通常意义上来说,这并不是你正在寻找的真正的任务.下一步是确定一个可行的目标。

标签: algorithm linear-programming


【解决方案1】:

您使用i 来索引功能和程序员的符号有点混乱,所以为了清楚起见,我将对其进行更改。我将使用i 来索引功能并使用j 来索引程序员。

我们有n 程序员和m 功能。让t(i,j) 成为jth 程序员花在ith 功能上的时间。这些t 变量是我们希望求解的决策变量。

jth 程序员在所有功能上总共只能工作h(j) 小时,所以我们有这个

 sum_{i=1}^m t(i,j) <= h(j) for all programmers j in 1,...,n 

为了完成ith 功能,所有程序员在该功能上工作的总小时数必须超过实现该功能所需的时间T(i)。所以我们有这个

 sum_{j=1}^n t(i,j) >= T(i) for all features i

P(i){1, ..., m} 的子集)成为ith 程序员的偏好设置。程序员只负责处理不在他们偏好集中的功能。所以jth 程序员的成本由下式给出

 sum_{i not in P(i)} C(j)*t(i,j)

综上所述,我们有以下线性规划

 minimize sum_{j=1}^n sum_{i not in  P} C(j)*t(i,j)
    t
 subject to  

          sum_{i=1}^m t(i,j) <= h(j), for all programmers j=1,...,n
          sum_{j=1}^n t(i,j) >= T(i), for all features    i=1,...,m
          0 <= t(i,j)                 for all i=1,...,m, j=1,...,n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2015-09-17
    • 2021-01-29
    相关资源
    最近更新 更多