Mudanças entre as edições de "ADS29009-2019-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 363: Linha 363:
  
 
*[https://www.geeksforgeeks.org/measure-execution-time-with-high-precision-in-c-c/ Medição de Tempo no C]
 
*[https://www.geeksforgeeks.org/measure-execution-time-with-high-precision-in-c-c/ Medição de Tempo no C]
 +
 +
 +
=AULA 17 - Dia 11/10/2019=
 +
 +
 +
==Objetivos==
 +
 +
*PARTE 1
 +
**Introdução a Simulação a Eventos Discretos
 +
**Exemplo de simulação e estatística de uma fila MM1
 +
 +
*Parte 2
 +
**Preparação do robô para Feira de Ciências e Tecnologia
 +
 +
==Material de referência==
 +
 +
*[https://www.dropbox.com/s/amamol54anyxndj/SimulacaoAEventosDiscretos.pdf?dl=0 Slides de Introdução a Simulação a Eventos Discretos]
  
 
=Livros sobre ADS=
 
=Livros sobre ADS=

Edição das 10h13min de 18 de outubro de 2019

AULA 1 - Dia 30/07/2019

Objetivos

  • Apresentação da Disciplina (SIGA A)
  • Plano de Ensino (SIGA A)
  • Avaliação (SIGA A)

Introdução a ADS

  • Que projeto estou fazendo? Como procedo para fazer uma ADS?

Tarefa A1.1

  • Pesquisar um artigo sobre ADS em uma área de seu interesse. Analisar um arquivo a luz das etapas e conceitos discutidos nesta semana.

Fazer slides que devem ser postados na data anterior da apresentação. O slide deve apresentar:

  • Objetivo da ADS no artigo
  • Métricas
  • Parâmetros
  • Fatores
  • Workload
  • Técnicas usadas
  • Resumo de como são apresentados os dados
  • Conclusão Pessoal

APRESENTAÇÃO: Dia 9/8/2019

Material de Referência

AULA 2 - Dia 2/08/2019

Objetivos

  • Continuação conceitos de ADS

Material de Referência

AULA 3 - Dia 9/08/2019

Objetivos

  • Finalização Introdução ADS
  • Apresentação dos Trabalhos

AULA 4 - Dia 13/08/2019

Objetivos

  • Introdução a DTMC

Materialde Referência

https://www.dropbox.com/s/oz2dlua2kmc1w2m/CadeiasDeMarkovDiscretas_Parte1.pdf?dl=0

AULA 5 - Dia 16/08/2019

Objetivos

  • Continuação DTMC

Material de Referência

https://www.dropbox.com/s/oz2dlua2kmc1w2m/CadeiasDeMarkovDiscretas_Parte1.pdf?dl=0

Links Interessantes

AULA 6 - Dia 23/08/2019

Objetivos

  • Continuação DTMC
  • Simulação DTMC

Itens a constar da atividade de simulação

  • código fonte matlab
  • minirelatório com:
    • comparação dos resultados das probabilidades em regime estacionário conforme slide;
    • resposta as questões do slide
    • Uma pdf das transições de primeira passagem para os estados colocados no slide.

Material de Referência

  P = [ 
          0.2    0    0.8    0    0    0    0    0    0    0;
          0    0.2    0.3  0.3  0.2  0    0    0    0    0;
          0    0    0.1    0    0    0.9  0    0    0    0;
          0    0    0    0    0    0    1.0  0    0    0;
          0    0    0    0    0    0.3  0.7  0    0    0;
          0    0    0    0    0    0    0    0.2  0    0.8;
          0    0    0    0    0    0    0    0    0.8  0.2;
          1.0  0    0    0    0    0    0    0    0    0;
          0    1.0  0    0    0    0    0    0    0    0;
          0.2 0.6  0    0    0    0    0    0    0    0.2;
         ];

AULA 7 - Dia 27/08/2019

  • Simulação da DTMC (conclusão)

AULA 8 - Dia 30/08/2019

Objetivos

  • Aplicações de DTMC: Aloha Puro
  • Discussão de Projeto usando os Mindstorms

Slides desta Aula

Aula 9 - Dia 06/09/2019

  • Introdução a CTMC
  • Projeto de Desempenho sobre o Robô

Material de Referência

Links sobre o EV3


Aula 10 - Dia 10/09/2019

  • Instalação de tools C++ no ev3

Usar máquina virtual com Ubuntu 18.04

Fazer conforme

  • Toolchain

O make e o gcc devem estar instalados.

https://c4ev3.github.io/ (Lembrar que são ferramentas 32 bits)

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install libudev-dev pkg-config
wget -c http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
mkdir CodeSourcery
tar -jxvf ~/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C ~/CodeSourcery/
echo export PATH=~/CodeSourcery/arm-2009q1/bin/:$PATH >> ~/.bashrc && . ~/.bashrc 

  • Uploader (não usei diretamente pois fiz scp para robot@IP_ROBO (password "maker".
git clone --recursive https://github.com/c4ev3/ev3duder

Entrar e compilar usando o make Entrar em EV3-API/API e compilar. EU tive que editar o Makefile para remover a referência ao Windows

  • Compilar
arm-none-linux-gnueabi-gcc -I../EV3-API/API  -L../EV3-API/API/ alo.c -lev3api

Aula 11 - Dia 13/09/2019

Objetivos

  • CTMC - Aplicações: modelagelam da alocação de GTS no IEEE802.15.4

Problema (simplificação do GTS no IEEE 802.15.4

O padrão de rede sem fio IEEE802.15.4 prevê a comunicação sem BEACON (CSMA-CA) e com BEACON, onde parte do frame possui até 7 canais que podem ser alocados sob demanda por um coordenaodor (supor topologia em estrela com coordenador no centro). A alocação é realizada em canal de controle a parte. Construir uma cadeia de Markov em Tempo Contínuo de forma:

(i) a computar a probabilidade de bloqueio. Supor N nodos com número médio de requisições

(ii) como poderia ser computada a vazão esperada do sistema?

(iii) como poderíamos estimar a vazão na parte CSMA-CA (supor comportamento como Slotted Aloha)

(iv) na parte GTS, como poderíamos considerar dois grupos de nodos onde o primeiro grupo pode ocupar os 7 slots e o segundo grupo, com taxa diferente poderia ocupar até dois slots?

Aula 12 - Dia 20/09/2019

  • Introdução a Teoria de Filas
  • Filas MM1 com buffer ilimitado

Material de Referência

Aula 13 - Dia 24/09/2019

Objteivos

  • Desenvolvimento de Projeto de ADS

Visão geral do Software no Mindstorm

ADSProjetoMindstorm.png

Especificação dos Recursos Rest

Especificação das mensagens no socket

O "programa sob teste" se conecta no servidor Flask através de um socket. O programa se comporta como um servidor que recebe comandos atraváes de uma string de tamanho fixo (15 caracteres). A todo comando ele envia uma resposta também de 15 caracteres.

No momento que recebe um comando o programa deve ler o tempo do sistema e ao enviar uma resposta ele deverá ler novamente o tempo e enviá-lo na string de resposta;

Formato da string (ideal seria usar padrão: XML,JSON?). Vantagem de usar XML seria usar uma biblioteca padrão.

Comando;P:par1;P:par2;...;TE:...tempo;TS:tempo

Pontos a verificar:

  • o tamanho da string deveria ser aumentada ou flexibilizado?


Especificação do Gerador de Cargas/Monitor

  • O gerador de carga deverá ler uma especificação de um arquivo e gerar a carga. Prever identificação do Experimento e da Repetição.
  • O monitor deverá ler as respostas e armazená-las devidamente em arquivo.
  • Um analisador/visalizador de dados deverá permitir sumarizar dados, gerar intervalo de confiança e mostrar os resultados

Módulo de Processamento Autônomo

  1. include <stdio.h>
  2. include <sys/time.h>

//classe baseada no geekforgeeks

class t_duracao {

   public:
       void iniciar_medicao() {
           gettimeofday(&start, NULL);
       }
       void finalizar_medicao(){
           gettimeofday(&end, NULL);
           time_taken = (end.tv_sec - start.tv_sec) * 1e6;
           time_taken = (time_taken + (end.tv_usec -
                                       start.tv_usec)) * 1e-6;
       }
       void mostrar_tempo(){
           printf("valor de tempo = %lf", time_taken);
       }
       float retornar_tempo(){
           return time_taken;
       }
   private:
       double time_taken;
       struct timeval start, end;

} tempo_estimado;


float computar_desloc_x() {

 float d;
 
 d = 10+20*uniforme(); // uniforme retorna entre 0 e 1 - no minimo andará 10cm e no máximo 30 cm
 return d; 

}

float computar_lateral(float meu_y, float meu_desloc) {

 float lat;
 lat = seno (0.042*meu_desloc) * 50; /* amplitude máxima 50 cm
 return lat-meu_y;

}

main() {

 receive(max_x,max_y);
 tempo_estimado.iniciar_medicao();
 x=0; //valor absoluto do movimento na direção x
 desloc_x=0;
 y=0; //valor absoluto do movimento na direção y
 desloc_y=0;
 while (x<max_x) {
    //computar movimento para frente
    desloc_x=computar_desloc_x();
    x = desloc_x + x;
    //andar para frente
    movimento_avante(desloc);
    //computar movimento lateral
    desloc_y=computar_lateral(y, x);
    y=y+desloc_y;
    movimento_lateral(desloc_y);
    rotacionar_frente();
 }
 finaliza_movimento();
 tempo_estimado.finalizar_medicao();
 send_annswer(tempo_estimado.retornar_tempo());

} </syntaxhighlight>

<> uniforme()*10+10; <>

Referências

Aula 14 - Dia 27/09/2019

Objetivos

  • Revisão Fila M/M/1
  • Fila M/M/1/c (c servidores)

Material de Referência para esta aula


Aula 15 - Dia 04/10/2019

Objetivos

  • Revisão Fila M/M/n
  • Fila M/M/1/K

Material de Referência para esta aula

https://www.dropbox.com/s/jycdd2dzqqsxb5g/FilaMM1_CapacidadeLimitada.pdf?dl=0

AULA 16 - Dia 08/10/2019

Objetivos

  • Aula antecipada para tratar o experimento do rob
  • Geração de Números Randômicos na Simulação

Material de Referência

AULA 17 - Dia 11/10/2019

Objetivos

  • finalização da classe de geração randômica de números;
  • construção do módulo autônomo do robô usando geração randômica.

Links interessantes


AULA 17 - Dia 11/10/2019

Objetivos

  • PARTE 1
    • Introdução a Simulação a Eventos Discretos
    • Exemplo de simulação e estatística de uma fila MM1
  • Parte 2
    • Preparação do robô para Feira de Ciências e Tecnologia

Material de referência

Livros sobre ADS

Links Interessantes