#python #arrays #optimization #scipy #linear-programming
#python #массивы #оптимизация #сципи #линейное программирование
Вопрос:
В scipy.optimize.linprog(c, A_eq, b_eq)
результате решения вызывается переменная решения (массив) x
, которая умножается на array c
.
Как допустить вторую переменную решения (массив), вызываемую y
в векторе ограничений b_eq
, и linprog
минимизировать основную целевую функцию, чтобы y
она также была оптимизирована для, а не только x
?
Другими словами, вместо того, чтобы минимизировать целевую функцию, находя x
только оптимальный массив, мы хотим минимизировать целевую функцию, находя оптимальный x
массив, а также вновь введенный y
массив.
Комментарии:
1. Вам нужно объединить / сгладить их.
x0, x1, ..., y0, y1, ...
. Кроме того, количество столбцов в матрице растет параллельно. Это стандартная форма, которая всегда определяется для 1d-вектора x.2. но
linprog
даже не допускает первую переменную решенияx
в качестве входных данных. Как я могу даже отправитьy
в качестве входных данных, не говоря уже о том, чтобы сообщить оптимизатору, что я объединяю два? единственный ввод, отправляемый наlinprog
c
. Какая матрица, по вашим словам, растет параллельно?3. Можете ли вы уточнить? (когда есть 3 переменных, A_eq имеет размер
(n_constraints, 3
. Добавление n переменных, это становится3 n
.)4.
x
нигде не появляется при вызове оптимизатора:scipy.optimize.linprog(c, A_eq, b_eq)
. Если нет способа определитьx
в первую очередь, как я могу сообщить оптимизатору, что я изменяю его обычную форму, чтобы она была объединена с новой переменной решенияy
, подобной той, которую вы предлагаете?5. Посмотрите на стандартную форму. Если y не является частью цели (в вашем случае использования), она все равно есть (в стандартной форме), но коэффициенты равны 0. Это означает, что конкатенация означает добавление 0 в c здесь. То же самое для A_eq. Добавляя 3 переменных y, для каждого ограничения требуется 3 новых коэффициента. Матрица получила 3 столбца. Может быть равно нулю или нет. Почему? Потому что это стандартная форма, и все реальные решатели выполняют разреженную алгебру .