我从一个矩阵开始,唯一的规则是一行的前3个单元格必须加到该行的第4个单元格:
为了遵守该规则,我想基于第一个矩阵创建一个新矩阵,其中每列的前3行的总和应接近但不超过每列的第4个数字,如下所示:>
我认为这是可以使用excel在Solver中完成的工作,但是他正在寻找一种在Python中完成此工作的方法。如果我必须从头开始创建它,那很好,但我的问题是,是否存在诸如SciPy或其他库之类的东西,以便在可能的情况下避免重新发明轮子?
编辑: 我认为这个问题的第二部分还不清楚。
[[ 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
您总是从矩阵开始,在矩阵中水平方向上前三个单元的总和等于最后一个单元,即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)。 希望这可以清除一切。