@newfolder_js

Симплекс метод нахождение минимума в Python?

Это на максимум!
import numpy as np 
import scipy as sp 
# Get matrices 
c = [-1,-2] 
A = [[1,3], [1,1]] 
b = [9, 5] 
# define the upper bound and the lower bound 
x1 = (0, None) 
x2 = (0, None) 
# Implementing the Simplex Algorithm 
from scipy.optimize import linprog 
# Solve the problem by Simplex method in Optimization 
res = linprog(c, A_ub=A, b_ub=b,  bounds=(x1, x2), method='simplex', options={"disp": True})  # linear programming p[roblem 
print(res) # print results
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
смотрите вы в проблеме не указали условие а только коэффициенты. То есть ваша полная задача как выглядит примерно так:
min z = -1 * x1 -2*x2 - это функция для минимизации.

второе условие:
1 * x1 + 3*x2 >= или <= вы не указали 9
1*x1 + 1*x2 >= или <= вы не указали 5

нужно помнить что функция linprog принимает только форму <= Сооответственно, если условие в вашей задаче <= Ваш код работает верно и находит МИНИМУМ, если же условие вашей задачи >= тогда конвертируйте A в numpy и умножьте на -1 то же самое сделайте с b ну а коэффициенты с не трогайте. И вы получите ваши минимумы.
в ваших результатах вектор x это коэффициенты минимизирующие систему неравенств а значение fun. Это оптимальное значение для линейной функции которую вы минимизируете.
В итоге если знак в задаче <= оставляем все как есть.
Если знак в задаче >= умножаем A на -1 и b на -1.
Все остальное верно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы