gpt4 book ai didi

python - 在线性问题中定义多个约束后,获取变量当前可能接受的界限

转载 作者:行者123 更新时间:2023-12-02 09:33:42 25 4
gpt4 key购买 nike

基于以下简单的线性问题示例,在对变量 x 应用一些约束后,您将如何检索它可能接受的边界?它应该返回两个参数:

  1. 最小可能值 (61.0)
  2. 最大可能值 (93.0)

使用x.lb()x.ub()返回在创建变量时分配给变量的边界,但不考虑以下约束:应用于其上。

from ortools.linear_solver import pywraplp
# Create the linear solver with the GLOP backend.
solver = pywraplp.Solver('lp_pricing_problem', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)
# Define a variable with a range from 0 to 1000.
x = solver.NumVar(0, 1000, 'MyVariable')
# Define some constraints on it.
solver.Add(x <= 147)
solver.Add(x <= 93)
solver.Add(x >= 61)
solver.Add(x >= 17)

print(x.lb()) # 0.0
print(x.ub()) # 1000.0

# Minimize x
objective = solver.Objective()
objective.SetCoefficient(x, 1)
objective.SetMinimization()

status = solver.Solve()

# Print the solution
if status == solver.OPTIMAL:
print(x.solution_value()) # 61.0

这个问题的真正目的是了解为什么求解器会在约束未正确定义时返回 INFEASIBLE 状态:

solver.Add(x <= 147)
solver.Add(x <= 93)
solver.Add(x >= 61)
solver.Add(x <= 17)

在这种情况下,我希望看到变量x必须小于或等于17,同时大于或等于61。如果您考虑更好的调试方法此类问题,请随时在这里分享。

非常感谢您的帮助和想法。

罗曼

最佳答案

将其作为目标。最小化和最大化该变量。

关于python - 在线性问题中定义多个约束后,获取变量当前可能接受的界限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59263338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com