1
Basic Coding Exercise
Guia para exercício de simulação no Pyplan
Basic Coding Exercise
2
1.
Introdução
O documento a seguir contém o tutorial para executar o exercício chamado Basic Coding Exercise disponível em https://my.pyplan.com/ entre os tutoriais.
2.
Objetivo e descrição do exercício
• Usar os comandos básicos de modelagem no Pyplan. • Fortalecer os conceitos de Pyplan.
Ele trabalhará com o exemplo de uma empresa de gás, modelando sua demanda, custos e margem bruta por um período de 6 anos.
Em relação à demanda, a que é simulada com um comportamento de sazonalidade, serão modeladas quatro categorias de clientes: industrial, residencial, comercial e GNG. Como as duas primeiras categorias são de maior relevância, o trabalho começará apenas com elas e depois incorporará as demais no relatório.
Basic Coding Exercise
3 É simulado que a empresa possui um percentual de participação de mercado que cresce pelos dois anos primeiros anos e se estabiliza.
Com relação aos custos, o serão imputados os custos unitários e os custos totais serão calculados. A partir dos custos unitários médios e considerando a mark up que a empresa aplica de acordo com a categoria, as taxas serão calculadas e, em seguida, obtidas as receitas.
Por fim, será determinada a margem bruta para as principais categorias de clientes.
Na segunda parte do exercício, as demais categorias de clientes serão incorporadas para obter receita total e exemplificar a criação de relatórios.
A imagem a seguir corresponde ao modelo final que pode ser consultado entre os tutoriais disponíveis sob o título 07- Basic Coding Exercise Solved.
Basic Coding Exercise
4
3.
Início do exercício
Para iniciar a modelagem, você deve copiar para o seu espaço pessoal a pasta chamada 07- Basic Coding
Exercise, localizada entre os tutoriais disponíveis em Pyplan.
Para isso, você deve selecionar a pasta acessando o file manager de Pyplan e pressionar o botão “copy to my workspace”
Na sequência, você deve abrir, na sua área de trabalho pessoal, o modelo em branco chamado 07- Basic
Basic Coding Exercise
5 Este modelo contém não apenas as caixas de texto que ajudarão a organizar, mas também os índices
"time" e "totaltime", que devem ser usados posteriormente, já definidos (eles estão no módulo "Public
Variables", dentro de "Novix Library").
Como referência, é possível sempre verificar o modelo chamado 07- Exercício Básico de Codificação
Solved.ppl, onde o exercício final está localizado.
Lembrar da convenção de cores
Antes de iniciar o processo de modelagem, a convenção sobre a cor dos nós deve ser lembrada: os nós que contêm inputs devem ser coloridos em amarelo (código ffff4b), aqueles que indicam fórmulas ou cálculos do sistema azul (código 4cbcff), aqueles que representam um output do cor violeta (código
cb98ff) e os dos relatório de cor cinza (código cccccc). A cor dos índices é o standard (código 9999ff), que
pode ser incluído em um módulo, lembrando que sua cor é azul claro (código 9fc5e8).
O seguinte arquivo Excel contém os dados que serão necessários no modelo.
Basic exercise - Data for exercise in Pyplan.xlsx
4.
Projeção de demanda
Siga as etapas seguintes para executar a projeção de demanda:
a. Criar um índice para as diferentes categorias de clientes ("Industrial", "Residential") com o título
“Client Category”.
Como a convenção adotada é usar como primer caractere do ID a identificação característica do módulo (neste caso modelo) em que a lógica está localizada, ele deve ser colocado na frente do ID "ex" para indicar que ele começa a partir do modelo exercise (a mesma consideração deve ser tomada para o restante dos índices e nós). Além disso, como essas são categorias de demanda, é conveniente colocar o ID "dem" em primeiro lugar.
Basic Coding Exercise
6
• Título: Client Category
• Id: ex_dem_client_category • Cor: standard
b. A demanda volumétrica potencial será uma variável exógena do modelo cujo nó será chamado “Potential Volumetric Demand”. Para fazer isso, criar um nó com uma tabela contendo os índices
“Client Category” e “totaltime”. Copiar os dados encontrados no exercício Basic exercise - Data for exercise in Pyplan.xlsx .
Confira o vídeo a seguir no minuto 1.25 para ver como criar uma tabela.
• Título: Potential Volumetric Demand
• Id: ex_dem_potential_volumetric • Cor: amarelo
c. Gerar um nó com a informação de demanda volumétrica e o índice "time" (índice encontrado no local detalhado acima). Usar a função evatime () para isso.
• Título: Volumetric Demand
• Id: ex_dem_volumetric
• Cor: azul
d. Criar um nó com a porcentagem de participação de mercado e chame-lo "%Market Share". Fazer uma tabela em "totaltime" (índice encontrado no local detalhado acima) e copiar os dados encontrados no arquivo Excel mencionado acima.
• Título: % Market Share
• Id: ex_dem_market_share
Basic Coding Exercise
7 e. Calcular a demanda projetada como o produto entre a demanda volumétrica e a % de
participação de mercado.
Dica: lembrar usar evatime para modificar o índice de totaltime da input % market share.
• Título: Projected Demand
• Id: ex_dem_projected
• Cor: azul
Parabéns, você criou sua primeira previsão de demanda!
5.
Projeção de custos de fornecimento
A existência de dois contratos de fornecimento com preços diferenciados será simulada e um custo unitário médio será calculado.
Siga as etapas abaixo para executar a projeção de demanda:
a. Fazer uma tabela no totaltime com o valor diário contratado para o contrato A. Copiar os dados do arquivo Excel.
• Título: DQC A Contract • Id: ex_dqc_a_contract
• Cor: amarelo
b. Fazer um índice com as categorias "A Contract" e "Spot", chame-o de "Contract type". Lembrar colocar "cos" antes do índice, bem como para as categorias de clientes foi usado "dem".
• Título: Contract type • Id: ex_cos_contract_type
• Cor: standard
c. Gerar um nó para a quantidade de contrato A, que terá um máximo na demanda total projetada ou na quantidade contratada. Chame esse nó "A Contract". Usar a função condicional xr.where
().
Lembre-se de que, para calcular a demanda total projetada, é necessário somar as categorias de clientes da demanda projetada calculada anteriormente; para isso, use a função dataArray.sum
Basic Coding Exercise
8
• Título: A Contract • Id: ex_a_contract
• Cor: azul
d. Calcular a quantidade de spot como a diferença entre a demanda total projetada e o contrato A. Para fazer isso, use a função xr.ufuncs.maximum ().
• Título: Spot
• Id: ex_spot
• Cor: azul
e. Os custos unitários do contrato e do spot serão exógenos. Fazer uma tabela com os índices "Contract Type" e "totaltime".
• Título: Unitary Cost per Contract
• Id: ex_unitary_cost_per_contract
• Cor: azul
f. Calcular o custo total de gás em um novo nó. Para isso, usar a função evatime() com os custos unitários que foram alocados no totaltime. Usar a função subscript() com custos unitários para poder fabricar os produtos, pois os valores de cada fonte de fornecimento virão de nós separados.
• Título: Total Cost
• Id: ex_total_cost
• Cor: azul
g. Calcular o custo unitário total do gás, fazendo a relação entre o custo total e a demanda total projetada.
Dica: usar a função .sum para somar o índice ex_dem_client_category
• Título: Total Unit Cost
• Id: ex_total_unit_cost
• Cor: azul
6.
Margem Bruta
Basic Coding Exercise
9 a. Criar uma tabela com a % de markup para cada categoria de clientes. Uma % constante sobre os
custos é assumida.
Usar a função create_dataarray() e o índice "Client Category". Copiar os dados encontrados no arquivo Excel.
• Título: % of Markup
• Id: ex_margin
• Cor: amarelo
b. A taxa será igual ao produto entre o custo unitário e (1+% de markup).
• Título: Tariff
• Id: ex_tariff
• Cor: azul
c. A receitas serão iguais à taxa multiplicada pela demanda.
• Título: Revenue
• Id: ex_revenue
• Cor: azul
d. A margem bruta será igual à receita menos o custo total. Para somar o índice da receita, usar a função dataArray.sum().
• Título: Gross Margin
• Id: ex_gross_margin
• Cor: violeta
Basic Coding Exercise
10
7.
Relatório
Muitas vezes, é útil criar visualizações diferentes da informação calculada no modelo para apresentá-la de maneira mais simples e organizada. Esses nós costumam ser chamados de "relatórios".
Siga as etapas abaixo para criar o relatório proposto.
a. Criar um índice com as demais categorias de clientes: "GNG" e "comercial".
• Título: Exogen Client Category
• Id: ex_dem_exogen_client_category
• Cor: standard
b. Gerar uma tabela com as receitas GNC e comercial usando os índices "totaltime" e "Exogen Client Category". Preencher com a informação de receitas disponível no arquivo Excel.
• Título: Revenue GNG Commercial
• Id: rep_revenue_gng_commercial
• Cor: standard
c. Calcular as receitas de todas as categorias. Para fazer isso:
I. Criar um índice contendo todas as categorias usando a função concat_index().
• Título: Full Client Category
• Id: ex_dem_full_client_category
• Cor: standard
II. Criar uma tabela com a renda de todas as categorias usando a função change_index(). Anexar .fillna(0) após a função para que os valores null sejam substituídos por zero e, em seguida, a tabela possa ser formada. Caso contrário, uma tabela com todos os elementos null será obtida.
• Título: Full Revenue
• Id: rep_revenue_full
• Cor: cinza
d. Incluir os nós resultantes do relatório (exceto o índice) em um módulo chamado "Report".
• Título: Report
• Id: ex_report
Basic Coding Exercise
11
Dica: Criar o módulo e depois arrastar os nós até o módulo "baile" para que eles sejam contidos por ele.
A imagem a seguir mostra os nós dentro do módulo.
8.
Visualização
Pyplan possui uma poderosa camada de visualização que permite consumir a informação graficamente. É possível acessar essa camada fazendo click no ícone a seguir para criar suas próprias interfaces:
Para criar sua interface, siga as etapas abaixo.
a. Criar uma interface nova y chame-a “Full Revenue Interface”. I. Procurar o nó “Full Revenue” fazendo click em Wizard.
Basic Coding Exercise
12 II. Dar formato condicional para os valores menores que 100 (from:0, to: 100) colorindo o
fundo em vermelho.
III. Adicionar um gráfico que apresente a evolução da receita total por categoria de cliente e por ano, procurando esse nó com o Wizard após adicionar um novo widget.
IV. Adicionar o índice “Full Client Category” fazendo click em Wizard. Com o mesmo procedimento, procurar o índice “Time” e dê o formato Range.
Dica
: depois de ter todos os elementos da sua interface, reserve o tempo necessário para acomodar os diferentes objetos.A imagem a seguir apresenta a interface desejada: