pythonscipy/facile优化帮助:不确定如何构造logi

2024-05-17 15:51:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对一个和进行优化,只是不知道如何正确地编写代码。检查了一堆其他的线程scipy.optimization.minimize最小化但仍有困难。希望有人能给我指出正确的方向和解释。你知道吗

我的目标:代码中有以下不同长度的表格。我希望我的算法从A中选择2行,从B中选择3行,从C中选择2行,从D中选择1行,从E中选择1行。它不能两次选择同一个条目。我想优化所有行选项中x的最大和,但对y的相应和设置一个限制,使其不超过4。另外,对于在列D中选取的行的任何label2,我希望在label1中具有该值的所有其他表中的所有行都从选择中排除。最后一次真的很挣扎。。。你知道吗

摘要:表D的所选值的Want max(sum(x))st sum(y)<;4和label2不是表A、B、C、E的所选值的元素

输出应该是所选的行。你知道吗

谢谢你的帮助!只是我似乎无法理解这件事,它已经困扰了我好几天了。谢谢!你知道吗

import pandas as pd
import numpy as np

def make_table(x):
    categories = ['a','b','c','d','e']
    labels = []

    for i in range(0,x):
        j = np.random.choice(5, 2, replace=False)
        labels.append([categories[j[0]],categories[j[1]]])


    X1 = pd.DataFrame({
    'x': np.random.randn(x),
    'y': np.random.randn(x)
    })

    X2 = pd.DataFrame(np.array(labels), columns=['label1','label2'])

    return pd.concat([X2,X1], axis=1)

A = make_table(50)
B = make_table(100)
C = make_table(50)
D = make_table(25)
E = A+B+C+D

Sample table (only showing first 6 rows. All tables look like this though):
label1 label2         x         y
e      a  0.394106  1.961436
a      b -0.802064  0.051326
a      e  1.819099 -1.205606
e      b  0.792452 -0.535669
b      d -1.290806 -1.146422
a      b -0.530618 -0.871684
...

Tags: 代码importdataframemakelabelsasnptable