Python 如何使用SciPy优化多约束函数
我有三个数据帧,它们的列相同,如下所示:Python 如何使用SciPy优化多约束函数,python,pandas,scipy,scipy-optimize,scipy-optimize-minimize,Python,Pandas,Scipy,Scipy Optimize,Scipy Optimize Minimize,我有三个数据帧,它们的列相同,如下所示: df1 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d", "e"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [10, 11, 12, 13, 14]
df1 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d", "e"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [10, 11, 12, 13, 14]})
df2 = pandas.DataFrame(data = {'A' : ["a", "b", "c"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [30, 31, 32]})
df3 = pandas.DataFrame(data = {'A' : ["a", "b", "c", "d"], 'B' : [[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5],[0.1, 0.2, 0.3, 0.4, 0.5]], 'C' : [50, 51, 52, 53]})
我有第四个数据帧,其中行数对应于我拥有的数据帧数,所以这里我有3行,然后是3个数据帧
dfZ = pandas.DataFrame(data = {'Z' : [1, 2, 3]})
我想做的是计算第四列,基本上是C列除以B列。
我希望从B列中每行的值列表中选择每行一个值。该值应用于所有数据帧(意味着如果我为索引“a”选择0.5,则该值应用于索引为“a”的所有数据帧)。但该选择需要满足这些条件
df1.sum() == dfZ['Z'].iloc[0] # tolerence 10 to 20%
df2.sum() == dfZ['Z'].iloc[1] # tolerence 10 to 20%
df2.sum() == dfZ['Z'].iloc[2] # tolerence 10 to 20%
环顾四周,这似乎是一个优化问题,但我不知道如何使用SciPy来解决它。如果我理解正确,并且您希望优化索引的某些分区/选择,那么这是一个离散优化问题,SciPy可以为您做的不多。这更像是一个整数规划问题和scipy没有什么可以提供的。scipy的
全局优化
解算器可以做一些事情,但那只是一个黑客。如果我理解正确,你想优化一些索引的分区/选择,那么这是一个离散优化问题,scipy可以为你做的不多。这看起来更像是一个整数pr编程问题和scipy没有什么可以提供的。scipy的全局优化解算器可以做些什么,但那只是一个黑客。