Python Matrix Solver - PullRequest
       4

Python Matrix Solver

0 голосов
/ 25 марта 2019

Я начинаю с матрицы, единственное правило которой состоит в том, что первые 3 ячейки в строке должны складываться до 4-й ячейки в этой строке:

enter image description here

В соответствии с этим правилом я хочу создать новую матрицу, основанную на первой, где сумма первых 3 строк в каждом столбце должна быть как можно ближе к 4-му числу в каждом столбце, но не выше, например:

enter image description here

Я думаю, что это то, что можно сделать в Excel с помощью Solver, но я искал способ сделать это на Python. Если мне нужно создать это с нуля, это нормально, но мой вопрос: есть ли что-то вроде этого, SciPy или другая библиотека, чтобы я мог избежать повторного изобретения колеса, если это возможно?

EDIT: Я думаю, что вторая часть этой проблемы немного неясна.

[[ 2.  2.  2. 6.] -> 1st 3 cells can change but sum must always add up to 6
 [ 4.  4.  4. 12.] -> 1st 3 cells can change but sum must always add up to 12
 [ 6.  6.  6. 18.] -> 1st 3 cells can change but sum must always add up to 18
 [ 8.  16.  12. NA.]] -> This cannot change

Вы всегда начинаете с матрицы, в которой по горизонтали сумма первых 3 ячеек равна последней ячейке, т.е. 2,2,2,6. Сложной частью является оптимизация каждой строки так, чтобы по вертикали они были как можно ближе к суммированию до нижней ячейки. В этом примере 2,4,6,8 работает вертикально с первыми тремя, суммируя до 12. Результирующая матрица должна быть оптимизирована так, чтобы первые три сложили до 8, как это:

[[ 1.  3.  2. 6.] 
 [ 3.  5.  4. 12.]
 [ 4.  8.  6. 18.] 
 [ 8.  16.  12. NA.]]

В этой новой матрице все строки все еще суммируются с последней ячейкой, т.е. 1,3,2,6, а также по вертикали суммируются с последней ячейкой, т.е. 1,3,4,8. Надеюсь, это прояснит ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...