Только в Python и используя данные из фрейма Pandas, как я могу использовать PuLP для решения задач линейного программирования так же, как я могу в Excel? Какой бюджет должен быть выделен каждому каналу в колонке «Новый бюджет», чтобы мы максимально увеличили общее количество оценочных успехов? Я действительно ищу конкретный пример , используя данные из dataframe и не очень совет высокого уровня.Линейное программирование (Simplex LP) PuLP?
Настройка Проблема данных
Channel 30-day Cost Trials Success Cost Min Cost Max New Budget
0 Channel1 1765.21 9865 812 882.61 2647.82 0
1 Channel2 2700.00 15000 900 1350.00 4050.00 0
2 Channel3 2160.00 12000 333 1080.00 3240.00 0
Это Максимизация проблема.
целевая функция является:
objective_function = sum((df['New Budget']/(df['30-day Cost']/df['Trials']))*(df['Success']/df['Trials']))
В ограничения являются:
- Сумма
df['New Budget']
должна быть равна5000
New Budget
для данного канала не может идти ниже, чемCost Min
New Budget
для данного канала не может пойти не выше чемCost Max
Любые идеи, как перевести эту панд dataframe решатель линейной задачи, используя Pulp или любой другой решатель подход? Конечным результатом будет то, что вы видите на изображении ниже.
В том же примере, что если у меня есть две переменные. Например, в настоящее время $ G $ 2: $ G $ 4 существует, если требуется что-то вроде $ G $ 2: $ H $ 6 как изменение переменной в целлюлозе. –
@josliber, мне любопытно, почему вы используете '1.0' в своей целевой функции, где OP использует' df ['New Budget'] '? Это потому, что 'df ['New Budget']' являются ячейками переменных? Я пытаюсь сопоставить это с моей собственной проблемой, но не могу понять, где разместить мои переменные ячейки. Благодаря! – tmthyjames
@tmthyjames Я использую '1.0/(df ['30 -day Cost '] [idx]/df [' Trials '] [idx])) * (df [' Success '] [idx]/float (df [ 'Trials'] [idx]) ', потому что это целевая функция OP из их таблицы Excel. Если у вас есть другая формула, вы должны использовать это вместо этого. – josliber