Решить с помощью Python

Условие:

Реши с помощью Python

Условие: Реши с помощью Python

Решение:

Предмет: Математика

Раздел: Линейное программирование

Дано линейное оптимизационное задание:

Функция цели:
F = 5x_1 + 4x_2 - 3x_3 + 4x_4 + 2x_5

Ограничения:
 \begin{cases} x_1 + 2x_2 + 3x_3 - x_4 - 2x_5 = 26, \ 2x_1 + 5x_2 + 3x_3 + 2x_4 - 3x_5 = 62, \ 2x_1 + 6x_2 + 5x_3 + x_4 - 3x_5 = 66, \ x_j \geq 0, \quad j = \overline{1,5}. \end{cases} 

Решим задачу с помощью Python, используя библиотеку scipy.optimize.

Код на Python:

from scipy.optimize import linprog

# Коэффициенты целевой функции (коэффициенты при x)
c = [-5, -4, 3, -4, -2]  # Так как scipy.optimize.minimize минимизирует, берем отрицательные коэффициенты

# Коэффициенты ограничений
A_eq = [
    [1, 2, 3, -1, -2],
    [2, 5, 3, 2, -3],
    [2, 6, 5, 1, -3]
]

# Правая часть ограничений
b_eq = [26, 62, 66]

# Границы переменных (все переменные неотрицательные)
x_bounds = [(0, None)] * 5

# Решение задачи
res = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=x_bounds, method='highs')

# Вывод результатов
if res.success:
    print("Оптимальное решение найдено:")
    print("Значения переменных:", res.x)
    print("Оптимальное значение F:", -res.fun)  # Берем с минусом, так как минимизировали -F
else:
    print("Решение не найдено.")

Объяснение кода:

  1. Определяем коэффициенты целевой функции. Так как linprog выполняет минимизацию, мы берем отрицательные коэффициенты.
  2. Задаем коэффициенты ограничений в виде матрицы.
  3. Определяем правую часть уравнений.
  4. Указываем границы переменных, так как они неотрицательные.
  5. Решаем задачу с помощью linprog с методом highs.
  6. Выводим оптимальные значения переменных и оптимальное значение функции цели.

Этот код найдет оптимальное решение задачи линейного программирования.

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!
  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн