# 最大化目标函数Z3x12x2 # 约束条件x12x24,3x12x26,x10,x20x1和x2是整数 from pulp import LpMaximize, LpProblem, LpVariable, lpSum, PULP_CBC_CMD # problem LpProblem(name, sense)name: 一个字符串用于标识问题的名称 # sense: 决定问题是最大化LpMaximize还是最小化LpMinimize。默认值为 LpMinimize problem LpProblem(Integer_Programming_Example, LpMaximize) # variable LpVariable(name, lowBoundNone, upBoundNone, catContinuous, eNone) # name: 字符串类型表示变量的名称必须唯一lowBound: 变量的下界默认为 None无下界 # upBound: 变量的上界默认为 None无上界cat: 变量的类型默认值为 Continuous连续变量 # Continuous连续变量可以取实数Integer整数变量只能取整数值 # Binary二元变量只能取 0 或 1e: 可选参数用于设置变量的弹性在目标函数中加入罚项一般不常用 x1 LpVariable(x1, lowBound0, catInteger) # x1 0, 整数 x2 LpVariable(x2, lowBound0, catInteger) # x2 0, 整数 # 将目标函数或约束条件添加到优化问题实例 problem 中 操作符用于将数学表达式附加到 LpProblem 对象 problem 3 * x1 2 * x2, Objective # 添加约束条件 problem x1 2 * x2 4, Constraint_1 problem 3 * x1 2 * x2 6, Constraint_2 # PULP_CBC_CMD 是 PuLP 默认集成的 CBCCoin-or Branch and Cut求解器 # CBC 是一个开源的混合整数线性规划MILP求解器支持求解线性规划LP和整数规划IP问题 # 指定是否显示求解过程的详细信息日志输出msgFalse 表示关闭日志不显示求解过程 solver PULP_CBC_CMD(msgFalse) # solver 参数指定求解器 problem.solve(solver) if problem.status 1: # 1 表示最优解找到 print(最优解) print(fx1 {x1.varValue}) print(fx2 {x2.varValue}) print(f最大目标值 Z {problem.objective.value()}) else: print(未找到最优解)输出最优解 x1 2.0 x2 0.0 最大目标值 Z 6.0
数学建模常用算法示例-10-整数规划
# 最大化目标函数Z3x12x2 # 约束条件x12x24,3x12x26,x10,x20x1和x2是整数 from pulp import LpMaximize, LpProblem, LpVariable, lpSum, PULP_CBC_CMD # problem LpProblem(name, sense)name: 一个字符串用于标识问题的名称 # sense: 决定问题是最大化LpMaximize还是最小化LpMinimize。默认值为 LpMinimize problem LpProblem(Integer_Programming_Example, LpMaximize) # variable LpVariable(name, lowBoundNone, upBoundNone, catContinuous, eNone) # name: 字符串类型表示变量的名称必须唯一lowBound: 变量的下界默认为 None无下界 # upBound: 变量的上界默认为 None无上界cat: 变量的类型默认值为 Continuous连续变量 # Continuous连续变量可以取实数Integer整数变量只能取整数值 # Binary二元变量只能取 0 或 1e: 可选参数用于设置变量的弹性在目标函数中加入罚项一般不常用 x1 LpVariable(x1, lowBound0, catInteger) # x1 0, 整数 x2 LpVariable(x2, lowBound0, catInteger) # x2 0, 整数 # 将目标函数或约束条件添加到优化问题实例 problem 中 操作符用于将数学表达式附加到 LpProblem 对象 problem 3 * x1 2 * x2, Objective # 添加约束条件 problem x1 2 * x2 4, Constraint_1 problem 3 * x1 2 * x2 6, Constraint_2 # PULP_CBC_CMD 是 PuLP 默认集成的 CBCCoin-or Branch and Cut求解器 # CBC 是一个开源的混合整数线性规划MILP求解器支持求解线性规划LP和整数规划IP问题 # 指定是否显示求解过程的详细信息日志输出msgFalse 表示关闭日志不显示求解过程 solver PULP_CBC_CMD(msgFalse) # solver 参数指定求解器 problem.solve(solver) if problem.status 1: # 1 表示最优解找到 print(最优解) print(fx1 {x1.varValue}) print(fx2 {x2.varValue}) print(f最大目标值 Z {problem.objective.value()}) else: print(未找到最优解)输出最优解 x1 2.0 x2 0.0 最大目标值 Z 6.0