Я начинаю с матрицы, единственное правило которой состоит в том, что первые 3 ячейки в строке должны складываться до 4-й ячейки в этой строке:
В соответствии с этим правилом я хочу создать новую матрицу, основанную на первой, где сумма первых 3 строк в каждом столбце должна быть как можно ближе к 4-му числу в каждом столбце, но не выше, например:
Я думаю, что это то, что можно сделать в 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.
Надеюсь, это прояснит ситуацию.