Линейное программирование (ЛП) — это математический метод, используемый для оптимизации распределения ресурсов в различных отраслях и областях. IBM CPLEX — это мощный инструмент оптимизации, обеспечивающий надежную среду для решения проблем LP. В этой статье блога мы рассмотрим несколько методов постановки и решения задач ЛП с использованием Python и библиотеки IBM CPLEX. Мы предоставим примеры кода, чтобы проиллюстрировать каждый метод и обсудить их пригодность для различных сценариев проблем.
-
Метод: математическая формулировка и вызов решателя
- Пример кода:
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])
- Пример кода:
-
Метод: матричная формулировка
- Пример кода:
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))
- Пример кода:
-
Метод: библиотека 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, вы можете эффективно оптимизировать распределение ресурсов в различных отраслях и областях, что приведет к более эффективному принятию решений и экономии затрат.