AI如何跨越数字与物理世界鸿沟:具身智能的技术瓶颈与实践路径
2026/6/17 7:31:49
# 最大化目标函数:Z=3x1+2x2 # 约束条件:x1+2x2<=4,3x1+2x2<=6,x1>=0,x2>=0,x1和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, lowBound=None, upBound=None, cat="Continuous", e=None) # name: 字符串类型,表示变量的名称,必须唯一,lowBound: 变量的下界,默认为 None(无下界), # upBound: 变量的上界,默认为 None(无上界),cat: 变量的类型,默认值为 "Continuous"(连续变量), # "Continuous":连续变量,可以取实数,"Integer":整数变量,只能取整数值, # "Binary":二元变量,只能取 0 或 1,e: 可选参数,用于设置变量的弹性(在目标函数中加入罚项),一般不常用 x1 = LpVariable("x1", lowBound=0, cat="Integer") # x1 >= 0, 整数 x2 = LpVariable("x2", lowBound=0, cat="Integer") # 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 默认集成的 CBC(Coin-or Branch and Cut)求解器 # CBC 是一个开源的混合整数线性规划(MILP)求解器,支持求解线性规划(LP)和整数规划(IP)问题 # 指定是否显示求解过程的详细信息(日志输出),msg=False 表示关闭日志,不显示求解过程 solver = PULP_CBC_CMD(msg=False) # solver 参数指定求解器 problem.solve(solver) if problem.status == 1: # 1 表示最优解找到 print("最优解:") print(f"x1 = {x1.varValue}") print(f"x2 = {x2.varValue}") print(f"最大目标值 Z = {problem.objective.value()}") else: print("未找到最优解")最优解: x1 = 2.0 x2 = 0.0 最大目标值 Z = 6.0