如何用Gurobi控制迭代次数?

问题描述 投票:0回答:1

我是 Python 新手,我尝试遵循此 MOOC:https://www.coursera.org/learn/operations-research-algorithms/home/welcome

在我的计算机(装有 Windows 10 的旧计算机)上安装 python 和 Gurobi 之后,我尝试启动这些行。

from gurobipy import *


eg1= Model("eg1")
x1= eg1.addVar(lb = 0, vtype=GRB.CONTINUOUS, name="x1")
x2= eg1.addVar(lb = 0, vtype=GRB.CONTINUOUS, name="x2")


eg1.setObjective(700*x1+900*x2,GRB.MAXIMIZE)
eg1.addConstr(3*x1+5*x2 <= 3600, "resource_wood")
eg1.addConstr(x1+2*x2 <= 1600, "resource_labor")
eg1.addConstr(50*x1+20*x2 <= 4800, "resource_machine")


eg1.optimize()

这是结果(使用 Jupyter Lab 和 VSCode :

Gurobi Optimizer 版本 11.0.3 内部版本 v11.0.3rc0 (win64 - Windows 10.0 (19045.2))

CPU型号:Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz,指令集 [SSE2|AVX|AVX2] 线程数:4 个物理核心,4 个逻辑处理器, 最多使用 4 个线程

优化具有 3 行、2 列和 6 个非零模型的模型 指纹:0xeaf3d20c 系数统计:矩阵范围
[1e+00, 5e+01] 目标范围 [7e+02, 9e+02] 边界范围
[0e+00, 0e+00] RHS 范围 [2e+03, 5e+03] 预求解已删除 3 行和 2 列 预求解时间:0.01s 预求解:所有行和列 删除了迭代目标原始信息。 双信息
时间 0 2.1600000e+05 0.000000e+00 0.000000e+00 0s

在 0 次迭代和 0.01 秒(0.00 个工作单位)内解决最优 目标 2.160000000e+05

最优目标应该是 789473.68。

问题是什么?从我的电脑?从代码来看(因为它是一个旧的 MOOC,并且新版本的 Gurobi 发生了一些变化?)?

供您参考,我从 https://www.gurobi.com/documentation/current/examples/diet_py.html 启动了代码,结果是:

设置参数用户名Gurobi Optimizer版本11.0.3 build v11.0.3rc0 (win64 - Windows 10.0 (19045.2))

CPU型号:Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz,指令集 [SSE2|AVX|AVX2] 线程数:4 个物理核心,4 个逻辑处理器, 最多使用 4 个线程

优化具有 4 行、12 列和 39 个非零值的模型 指纹:0x33ddb849 系数统计:矩阵范围
[1e+00, 2e+03] 目标范围 [9e-01, 3e+00] 边界范围
[7e+01, 2e+03] RHS 范围 [7e+01, 2e+03] 预求解已删除 0 行和2列预求解时间:0.10s预求解:4行,10列, 37 个非零

迭代目标原始信息。 双信息。 时间 0 0.0000000e+00 1.472500e+02 0.000000e+00 0s 4 1.1828861e+01 0.000000e+00 0.000000e+00 0s

在 4 次迭代和 0.18 秒(0.00 个工作单位)内解决最优 目标 1.182886111e+01

成本:11.8289

购买:汉堡 0.604514 牛奶 6.97014 冰淇淋 2.59132

添加限制:最多 6 份乳制品 Gurobi Optimizer 版本 11.0.3 内部版本 v11.0.3rc0 (win64 - Windows 10.0 (19045.2))

CPU型号:Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz,指令集 [SSE2|AVX|AVX2] 线程数:4 个物理核心,4 个逻辑处理器, 最多使用 4 个线程

优化具有 5 行、12 列和 41 个非零系数的模型 统计: 矩阵范围 [1e+00, 2e+03] 目标范围 [9e-01, 3e+00] 边界范围 [7e+01, 2e+03] RHS 范围
[6e+00, 2e+03] LP 热启动:使用依据

迭代目标原始信息。 双信息。 时间 0 1.1828861e+01 5.698333e+01 0.000000e+00 0s

在 0 次迭代和 0.02 秒(0.00 个工作单位)内解决 不可行 型号 无解决方案

问候

python gurobi
1个回答
0
投票

运行jupyterlab版本4.0.11 蟒蛇3.12.2

from gurobipy import *


eg1= Model("eg1")
x1= eg1.addVar(lb = 0, vtype=GRB.CONTINUOUS, name="x1")
x2= eg1.addVar(lb = 0, vtype=GRB.CONTINUOUS, name="x2")


eg1.setObjective(700*x1+900*x2,GRB.MAXIMIZE)
eg1.addConstr(3*x1+5*x2 <= 3600, "resource_wood")
eg1.addConstr(x1+2*x2 <= 1600, "resource_labor")
eg1.addConstr(50*x1+20*x2 <= 4800, "resource_machine")


eg1.optimize()

Restricted license - for non-production use only - expires 2025-11-24
Gurobi Optimizer version 11.0.3 build v11.0.3rc0 (linux64 - "Linux Mint 20.2")

CPU model: Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz, instruction set [SSE2]
Thread count: 12 physical cores, 24 logical processors, using up to 24 threads

Optimize a model with 3 rows, 2 columns and 6 nonzeros
Model fingerprint: 0xeaf3d20c
Coefficient statistics:
  Matrix range     [1e+00, 5e+01]
  Objective range  [7e+02, 9e+02]
  Bounds range     [0e+00, 0e+00]
  RHS range        [2e+03, 5e+03]
Presolve removed 3 rows and 2 columns
Presolve time: 0.01s
Presolve: All rows and columns removed
Iteration    Objective       Primal Inf.    Dual Inf.      Time
       0    2.1600000e+05   0.000000e+00   0.000000e+00      0s

Solved in 0 iterations and 0.01 seconds (0.00 work units)
Optimal objective  2.160000000e+05
© www.soinside.com 2019 - 2024. All rights reserved.