【发布时间】:2020-04-09 04:00:45
【问题描述】:
我想知道如何使用 or-tools 定义一个复杂的目标函数(如果可能的话)。
下面的基本示例展示了如何在 python 中使用 Or-tools 解决基本的线性问题:
solver = pywraplp.Solver('lp_pricing_problem', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)
# Define variables with a range from 0 to 1000.
x = solver.NumVar(0, 1000, 'Variable_x')
y = solver.NumVar(0, 1000, 'Variable_y')
# Define some constraints.
solver.Add(x >= 17)
solver.Add(x <= 147)
solver.Add(y >= 61)
solver.Add(y <= 93)
# Minimize 0.5*x + 2*y
objective = solver.Objective()
objective.SetCoefficient(x, 0.5)
objective.SetCoefficient(y, 2)
objective.SetMinimization()
status = solver.Solve()
# Print the solution
if status == solver.OPTIMAL:
print("x: {}, y: {}".format(x.solution_value(), y.solution_value())) # x: 17.0, y: 61.0
在这个非常基本的例子中,目标函数是Minimize(0.5*x + 2*y)。
例如,获得最小二乘法Minimize(x^2 + y^2) 或变量绝对值Minimize(abs(x) + y) 的语法是什么?
是否可以定义一个子函数并将其调用到目标函数中?还是我应该采取其他方式?
非常感谢,
罗曼
【问题讨论】:
标签: python linear-programming least-squares or-tools objective-function