You are on page 1of 5
2ari2022 21646 POA_2022.ipynt - Colaboratory y Instalagdo da biblioteca Pulp pip install pulp Looking in indexes: https://pypi.org/simple, https: //us-python.pkg.dev/colab-wheels/t Collecting pulp Downloading PuLP. 1y3-non any.whl (14.3 MB) | | 14.3 2 1.1 MB/s Instal. ng collected packages: pulp Successfully installed pulp-2.7.0 ~ Leitura dos dados from google.colab import files import pandas as pd import io uploaded = files.upload() df = pd.read_csv(io.BytesI0(uploaded| “base.csv"})) dF Nenhum arquivo escolhido Upload widget is only available when the cell has been ‘executed in the current browser session, Please rerun this cell to enable Saving base.csv to base.csv Estado Segmentacio 0 ACRE 1 ALAGOAS 2 ALAGOAS 3 ALAGOAS 4 AMAZONAS 100 SAO PAULO 101 SERGIPE 102 SERGIPE 103 TOCANTINS 104 TOCANTINS 105 rows x 4 columns » Conjuntos auxiliares > 00> 8 RETAIL ooo Intengdo de compra Rentabilidade 9.736 32,092 12,254 9.933 19.074 38,983 11.999 16.329 9.452 18,225 11,70% 11,60% 11,00% 11,00% 11,50% 14,20% 11,20% 11,00% 11,20% 10,90% hitpsticolab.research.google.comvcrive/-bFhkz6ydosUXC25RMRzSptA2sDxNONusp=share_ink#priniMode=ttue 18 2ari2022 21646 POA_2022.ipynt - Colaboratory estados = dict(zip(df.index, df["tstado"])) intencoes = dict(zip(df.index, df["Inten¢do de conpra"])) rentabilidades = dict(zip(df.index, df["Rentabilidade"})) segmentacoes = dict(zip(df. index, df["Segmentacao"])) ~ Fungées auxiliares from typing import List from pulp import Lpvariable def ranking(index: int) -> int: r = dF["Segmentagao" ] [index] ifr return 6 ifr return 5 ifr return 4 ifr return 3 ifr return 2 return 1 not_none = lanbda item: item is not None; def estados_escolhidos(propostas: LpVariable)-> int: return len(set( Filter( not_none, [estados[i] if propostas[i] == 1 else None for i in df.i ») def segnentacoes_escolhidas(propostas: LpVariable) -> int return len(set( Filter( not_none, [segmentacoes[i] if propostas[i] = 1 else None for i in df. index] ») def intencoes_das_propostas(propostas: LpVariable): return [intencoes[index] * 1000 * propostas[index] for index in df. index] def objetivo(propostas: LpVariable): return [ float(rentabilidades[ index] .replace('X', '').replace(',","."))/10@ * escolha_da_proposta[ index] * ranking(index) for index in List(df.index)] » Construc&o do problema [Rankeado] hitpsticolab.research.google.comvcrive/-bFhkz6ydosUXC25RMRzSptA2sDxNONusp=share_ink#priniMode=ttue 215 2aviiy2022 2148 POA 2022:pyn® - Colaboratory from pandas.core.computation.ops import pprint_thing from pulp import * from collections import Counter problem = LpProblem("Rankeado Por Segmentacao", LpMaximize) 'Variaveis do problema’ # Variavel bindria que indica se a proposta X foi escolhida escolha_da_proposta = LpVariable.dicts("proposta", df.index, ®, 1, LpInteger) # Fun¢3o objetivo problem += 1pSum(objetivo(escolha_da_proposta)) Condigdes' # Escolher pelo menos uma proposta de todos os Estados problem += lpSum([estados_escolhidos(escolha_da_proposta)]) # Escolher pelo menos uma proposta de todas a segmentacées problem += 1pSum([segmentacoes_escolhidas(escolha_da_proposta)]) # Limite superior de inten¢des de compra no pode exceder 8.000.000 de doses problem += 1pSum(intencoes_das_propostas(escolha_da_proposta)) <= 8_900_000 status = problem.solve() /usr/local/1ib/python3.7/dist-packages/pulp/pulp.py:1352: UserWarning: Spaces are not warnings.warn("Spaces are not permitted in the name. Converted to '_'") > Propostas indices_das_propostas_aceitas = [] indices_das_propostas_rejeitadas = [] for variavel in problem. variables(): indice = int(variavel.name.split('_')[1]) if variavel.varvalue == 1: indices_das_propostas_aceitas append indice) else: indices_das_propostas_rejeitadas.append(indice) » Aceitas aceitas = df.filter(items=indices_das_propostas_aceitas, axis=@) aceitas hitpsticolab.research.google.comvrive/-bFhkz6ydosUXC25RMRzSptA2sDxNONusp=share_inkprintMode=ttue 35 2ari2022 21646 POA_2022.ipynt - Colaboratory Estado Segmentacao Inten¢ao de compra Rentabilidade 0 ACRE B 9.735 11,70% 1 ALAGOAS. A 32,092 11,60% 10 BAHIA B 69.844 12,30% 100 ‘SAO PAULO RETAIL 38.983 14.20% 101 SERGIPE B 11,999 11,20% 93 SANTA CATARINA D 171.979 12,80% 94 SANTA CATARINA RETAIL 21.222 12,90% 95 SAO PAULO A 595.305 14,50% 96 SAO PAULO AY 747.460 15,00% > Descartadas descartadas = df.filter(items=indices_das_propostas_rejeitadas, axis=0) descartadas Estado Segmentacéo Intengdo de compra Rentabilidade 60 PARANA D 505.565 12,00% 89 SANTA CATARINA A 979.336 13,50% 98 SAO PAULO c 796.956 14,20% 99 SAO PAULO D 826.841 14,00% hitpsticolab.research.google.comvrive/-bFhkz6ydosUXC25RMRzSptA2sDxNONusp=share_inkprintMode=ttue 45 2artt2022 21:48 POA_2022.ipynt - Colaboratory Produtos pagos do Colab - Cancelar contratos hitpstfcolab.research.google.convrive/t-bFhkz6ydosUXC2SRhRzSp A2sOxNON7usp=share_inktprntMod: 55

You might also like