我有一个这样的数据集:
import pandas as pd
Data = {'N':[106, 193, 87, 206, 32, 275, 14, 154, 55, 53],
'M':[25, 250, 100, 82, 17, 162, 8, 148, 6, 100],
'P':[131, 443, 187, 288, 48, 437, 22, 301, 61, 153],
'C':[0.20, 0.07, 0.03, 0.78, 0.80, 0.55, 0.83, 0.10, 0.15, 0.05],
'E':[-2.02, -1.59, -4.26, -0.32, -0.55, -0.77, -0.13, -1.34, -1.99, -2.89]
}
df = pd.DataFrame (Data, columns = ['N','M','P','C','E'])
最初,我想计算一个值X的向量,它将使方程最大化:
df["R"] = (df["P"] * df["C"] * df["X"] ) + (df["M"] * df["C"] * df["E"] * df["X"] ) + (df["P"] * df["C"] * df["E"] * df["X"]* df["X"] )
我在excel中通过微分发现了一个X值向量,该向量使上述等式最大化:
X = pd.DataFrame({'X': [0.15, 0.03, -0.15, 1.44, 0.74, 0.46, 3.70, 0.13, 0.21, -0.15]})
df = df.join(X)
然而,尽管这使每一行的R值最大化,但我需要考虑的另一个方程式是C_N的平均值,根据方程式:
df["C_N"] = df["C"] + (df["C"] * df["E"] * df["X"])
df.loc['Average Metrics'] = df.mean()
df.loc['Sum Metrics'] = df[:-1].sum()
使用这组X值,行中C_N的平均值为0.217774,R的总和为231.707。
我正在寻找:
针对0至1(即帕累托最优阵线)之间的每个平均C_N值,绘制R总和的最大值是什么。
对于该前沿的每个点(即边界上的非支配点),我希望能够找到所使用的X值的向量。
对此将提供任何帮助。