#python #optimization
#python #оптимизация
Вопрос:
Прошлой ночью я потратил около 4-5 часов на поиск Stack Overflow, просматривал документы scipy optimize и т. Д. И Не смог найти ответа на свою проблему. Мой вопрос в том, как мне установить нижние границы для уравнения оптимизации, когда опция, похоже, предназначена только для верхней границы? Пожалуйста, посмотрите мое уравнение и код ниже.
import numpy as np
from scipy.optimize import linprog
from numpy.linalg import solve
c = np.array([4,7,5])
A = np.array([[4,1,10],[3,2,1],[0,4,5]])
b = np.array([10,12,20])
res = linprog(c,A_ub = A,b_ub = b)
print(res)
минимизация (4,7,5)
('Optimal value:', -0.0, 'nX:', array([ 0., 0., 0.]))
fun: -0.0
message: 'Optimization terminated successfully.'
nit: 0
slack: array([ 10., 12., 20.])
status: 0
success: True
x: array([ 0., 0., 0.])
максимизация (-4, -7, -5)
('Optimal value:', -37.666666666666664, 'nX:', array([ 0.66666667, 5. ` , 0. ]))`
fun: -37.666666666666664
message: 'Optimization terminated successfully.'
nit: 2
slack: array([ 2.33333333, 0. , 0. ])
status: 0
success: True
x: array([ 0.66666667, 5. , 0. ])
Это дает мне ответ в первом, чтобы минимизировать x1, x2, x3, который, очевидно, показывает все нули. 2-й ответ максимизирует функцию, если каждый <=10,<=12,<=20 потому что очевидно, что это верхняя граница. Мне нужен наилучший возможный ответ, основанный на том, что >=10,>=12,>=20 минимизация по функции.
Извините, если это просто! Я потратил много часов на поиск в Интернете…
Ответ №1:
a'x >= b
совпадает с -a'x <= -b
. Т.е. умножьте >=
неравенство на -1.
Комментарии:
1. Спасибо! Я такой плохой… Я изучаю историю, сейчас пытаюсь изучать математику =) Как я могу поддержать вас? У меня репутация менее 15… большое спасибо!
2. Не беспокойтесь об этом.