Линейное программирование: Как ввести вторую переменную решения (массив) в оптимизацию Python?

#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 столбца. Может быть равно нулю или нет. Почему? Потому что это стандартная форма, и все реальные решатели выполняют разреженную алгебру .