Линейное программирование с помощью cvxpy - PullRequest
0 голосов
/ 06 декабря 2018

Я хотел бы спросить вас о линейной программе для оптимизации.

У меня есть целевая функция и функции ограничения, как показано ниже,

  • переменные (x1, x2,x3, x4, x5, x6) являются количествами продуктов, и количества продуктов теперь должны быть фиксированными числами.
  • целью этой проблемы является оптимизация количества продуктов.

    1. Целевая функция (cT * [x1, x2, x3, x4, x5, x6])

      [[c11, c12, c13, c14, c15 c16],
      
      [c21, c22, c23, c24, c25, c26],
                                    X     [x1, x2, x3, x4, x5, x6]  
      [c31, c32, c33, c34, c35, c36],
      
      [c41, c42, c43, c44, c45, c45]]
      

    Результат, который я хотел быоптимизировать будет как показано ниже

    c11*x1 + c12*x2 + c13*x3 + c14*x4 + c15*x5 + c16*x6 +
    c21*x1 + c22*x2 + c23*x3 + c24*x4 + c25*x5 + c26*x6 + 
    c31*x1 + c32*x2 + c33*x3 + c34*x4 + c35*x5 + c36*x6 + 
    c41*x1 + c42*x2 + c43*x3 + c44*x4 + c45*x5 + c46*x6 = optimized value
    
  • Функция ограничения

Проблема, от которой я страдаю, заключается в "Целевой функции Cs (c1,1 ~ c4,5)".

Я решил линейное программирование, которое имеет целые значения в целевых функциях, но не матрицу.

Я пробовал все другие способы, которые мог, но теперь мне действительно нужна помощь в этом.

Пожалуйста, предложите мне любые идеи или коды для этого вопроса.

1 Ответ

0 голосов
/ 07 декабря 2018

Предположим, что вы сохранили исходный cij в массиве numpy, вы можете сначала суммировать такие термины, как c11 + c21 + c31 + c41.Это может быть сделано путем суммирования каждого столбца, попробуйте c.sum (axis = 0)

>>> import numpy as np
>>> c = np.arange(24).reshape(4,6)
>>> c
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> c = c.sum(axis=0)
>>> c
array([36, 40, 44, 48, 52, 56])
...