大家好,我是一名在读研究生,主要研究优化算法和应用,通过Gurobi求解器进行优化问题的求解。希望通过在51CTO博客分享我的学习心得和技术经验,能与更多志同道合的朋友们一起交流和成长。

在这篇博文中,我将分享几个常用的Gurobi代码片段,希望对大家在解决优化问题时有所帮助。

1.线性规划问题

import gurobipy as gp
from gurobipy import GRB

# 创建模型
model = gp.Model("linear_program")

# 添加变量
x = model.addVar(name="x")
y = model.addVar(name="y")

# 设置目标函数
model.setObjective(3 * x + 4 * y, GRB.MAXIMIZE)

# 添加约束
model.addConstr(x + 2 * y <= 14, "c0")
model.addConstr(3 * x - y >= 0, "c1")
model.addConstr(x - y <= 2, "c2")

# 求解模型
model.optimize()

# 输出结果
if model.status == GRB.OPTIMAL:
    for v in model.getVars():
        print(f'{v.varName} {v.x}')
    print(f'Objective: {model.objVal}')

2.整数规划问题

import gurobipy as gp
from gurobipy import GRB

# 创建模型
model = gp.Model("integer_program")

# 添加变量
x = model.addVar(vtype=GRB.INTEGER, name="x")
y = model.addVar(vtype=GRB.INTEGER, name="y")

# 设置目标函数
model.setObjective(2 * x + 3 * y, GRB.MINIMIZE)

# 添加约束
model.addConstr(x + y >= 10, "c0")
model.addConstr(2 * x - 3 * y <= 15, "c1")

# 求解模型
model.optimize()

# 输出结果
if model.status == GRB.OPTIMAL:
    for v in model.getVars():
        print(f'{v.varName} {v.x}')
    print(f'Objective: {model.objVal}')

3.多目标优化

import gurobipy as gp
from gurobipy import GRB

# 创建模型
model = gp.Model("multi_objective")

# 添加变量
x = model.addVar(name="x")
y = model.addVar(name="y")
z = model.addVar(name="z")

# 设置目标函数
model.setObjectiveN(x + y + 2 * z, index=0, priority=1)
model.setObjectiveN(-x + y + z, index=1, priority=0)

# 添加约束
model.addConstr(x + 2 * y + 3 * z <= 4, "c0")
model.addConstr(x + y >= 1, "c1")

# 求解模型
model.optimize()

# 输出结果
if model.status == GRB.OPTIMAL:
    for v in model.getVars():
        print(f'{v.varName} {v.x}')
    print(f'Objective 1: {model.getObjective(0).getValue()}')
    print(f'Objective 2: {model.getObjective(1).getValue()}')

最后,我想在这里立一个flag,激励自己不断进步。在接下来的一段时间通过51CTO学习编程技术,学习Python、优化算法以及Gurobi的高级应用。