Интерфейс Парето для оптимизации

#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.

Я ищу:

  1. Постройте график, каким было бы максимальное значение суммы R для каждого из средних значений C_N в диапазоне от 0 до 1 (т. е. Оптимальный фронт Парето).

  2. Для каждой из точек на этом интерфейсе (т. Е. точек, не являющихся доминирующими на границе) Я хотел бы иметь возможность узнать вектор значений X, которые были использованы.

Любая помощь в этом направлении была бы высоко оценена.

Комментарии:

1. Похоже, вы, возможно, захотите использовать библиотеку регрессии, чтобы вам не приходилось вычислять X вручную. Ознакомьтесь с такими вещами, как statsmodels выполнение регрессии и patsy создание входных данных для регрессии из спецификации формулы. (Очевидно, что это огромная тема, так что это всего лишь одно возможное направление.)

2. я знаю (немного) интерфейс Парето, но я не понимаю вашу среду, связь того, что вы делаете, и pareto, не могли бы вы уточнить желаемый результат. почему вы используете это уравнение PCX MCEX PCEXX