Python 矩阵数学最大化

Python 矩阵数学最大化,python,pandas,math,matrix,Python,Pandas,Math,Matrix,我有一个数据框,它有一个魔术卡名称索引。这些列是相同的索引,导致我的收藏中的每一张卡的1081 x 1081数据帧与我的收藏中的每一张卡配对 我有一个代码,可以识别出组合良好的卡片。例如,“每当你抽一张牌”与“抽一张牌”牌很好地配对。我找到这两张卡的接合点,并将其值增加1 现在,我需要找到36张卡的最大值 但是,如何 随机选择卡片是无用的,有1.717391336个E+74个潜在组合。我已经尝试过提取最低的值,这减少了电位组合的集合,但即使在100张牌上,你也在谈论1.977204582 E+2

我有一个数据框,它有一个魔术卡名称索引。这些列是相同的索引,导致我的收藏中的每一张卡的1081 x 1081数据帧与我的收藏中的每一张卡配对

我有一个代码,可以识别出组合良好的卡片。例如,“每当你抽一张牌”与“抽一张牌”牌很好地配对。我找到这两张卡的接合点,并将其值增加1

现在,我需要找到36张卡的最大值

但是,如何

随机选择卡片是无用的,有1.717391336个E+74个潜在组合。我已经尝试过提取最低的值,这减少了电位组合的集合,但即使在100张牌上,你也在谈论1.977204582 E+27电位


这必须由比我更聪明的人来解决——你能给我指出正确的方向吗?

正如你已经指出的,组合数学在这里不站在你这边。有1081个选择36个可能的集合(二项式系数),因此毫无疑问要检查所有这些集合

我不知道在不知道1081x1081矩阵的情况下,找到一般问题的最佳集的任何可行解决方案

对于一般问题的近似解决方案,您可能希望尝试贪婪方法,同时在每个步骤后保留n个集合的历史记录,例如n=1000

因此,您可以从使用两张卡片的所有集合开始,即1081*1080/2组合,在矩阵中查找每个组合的值,并选择n个最大值

在第二步中,对于n个保留集中的每一个,使用第三张卡检查所有可能的组合(并检查重复集),即检查n*1079集,并保留n个最大值

在第三步中,用第四张卡检查n*1078组,依此类推


当然,在一般情况下,这并不能为您提供最佳解决方案,但对于您给定的情况,这可能已经足够好了。您还可以查看历史记录,了解步骤x中的最佳集合被步骤y>x中的另一个集合赶上的频率。根据您的矩阵,这种情况可能不会经常发生,甚至不会发生。

您有1081张卡吗?36从哪里来?您是否在数据帧中搜索特定36个条目的最大值?我有1081张卡。36通常是一副牌中你想要多少张牌的良好平衡。通常,60张牌组需要36张牌和24个地。没有一张卡在数据帧中会有36个组合-这意味着所有卡都与这张卡相关。我认为,对于1081张卡,它是2.46 E+67(1081选择36)。这是有意义的,并且类似于我在另一个问题中使用遗传算法来遍历列表并创建父/子集合。我只是觉得它设计过度了,但也许这是正确/最好的方法。