#python #pandas #optimization
#python #pandas #оптимизация
Вопрос:
У меня есть набор данных как таковой:
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"] )
Один вектор значений X, который я нашел с помощью дифференцирования в Excel, который максимизировал приведенное выше уравнение, равен:
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.
Я ищу:
-
Постройте график, каким было бы максимальное значение суммы R для каждого из средних значений C_N в диапазоне от 0 до 1 (т. е. Оптимальный фронт Парето).
-
Для каждой из точек на этом интерфейсе (т. Е. точек, не являющихся доминирующими на границе) Я хотел бы иметь возможность узнать вектор значений X, которые были использованы.
Любая помощь в этом направлении была бы высоко оценена.
Комментарии:
1. Похоже, вы, возможно, захотите использовать библиотеку регрессии, чтобы вам не приходилось вычислять
X
вручную. Ознакомьтесь с такими вещами, какstatsmodels
выполнение регрессии иpatsy
создание входных данных для регрессии из спецификации формулы. (Очевидно, что это огромная тема, так что это всего лишь одно возможное направление.)2. я знаю (немного) интерфейс Парето, но я не понимаю вашу среду, связь того, что вы делаете, и pareto, не могли бы вы уточнить желаемый результат. почему вы используете это уравнение PCX MCEX PCEXX