【问题标题】:Solve system of linear equations to maximize value w/ scipy求解线性方程组以使用 scipy 最大化价值
【发布时间】:2020-04-02 20:38:42
【问题描述】:

我找到了如何求解线性方程组,但我想做的是: 我有 2 个变量,X, Y ∈ [0.0, 1.0],我想做的是:

求解这个线性方程组以最大化value,假设x * -1 + y * 1 等于或大于0.**m * **考虑到第二个等式(我想要最大化价值的那个)更重要*

x * -1 + y * 1 >= 0
x * 10 + y * 20 = value
x + y = 1 (constraint)

我唯一的想法是进行网格搜索,但也许我需要一些时间(这很愚蠢)来增加 X 和 Y,例如:

for x in range (0, 1, 0.01):
   for y in range (0, 1, 0.01):

你有更好的建议吗? 我无法使用库或工具 理想的可能是使用scipy

【问题讨论】:

  • 您对使用库感到满意吗?像线性编程库?

标签: python


【解决方案1】:

这类问题属于所谓的“线性规划”。对于像您这样的简单系统,您通常可以通过手动分析和一张纸找到解决方案。但是,如果您有许多变量和许多约束,这将变得非常困难。由于求解线性规划非常有用,因此已经实现了许多简化任务的“求解器”。

您只需说明变量,即您允许它们采用的范围。然后是必须观察的约束,最后是您希望最小化或最大化的目标函数。

然后“点击”解决,瞧。即使对于大型实例,它通常也非常非常快。

(这是一个完整的领域,所以这只是一个简单的介绍)

​​>

这是一个使用库 ortools(来自 Google 的 OR-Tools)解决问题的示例:

import ortools
from ortools.linear_solver import pywraplp

solver = pywraplp.Solver('LinearProgrammingExample',
                             pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

x = solver.NumVar(0, 1, 'x')
y = solver.NumVar(0, 1, 'y')

constraint1 = solver.Constraint(0, solver.infinity())
constraint1.SetCoefficient(x, -1)
constraint1.SetCoefficient(y, 1)

# if you want to add another constraint like x+y = 1
# constraint2 = solver.Constraint(1, 1)
# constraint2.SetCoefficient(x, 1)
# constraint2.SetCoefficient(y, 1)
#

objective = solver.Objective()
objective.SetCoefficient(x, 10)
objective.SetCoefficient(y, 20)
objective.SetMaximization()

solver.Solve()

opt_solution = 10 * x.solution_value() + 20 * y.solution_value()



print('Solution:')
print('x = ', x.solution_value())
print('y = ', y.solution_value())
# The objective value of the solution.
print('Optimal objective value =', opt_solution)

【讨论】:

  • 我怎样才能添加另一个约束说 x + y = 1 ?
  • 有没有我们不使用这个库的解决方案(等于这个)?以防万一我不能使用它
  • 只要你不需要太多的约束和变量,通过简单的数学分析来解决并不难。
  • 这些是我的限制。你知道怎么做吗?
  • 是的,重新制定你的方程以形成 y = ax +b ,将它们画在纸上,然后寻找你的目标函数中的哪个值仍然适合你的约束区域。
猜你喜欢
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 2015-09-01
  • 1970-01-01
  • 2019-04-13
相关资源
最近更新 更多