Решение задач линейного программирования с помощью Python и IBM CPLEX

Линейное программирование (ЛП) — это математический метод, используемый для оптимизации распределения ресурсов в различных отраслях и областях. IBM CPLEX — это мощный инструмент оптимизации, обеспечивающий надежную среду для решения проблем LP. В этой статье блога мы рассмотрим несколько методов постановки и решения задач ЛП с использованием Python и библиотеки IBM CPLEX. Мы предоставим примеры кода, чтобы проиллюстрировать каждый метод и обсудить их пригодность для различных сценариев проблем.

  1. Метод: математическая формулировка и вызов решателя

    • Пример кода:
      from docplex.mp.model import Model
      # Create a new model
      model = Model(name='LP Example')
      # Define decision variables
      x = model.continuous_var(name='x')
      y = model.continuous_var(name='y')
      # Define objective function
      model.maximize(5 * x + 3 * y)
      # Define constraints
      model.add_constraint(2 * x + y <= 10)
      model.add_constraint(x + 3 * y <= 12)
      # Solve the model
      solution = model.solve()
      # Print the optimal solution
      print('Optimal Solution:')
      print('x =', solution[x])
      print('y =', solution[y])
  2. Метод: матричная формулировка

    • Пример кода:
      import numpy as np
      import cplex
      # Define the LP problem matrix coefficients
      c = np.array([5, 3])
      A = np.array([[2, 1], [1, 3]])
      b = np.array([10, 12])
      lb = np.array([0, 0])
      # Create a new LP problem
      problem = cplex.Cplex()
      problem.objective.set_sense(problem.objective.sense.maximize)
      problem.variables.add(obj=c, lb=lb)
      problem.linear_constraints.add(lin_expr=[cplex.SparsePair(ind=list(range(2)), val=A[0]),
                                            cplex.SparsePair(ind=list(range(2)), val=A[1])],
                                 senses=['L', 'L'],
                                 rhs=b)
      # Solve the LP problem
      problem.solve()
      # Extract and print the optimal solution
      solution = problem.solution
      print('Optimal Solution:')
      print('x =', solution.get_values(0))
      print('y =', solution.get_values(1))
  3. Метод: библиотека PuLP

    • Пример кода:
      from pulp import LpMaximize, LpProblem, LpStatus, LpVariable, lpSum, value
      # Create a new LP problem
      problem = LpProblem("LP Example", LpMaximize)
      # Define decision variables
      x = LpVariable('x', lowBound=0)
      y = LpVariable('y', lowBound=0)
      # Define objective function
      problem += 5 * x + 3 * y
      # Define constraints
      problem += 2 * x + y <= 10
      problem += x + 3 * y <= 12
      # Solve the LP problem
      problem.solve()
      # Print the optimal solution
      print('Optimal Solution:')
      for var in problem.variables():
       print(f'{var.name} = {value(var)}')

В этой статье мы рассмотрели три различных метода решения задач LP с использованием Python и IBM CPLEX. Эти методы обеспечивают гибкость и удобство при формулировании и решении задач ЛП, удовлетворяя разнообразные сценарии проблем. Используя возможности Python и IBM CPLEX, вы можете эффективно оптимизировать распределение ресурсов в различных отраслях и областях, что приведет к более эффективному принятию решений и экономии затрат.