【问题标题】:Formulating an Linear Programming Assignment in pulp在纸浆中制定线性规划作业
【发布时间】:2018-03-29 03:00:37
【问题描述】:

所以,这是我要解决的问题的背景:

我想将成本单位划分为两个或多个公司。现在,我已经为两家公司解决了以下目标函数:

20*x1 + 30*x2 + 100*x3 + 20*x4 + 30*x5

变量为二进制类型。

假设我得到优化的解决方案:

x1 = 1
x2 = 0
x3 = 0
x4 = 1
x5 = 0

这意味着 A 公司将负责单位成本 x1 和 x4,而 B 公司将负责其余成本。

这工作正常,我已经正确地在纸浆上编码。我还可以使用约束来限制特定公司的最大成本,这是所有这一切的开始。系数的总和代表给定项目的总成本。所以我用这个数量作为目标函数的约束来限制 A 公司的成本

现在,我想做的是与 3 家或更多公司做同样的事情。我不知道如何制定目标函数或函数,因为我认为它可能属于多目标函数问题,但我实际上不确定。

我在线性规划方面不是很有经验,所以如果我放错了问题,我很抱歉。我还没有找到任何可以帮助我实现这一目标的东西。

我会放代码,但是在创建函数之前我有更多的变量和一些基本的数据准备,所以我创建了一个假设示例以使其更易于理解。

非常感谢您的帮助。

【问题讨论】:

  • 范围很广。但是,如果 binary-vars 的二进制性质会给您带来麻烦,请考虑使用 company * X 矩阵来描述哪个公司为哪个单位成本提供服务(对于上述情况:一个 2 x 5 的二进制变量矩阵)。 (不:这不是多目标优化)
  • 您将如何实现仅适用于矩阵行的约束?
  • 这看起来有点像分配问题。它与多目标优化无关。
  • 是的,我同意如果原始发帖人@ValbertoEnocRodrigues 可以将问题的标题更改为“在纸浆中制定作业问题”,这对未来寻找答案的人来说会更好。

标签: python linear-programming pulp


【解决方案1】:

您可以如下定义二进制变量:

x_{i,j} = 1 if Company i is responsible for Unit Cost j

并为每个单位成本 j 添加一个约束条件,告诉该成本必须由一家公司负责。
请考虑以下示例。

# data
companies = ["company1", "company2", ...]
products = ["prod1", "prod2", ...]
cost = {"prod1": cost1, "prod2": cost2, ...}

x = pulp.LpVariable.dicts("responsability",[(company, product) for company in companies for product in products], cat=pulp.LpBinary)    
prob = pulp.LpProblem("ilp", pulp.LpMinimize)

# objective function - assuming the cost is the same for all the companies
prob += pulp.LpSum(cost[product] * sum(x[(company, product)] for company in companies) for product in products)

# each product assigned to one company
for product in products:
   prob+= pulp.LpSum(x[(company, product)] for company in companies) == 1

# additional constraints
...

【讨论】:

  • 我不知道我是否理解正确,代码是否在各自的约束条件下为每家公司分配了单位成本?我的目标是让优化器在给定成本约束的情况下为每家公司找到最佳的单位成本分布。如果我误解了,我很抱歉。
  • 在示例中,单位成本被称为产品。在只有 2 家公司的情况下,一个二元变量就足够了。对于 3 家或更多公司,您需要知道将单位成本分配给哪家公司。如果将 unit_cost_j 分配给 company_i,则这是值为 1 的变量 (company_i, unit_cost_j) 的目标。该约束确保每个单位成本都分配给一家公司。
  • 我一直在尝试使这个适应我的问题,但没有成功,我很抱歉坚持,但是当你说你必须知道单位成本分配给哪家公司时(在更多的情况下)超过 2 家公司),您的意思是我必须在优化之前预先分配 unit_costs 吗?因为这就是我希望优化器做的事情。我还需要根据成本建立约束,例如:company1 的总成本必须
  • 非常感谢@newbie。这种方法对我帮助很大。我仍然需要稍微调整约束,但它基本上解决了我的问题。
猜你喜欢
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多