none
Como criar uma SIMULAÇÃO?

    Question

  • Olá galerinha.

    Tenho um projeto pra fazer que é o seguinte:

    A minha turma da faculdade se dividirá em 4 equipes, cada equipe será uma "empresa"

    Essas empresas vão fazer escolhas dentro do programa. Inicialmente o cenário será de vendas, então, cada empresa definirá as seguintes variáveis:

    1 - Preço do Produto

    2 - Prazo de Pagamento

    3 - Desconto

    4 - Qualidade do produto (ruim, bom, excelente)

     

    Após definirem estas propriedades, irão colicar no botão REGISTRAR DECISÕES. Quando todas as empresas tiverem enviado suas decisões, o professor irá então clicar no botão INICIAR SIMULAÇÃO DE VENDAS.

    A idéia é simples, mas a implementação nem tanto...

    O programa terá um "mercado", por exemplo 100.000 habitantes. Isto é uma variável numérica q foi configurada antes pelo professor e representam no jogo 100.000 compradores.

    Então, como fazer o cálculo da simulação?

    Como construir esse logarítimo?

    Pergunto isto pq pessoas tem escolhas diferentes, por exemplo, umas preferem preço, outras qualidade, outras prazos de pagamento e assim por diante... e é claro q mesmo uma empresa q escolheu errado suas decisões ainda pode vender alguma coisa....

    Assim sendo, alguém tem uma idéia de onde posso encontrar um artigo que fale a respeito de simulação, ou vcs mesmo tem uma idéia de como criar esse tipo de logarítimo?

    Grande abraço a todos.


    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.
    Thursday, May 27, 2010 9:00 PM

Answers

  • O mais importante é o que vc quer obter como resultado da simualçao. 

    Vc quer ver qual é o comportamento quando uma das empresas altera seu perfil (ex aumenta qualidade e aumenta preço)?

    Vc quer ver qual é a empresa que tem mais sucesso dependendo do perfil médio dos compradores?

     

    Simulaçao é temporal... Vc tem que definir um periodo (por exemplo, um ano fiscal). Depois vc tem que definir uma maneira que esses 100mil compradores compram.. tipo, Um evento aleatorio poderia ser uma promoçao. Isso dispara um evento que lista os compradores que so compram em promoçoes e decidir se eles compram ou nao.

    Eu vejo um modelo de dois objetos

    EMPRESA

    Propriedades (preço, prazo, qualidade)

    Evento (venda, promoçao)

     

    COMPRADOR

    Propriedades (prefentencia, poder de compra)

    Metodos (Compra)

     

    Depois vc tem que fazer um loop, por exemplo, a cada dia, quantos compradores vao as compras e qual é a situaçao de cada empresa...

    A EMPRESA pode ter uma propriedade de % de investimento em qualidade, p.ex, onde uma parcela do faturamento diario seria investido em qualidade... ou um trigger, quando as vendas forem abaixo de x crie uma promoçao com uma reduçao de y% no valor do produto.

     

    Eu começaria com um modelo basico, adicionando melhorias, uma a uma... 

     

    Att

     

     

     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    • Marked as answer by Tianodraco Saturday, May 29, 2010 11:02 AM
    Friday, May 28, 2010 3:09 PM
    Moderator
  • Bom eu vi esse material

    http://www.mpsantos.com.br/

     

    O melhor softwrae de simulaçao que eu conheço é o ARENA (Rockwell). Eu sei que existe uma versao Student totalmente gratuita, mas com varias limitaçoes... mas creio que vc vai conseguir jogar esse seu modelo la dentro

     

    Att


     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    • Marked as answer by Tianodraco Saturday, May 29, 2010 11:02 AM
    Friday, May 28, 2010 3:45 PM
    Moderator
  • vc pode alterar o modelo que eu passei usando estatistica... mas para isso funcionar direito vc teria que ter umas certas informações... que variam entre cidades ate mesmo bairros... e como vc disse epocas do anos...

    vc teria que criar uma tabela com umas informacoes do tipo: porcentagem da população que prefere qualidade, prazo, preço e etc, para cada epoca do ano... da regiao.. por sexo...

    digamos que seja uma cidade "irreal" num periodo do ano q vc possa escolher... seria algo como

    60% Preço
    30% Qualidade
    15% prazo
    5% desconto

    gera-se um numero aleatorio de 1 a 100 se for maior que 60 entao a decisao é por preço, se for de 30 a 59 é por qualidade, de 15 a 30 prazo e abaixo de 5 desconto

    algo assim...

    agora para um exemplo mais complexo vc teria que usar tabelas do tipo

    Preco 
    60% Decisivo
    30% Importante
    20% Indiferente

    Qualidade
    40% Decisivo
    50% Importante
    10% Indiferente

    etc

    e gerar 4 numero aleatorios de 1 a 100

    por exemplo da 20 para preco e 80 para Qualidade isso é

    20% (indiferente) para preco
    80% (decisivo) para qualidade

    a change de comprar pela qualidade

    se fosse 60 e 80 teria change de comprar por qualidade e preco... mas ai por qualidade é maior...

    se fosse 40 e 40 com certeza ambos sao importante... mas nesse publico qualidade ganha pq 50% e maior que 30%

    por ai vai...


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    • Marked as answer by Tianodraco Saturday, May 29, 2010 11:02 AM
    Saturday, May 29, 2010 6:37 AM
    Moderator

All replies

  • Cristiano,

    Creio que não entendi muito bem sua necessidade,

    Mas voce quer gerar essa simulação aleatoria, ou alguem vai dar essas 100000 entradas? Porque se for é só fazer um while ou for limitado com essa numeração de habitantes.

    Friday, May 28, 2010 12:42 AM
  • Se quiser gerar uma base de dados de Clientes (com Nome e Cidade por exemplo) vc pode usar o http://www.generatedata.com/ que quebra um galho...

    Para simular as preferencias de vendas... acredito que algo parecido com isso pode reslver:

    // Simulando 100.000 vendas
    
    // Cria um gerador de numeros randomicos
    Random random = new Random();
    for (int i = 0; i < 100000; i++)
    {			 		
      // Gera aleatoriamente a preferencia do comprador atual
      int preferencia = random.Next(0, 3);
      switch (preferencia) {
        case 0: // Prefere Maior Prazo
          // Pesquisa pelo produto com maior prazo
          // EX: "SELECT TOP 1 * FROM PRODUTO ORDER BY PRAZO DESC";
          // Gravar registro de venda do produto que tem mais prazo
          break;
        case 1: // Prefere Maior Desconto
          // Pesquisa pelo produto com maior desconto
          // EX: "SELECT TOP 1 * FROM PRODUTO ORDER BY DESCONTO DESC";
          // Gravar registro de venda do produto que tem mais desconto
          break;
        case 2: // Prefere Maior Qualidade
          // Pesquisa pelo produto com maior qualidade
          // EX: "SELECT TOP 1 * FROM PRODUTO ORDER BY QUALIDADE DESC";
          // Gravar registro de venda do produto que tem mais qualidade
          break;
        case 3: // Prefere Menor Preco
          // Pesquisa pelo produto com menor Preco
          // EX: "SELECT TOP 1 * FROM PRODUTO ORDER BY PRECO";
          // Gravar registro de venda do produto que tem menos preço
          break;
      }
    }

     


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    Friday, May 28, 2010 12:58 AM
    Moderator
  • Como o rui santos fez, o uso do random para gerar um numero aleatorio seria uma otima saida para seu problema.

    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://dotnettime.spaces.live.com/

    Friday, May 28, 2010 7:44 AM
  • Rui, excelente seu modelo, mas na verdade é algo mais delicado, explico:

    Vamos supor que o cliente A está na frente de 4 empresas e este cliente é muito exigente na questão da Qualidade do Produto.

    Um outro cliente B está tb na frente das 4 empresas, mas este presta mais atenção no preço.

    Uma das empresas é excelente em qualidade, mas o preço do produto é exorbitante, muito superior ao das outras 3.

    Já outra empresa tem um produto muito simplista, de baixissima qualidade e preço lá embaixo.

     

    O cliente A poderia então, mesmo gostando de qualidade, abrir mão do produto de maior qualidade por causa do seu preço exorbitante, e optar por outra empresa que tem um produto de qualidade quase igual (ou igual) mas que dá um prazo de pagamento maior do que a concorrente.

    Da mesma forma, o cliente B poderia escolher escolher uma outra empresa que tem um produto m pouco mais caro, mas que dê um maior desconto, ficando praticamente do mesmo preço da empresa rival....

    Ou seja, estes fatores interagem entre si, formando a OPNIÃO do cliente.

    O maior desafio é programar essa OPNIÃO. Isto pq cada pessoa (comprador) tem um nível de mportancia para preço, prazo, qualidade e desconto... sem falar de outras variáveis que podem surgir depois como a sazonalidade, o bom humor, o 13º salário e assim por diante. Assim sendo, uma simples aleatoriedade deixa imperfeito a simulação, apesar de ser uma saída.

    Outra coisa qe escqueci de dizer (me desculpem) é que o mercado deve ser sensível a uma dessas 4 variáveis (preço, prazo, qualidade e desconto). O professor define um mercado (100.000) e escolhe a sensibilidade. Isto quer dizer que, por menor que seja o seu preço, por exemplo, num mecado sensível vai vencer quem tiver melhor qualidade (é claro tb q há um limite de preço pra evitar absurdos)

    Alguém já ouviu falar de "Programação Linear"? Será q isto pode ser aplicado aqui?


    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.
    Friday, May 28, 2010 12:14 PM
  • Na verdade vc vai ter que criar uma fila com os 100.000 compradores (objeto com a propriedade preferencia) e processar item a item.

    Imagine uma fila unica, onde cada pessoa a chegar sua sua vez, escolhe uma dos quatro opçoes segundo sua preferencia (talvez mais um fator aleatorio). Armazene no objeto o resultado da sua escolha... O que eu creio que muda no seu modelo é o que cada empresa oferece... se eu entendi direito, uma empresa que investe em qualidade (e por consequencia aumenta o preço) começa atrair um tipo de comprador, mas afastar outros... e creio que seja isso que vai variar ao longo da simulaçao.

    Se for isso, eu tenho uma idéia de como implementar...

    Programaçao Linear pode se encaixar se o modelo for linear... coisa que aparentemente seu problema nao é.

    http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_linear

     

    Prograçao linear tem como objetivo encontrar uma soluçao em um cenario onde vc tem uma funçao objetivo (tipo menor preco) e uma serie de restriçoes( qualidade, prazo de entrega). Veja o metodo Simplex:

    http://en.wikipedia.org/wiki/Simplex_algorithm

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    Friday, May 28, 2010 1:48 PM
    Moderator
  • William vc pegou o fio da miada. Eu tava tentando descobri uma maneira de como transforma este cenário em variáveis de uma programação linear, mas não consegui.

    Acho q a solução sera a não linear, vou pesquisar a respeito na internet.


    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.
    Friday, May 28, 2010 2:44 PM
  • O mais importante é o que vc quer obter como resultado da simualçao. 

    Vc quer ver qual é o comportamento quando uma das empresas altera seu perfil (ex aumenta qualidade e aumenta preço)?

    Vc quer ver qual é a empresa que tem mais sucesso dependendo do perfil médio dos compradores?

     

    Simulaçao é temporal... Vc tem que definir um periodo (por exemplo, um ano fiscal). Depois vc tem que definir uma maneira que esses 100mil compradores compram.. tipo, Um evento aleatorio poderia ser uma promoçao. Isso dispara um evento que lista os compradores que so compram em promoçoes e decidir se eles compram ou nao.

    Eu vejo um modelo de dois objetos

    EMPRESA

    Propriedades (preço, prazo, qualidade)

    Evento (venda, promoçao)

     

    COMPRADOR

    Propriedades (prefentencia, poder de compra)

    Metodos (Compra)

     

    Depois vc tem que fazer um loop, por exemplo, a cada dia, quantos compradores vao as compras e qual é a situaçao de cada empresa...

    A EMPRESA pode ter uma propriedade de % de investimento em qualidade, p.ex, onde uma parcela do faturamento diario seria investido em qualidade... ou um trigger, quando as vendas forem abaixo de x crie uma promoçao com uma reduçao de y% no valor do produto.

     

    Eu começaria com um modelo basico, adicionando melhorias, uma a uma... 

     

    Att

     

     

     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    • Marked as answer by Tianodraco Saturday, May 29, 2010 11:02 AM
    Friday, May 28, 2010 3:09 PM
    Moderator
  • É exatamente isto! Mudando uma variável para analizarmos novos resultados.

    Tem alguma maneira de fazer isso com programação não-linear?

    Na verdade tô procurando um bom texto q ensine PNL desde o básico, bem didático mesmo, mas não estou encontrando.


    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.
    Friday, May 28, 2010 3:25 PM
  • Bom eu vi esse material

    http://www.mpsantos.com.br/

     

    O melhor softwrae de simulaçao que eu conheço é o ARENA (Rockwell). Eu sei que existe uma versao Student totalmente gratuita, mas com varias limitaçoes... mas creio que vc vai conseguir jogar esse seu modelo la dentro

     

    Att


     


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    • Marked as answer by Tianodraco Saturday, May 29, 2010 11:02 AM
    Friday, May 28, 2010 3:45 PM
    Moderator
  • vc pode alterar o modelo que eu passei usando estatistica... mas para isso funcionar direito vc teria que ter umas certas informações... que variam entre cidades ate mesmo bairros... e como vc disse epocas do anos...

    vc teria que criar uma tabela com umas informacoes do tipo: porcentagem da população que prefere qualidade, prazo, preço e etc, para cada epoca do ano... da regiao.. por sexo...

    digamos que seja uma cidade "irreal" num periodo do ano q vc possa escolher... seria algo como

    60% Preço
    30% Qualidade
    15% prazo
    5% desconto

    gera-se um numero aleatorio de 1 a 100 se for maior que 60 entao a decisao é por preço, se for de 30 a 59 é por qualidade, de 15 a 30 prazo e abaixo de 5 desconto

    algo assim...

    agora para um exemplo mais complexo vc teria que usar tabelas do tipo

    Preco 
    60% Decisivo
    30% Importante
    20% Indiferente

    Qualidade
    40% Decisivo
    50% Importante
    10% Indiferente

    etc

    e gerar 4 numero aleatorios de 1 a 100

    por exemplo da 20 para preco e 80 para Qualidade isso é

    20% (indiferente) para preco
    80% (decisivo) para qualidade

    a change de comprar pela qualidade

    se fosse 60 e 80 teria change de comprar por qualidade e preco... mas ai por qualidade é maior...

    se fosse 40 e 40 com certeza ambos sao importante... mas nesse publico qualidade ganha pq 50% e maior que 30%

    por ai vai...


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    • Marked as answer by Tianodraco Saturday, May 29, 2010 11:02 AM
    Saturday, May 29, 2010 6:37 AM
    Moderator
  • Excelente xplanação, Rui, com as idéias q vc nos deu e com as dicas do William, poderemos criar um grande software de simulação.

    Muito obrigado mesmo a vcs 2!


    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.
    Saturday, May 29, 2010 11:02 AM
  • Depois post ai a solução de vcs para os proximos que vierem ler isso aqui ok ???

    T+


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    Saturday, May 29, 2010 9:15 PM
    Moderator