quinta-feira, 25 de abril de 2013

Sistemas Multi Agente e Aprendizado em Grupos de Semáforos

Ultimamente tenho andado muito ocupado com as aulas e trabalhos do mestrado, além de ter que vincular os estudos com o trabalho. Por isso não tenho postado nada no blog. O que antes já não era muito frequente, agora se tornou raro.

Mas a medida que o tempo vai passando, sinto novamente a necessidade de compartilhar algo, por hobby. Vá que alguém leia, né?

O que vou tentar resumir em poucas linhas, são os Sistemas Multi Agente, uma sub-área da Inteligência Artificial que consiste, resumidamente e a grosso modo, em vários agentes inteligentes com capacidades de realizar tarefas distintas ou não, e interagir entre si, agindo sobre um ambiente.

O ambiente pode ser definido como um agente passivo, que pode ser:

  • Totalmente ou Parcialmente Observável: no primeiro é fornecido acesso completo aos estados do ambiente, no segundo não, sendo necessário que o agente possa guardar informações sobre os estados, caso necessário.
  • Episódico ou Sequencial: em um ambiente sequencial não possui dependência da experiência anterior do agente, já no episódico, a experiência do agente é dividida em episódios. Por episódio podemos definir uma tripla precepção – ação – reação (ou reward).
  • Discreto ou Contínuo: um ambiente discreto possui estados e ações distintas, o ambiente contínuo possui um número de estados e ações tão grande quanto o possível.
  • Determinístico ou Estocástico: no primeiro uma dada ação vai resultar em uma reação específica, no segundo, uma dada ação pode resultar em uma ação específica com uma probabilidade x e pode resultar em outra ação com uma probabilidade 1-x, por exemplo.
  • Estático ou Dinâmico: onde o ambiente pode permanecer inalterado (estático) como resultado das ações, ou o ambiente pode se alterar (dinâmico).
  • Mono ou Multi Agente: referente a um agente ou vários agentes.
     

Neste exemplo, que é baseado em um trabalho publicado pela profª Ana Bazzan (referenciado abaixo), o ambiente é o trânsito, onde foi realizada uma micro simulação, onde um número x de carros passava nas vias, definidas como principais (horizontais) e secundárias (verticais).

Os agentes eram semáforos, que se encontravam nos cruzamentos e observavam o trânsito, e de acordo com o estado percebido podiam mudar seu plano semafórico de modo a diminuir o congestionamento nas vias.

Utilizando Q-Learning, como técnica de aprendizado por reforço, os semáforos aprendiam os melhores resultados e com o tempo podiam optar pela melhor ação possível a ser tomada para diminuir o congestionamento.

Posterior ao aprendizado dos semáforos, havia grupos de supervisores, agentes de alto nível, que observavam as ações tomadas por grupos menores de semáforos adjacentes, após um período de observação, esses agentes supervisores podiam induzir os semáforos a se comportar conforme o melhor resultado observado pelos supervisores.

Mais detalhes estão no artigo que está referenciado.

O que eu fiz?

Bom, o trabalho já estava pronto, o que tive que fazer foi reproduzir os resultados, como forma de avaliação de uma das disciplinas que cursei, o que não é nada trivial dada a complexidade do trabalho como um todo. Objetivando o aprendizado das técnicas envolvidas e o uso do microsimulador de trânsito SUMO (Simulation of Urbanity MObility).

sumo1

Representação de um cruzamento com semáforo

rede-viaria

Congestionamento em uma via

Para interagir com o simulador tive que utilizar a linguagem de programação python, e optei por utilizar o PyBrain, uma biblioteca de inteligência artificial para python, que na minha opinião é um framework, pois ele realiza várias abstrações e prover uma boa metodologia de desenvolvimento aplicado a IA. Uma junção da prática orientada a objetos com MVC orientado a IA, no entanto, ao invés de MVC (Model – View – Controller) das camadas dos Sistemas de Informação, temos o Environment, Agent e Tasks. Detalhes sobre como desenvolver no pybrain são encontrados no site, também referenciado abaixo. Minha contribuição para o pybrain foi desenvolver classes que viabilizasse trabalhar com ambientes multi agente, conforme o diagrama.

framework

Framework Original do PyBrain

multi-agent framework

Minha contribuição

No caso, o PyBrain trabalha com Experiment, Agent, Environment, Task, sendo esse último um relacionamento entre o agente e o ambiente.

Foi desenvolvido um experimento multiagente, que possibilitasse a inclusão de vários agentes. Cada agente possuia uma tarefa sobre o ambiente. Lembrando que o que fiz foi reproduzir os resultados do artigo original que foi desenvolvido em outro simulador o ITSUMO.

Segue o código fonte da reimplementação: http://code.google.com/p/learning-on-traffic-lights/

REFERÊNCIAS

BAZZAN. A.L.C., OLIVEIRA, D., SILVA, B. C. Learning in Groups of Traffic Signals. ScienceDirect. [2010]  http://www.sciencedirect.com/science/article/pii/S0952197609001699

SUMO: http://sumo.sourceforge.net/

PyBrain: http://pybrain.org/

quarta-feira, 16 de janeiro de 2013

Problema de Satisfação de Restrições ou CSP (Constraint Satisfaction Problem)

 

Neste tópico retorno à Inteligência Artificial para falar do Problema de Satisfação de Restrições, problemas de IA e algoritmos para resolver essa classe de problemas. Ao final colocarei as referências utilizadas para a definição do algoritmo.

Vou abordar esse assunto em três postagens distintas.

Nessa primeira postagem vou tratar da parte teórica, onde explicarei o Problema de Satisfação de Restrições, aplicação e algoritmo.

Na segunda postagem, não falarei sobre CSP, mas sim sobre o NetLogo, um software para simulação mono ou multi agente, com um exemplo didático e um breve tutorial em português sobre como utilizar o NetLogo.

E na terceira postagem retorno ao CSP para implementar o algoritmo dessa postagem no NetLogo, com o objetivo de resolver computacionalmente o “Problema das 4 Rainhas”.

Eugene C. Freuder escreveu que a programação de restrições representa a abordagem mais próxima para se atingir o Santo Graal da programação, baseia-se na ideia de que o usuário declara o problema e o computador resolve.

Com essa afirmação eu diria que muitos programadores perderam seus empregos, mas a coisa não é por aí. Para que o problema seja resolvido por CSP, temos que formalizá-lo. Ou seja definir as variáveis do nosso problema e as restrições para essa variável, então o algoritmo poderia resolve-lo.

E a tarefa de formalizar o problema não é nada trivial.

Resolução de Problemas com Domínios Finitos:

O problema que demonstrarei na terceira postagem da série sobre CSP, 4-Queen ou sua variante n-Queen, trata de quatro rainhas colocadas em um tabuleiro de xadrez de 4x4 casas, e consiste em posicionar as quatro rainhas de modo que elas não se ataquem.

A variante N-Queen funciona da mesma forma, no entanto, temos um número n de rainhas num tabuleiro de xadrez de n x n casas.

Queens10_bbc

Ilustração do Problema de 10-Rainhas

Fonte: http://rosettacode.org/wiki/N-queens_problem

Problemas de empacotamento são outro tipo de problemas que podem ser resolvidos utilizando CSP de domínio finito, neste caso, temos uma série de objetos para serem postos em uma área limitada de forma que esses objetos não se sobreponham, de modo que respeitem restrições de posicionamento e não violem determinado valor de capacidade. Uma apliação prática desse tipo de problema poderiam ser inserção de cargas em veícuos de transporte, inserção de componentes eletrônicos em placas de circuito impresso, armazenamento de produtos. Há um problema clássico que trata de empacotamento de retângulos em uma área, de forma que todos se encaixem.

empacotamento de blocos

Empacotamento de Blocos

Fonte: TAVARES, 2000.

Problemas de escalonamento são oriundos do surgimento de tarefas dependentes que compartilham recursos ou tem recursos escassos. Por exemplo elaboração de horários em salas de aulas, hospitais, etc., sequenciamento de tarefas em um projeto, agendamento, entre outros.

Problemas de Layout, destaco o Facility Layout Problem (em português ficaria Problema de Disposição de Instalações) que é um problema de otimização combinatória que consiste no posicionamento de instalações de um sistema de manufatura de modo a otimizar a produção, obedecendo as restrições que podem envolver o fluxo dos processos e outros fatores da manufatura.

Quebra – Cabeças de Lógica podem ser resolvidos por CSP também, entre eles temos SUDOKU, o próprio n-Queen poderia ser considerado um quebra – cabeça, outro bem interessante é o Zebra Puzzle.

Formalmente um CSP é definido por variáveis (x1, x2, x3, …) que possuem um domínio (D1, D2, D3, … Dm) e um conjunto de restrições para os seus valores. O objetivo é encontrar o valor de cada variável de modo que todas as restrições sejam satisfeitas. Aqui menciono variáveis com um domíinio finito, mas o CSP pode tratar problemas com domínio infinito ou desconhecido.

De acordo com o domínio o problema pode ser tratável ou intratável.

Uma outra classe de CSP é a DCSP, Distributed Constraint Satisfaction Problem, ou Problema de Satisfação de Restrições Distribuídos. Nesse caso, as variáveis do problema são distribuídas entre vários agentes, que se comunicam entre si.

Formalizando Problemas:

Aqui vou tratar de um problema simples que é 4-Queen, temos quatro rainhas em um tabuleiro de xadrez de 4x4, e queremos posicioná-las sem que uma ataque a outra.

Para formalizar esse problema como CSP, temos que responder três perguntas:

  1. Quais são as variáveis do problema?
  2. Qual é o domínio de cada variável?
  3. E quais são as restrições?

Num jogo de Xadrez a rainha é a única peça que pode se mover em todas as direções, quantas casas quiser.

mov.dama

Fonte: http://xadrezdaescolacaiosergio.blogspot.com.br/p/movimentos-e-capituras-das-pecas.html

Para o problema das 4 Rainhas, vamos ter 4 Rainhas (logicamente) e um tabuleiro de 4 x 4.

estado_inicial_4_q

Fonte: não lembro.

Então, para facilitar a modelagem do problema, consideramos que as rainhas só podem se mover na sua linha, indo para esquerda ou para direita, de modo a verificar se irão atacar umas às outras.

Nossas variáveis são as 4 Rainhas, no caso, as linhas onde elas estão.

Quanto ao domínio das variáveis, temos um tabuleiro 4 x 4, e se elas podem se mover apenas para esquerda ou para direita, nosso domínio se resume as quatro posições de cada linha [1, 2, 3, 4].

As restrições são que uma rainha não pode atacar a outra, sendo assim, uma rainha não pode estar na mesma coluna ou na mesma diagonal que outra rainha.

Variáveis: Q1, Q2, Q3, Q4

Domínio: dom(Q1) = [1, 2, 3, 4], dom(Q2) = [1, 2, 3, 4], dom(Q3) = [1, 2, 3, 4] e dom(Q4) = [1, 2, 3, 4]

Restrições:

constraint_graph

Grafo de Restrições do Problema 4-Queen

Fonte: http://www.cs.toronto.edu/~hojjat/384w09/Lectures/Lecture-04-Backtracking-Search.pdf

Ainda pode-se definir da seguinte maneira:

constraint

A primeira restrição (C1) aplicada de uma Rainha para as outras indica que a posição delas devem ser diferentes, no caso não podem estar na mesma coluna.

A segunda restrição (C2) refere-se a diagonal.

Na aplicação confirmaremos se essas restrições são suficientes e se estão corretas para esse problema.

Algoritmo de Busca com Retrocesso:

Esse algoritmo realiza uma busca em profundidade, fazendo atribuições uma variável de cada vez, fazendo um retrocesso quando as restrições não são satisfeitas.

backtracking

Algoritmo Backtracking – Pesquisa com Retrocesso

Fonte: Adaptado de RUSSEL, NORVIG.

Neste algoritmo a função PESQUISA-COM-RETROCESSO retorna a função RETROCESSO-RECURSIVO, que recebe dois parâmetros, um vetor com as variáveis e seus valores atribuídos, inicialmente um vetor vazio, e um CSP, podendo retornar um sucesso ou falha.

Para o caso de DCSP (problema de satisfaão de restrições distribuído) há o algoritmo Asynchronous Backtracking [YOKOO, 1992], o qual não entrarei em detalhes nesta postagem, abaixo está a referência do artigo.

Para terminar a postagem, temos então o problema formalizado e o algoritmo para solucioná-lo, em breve vamos visualizar o resultado na prática.

Referências:

BAZZAN, A. L. C. Notas de Aula da Disciplina Advanced Artificial Intelligence. 2012

YOKOO. et al. Distributed Constraint Satisfaction for Formalizing Distributed Problem Solving. 1992. 12th IEEE International Conference on Distributed Computing Systems.

RUSSEL Stuart. NORVIG, Peter. Inteligência Artificial. 2ª Edição. Editora Campus.

TAVARES, J.A.R. Geração de Configurações de Sistemas Industriais com o Recurso à Tecnologia das Restrições e Computação Evolucionária. Dezembro de 2000. Disponível em: [http://www.dei.isep.ipp.pt/~jtavares/PhD_Tese/Resumo_PhD.htm]

domingo, 13 de janeiro de 2013

Gerenciamento de Projetos–Como Estudar para um Concurso–pt. 2

 

Bom Domingo à todos. Neste post vou continuar falando sobre gerência de projetos, concluindo o nosso planejamento sobre como estudar para um concurso ou prova.

Na última postagem sobre Gerência de Projetos, comentei sobre a construção da EAP, a Estrutura Analítica do Projeto, tendo proposto a seguinte estrutura para o meu projeto:

eap

A estrutura acima foi utilizada pois não iria construir a EAP de todo o projeto, pois ficaria extensa demais. No entanto, vou colocar outra estrutura de EAP, de modo a exemplificar como deve ser a EAP completa.

Ela deve começar no nível 0 com o projeto, e não apenas com o pacote como fiz no post anterior. Uma estrutura mais completa, contém o projeto, seus pacotes e os possíveis subpacotes, para então mostrar os entregáveis ou entregas.

estrutura_eap

Antes de começarmos a definição de atividades, vamos fazer o Dicionário da EAP, que é uma breve especificação do pacote de trabalho e os critérios de aceitação. Para isso vou utilizar como entrada a EAP da postagem anterior.

eap1

No PMBOK há uma descrição detalhada dos processos do PMI com as entradas e saídas.

dicionario-eap
 
A partir do dicionário da EAP, que é a tabela acima, podemos facilmente definir as atividades, e estimar os recursos necessários, por exemplo para aquisição de livros, ou então recursos pessoais, no caso da necessidade de um professor particular ou curso. E decompondo os pacotes podemos estimar o tempo necessário para a realização delas.
 
Algumas tarefas podem levar mais tempo outras menos, outras tarefas podem ser pré-requisitos para poder estudar a próxima, causando uma relação de dependência.
 
Nesta tabela exemplo, não foi inserida a especificação do conteúdo, nem a EAP completa. Recomendo aos estudantes, especificar o conteúdo de cada tarefa. Por exemplo em matrizes, pode-se especificar que a tarefa consistirá no estudo de matrizes, operações e propriedades.
 
Ao final do pacote, temos a tarefa que servirá como marco, ou a linha de base, que vai ser o “ponto de salvamento” do nosso projeto.
 
dicionario-eap2
 
Temos o pacote Geometria Analítica, que faz parte do pacote Matemática. Dentro de Geometria Analítica, temos uma tarefa final, que consiste numa “auto-prova”, que servirá como marco. Nela, o estudante, deverá (honestamente), realizar uma prova simulada com o conteúdo, onde deverá acertar 70% das questões, no mínimo, para considerar o aprendizado satisfatório.
 
A prova deverá ter todo o conteúdo, servindo também de resumo do conteúdo deste pacote. A partir daí, o pacote terá sido considerado terminado.
 
No caso de um projeto de desenvolvimento de sistemas, por exemplo, podemos considerar o pacote, determinado serviço que deverá ser desenvolvido, e como marco, um teste do funcionamento deste serviço de acordo com o proposto no escopo do projeto. Caso esteja de acordo com o escopo, finaliza-se o pacote e uma versão do sistema é gerada.
 
Próximo post sobre o assunto, vamos trabalhar na definição de uma atividade e estimar a duração desta. Isso será responsável por nos ajudar a montar o cronograma. O ideal é utilizar um sistema para fazer isso, por exemplo o Microsoft Project.
 
Referências:

SOTILLE, Mauro A. Gerenciamento do Escopo em projetos. 2ª Ed. Rio de Janeiro. 2009.

sexta-feira, 11 de janeiro de 2013

Dobra Espacial e a Relatividade Espacial


Será que vamos um dia viajar na velocidade da luz ou até mesmo ultrapassá-la? Estaremos preparados para viajar pelo espaço e desbravar planetas, indo contra inclusive a Teoria da Relatividade?
Bom, parece que a Nasa tem interesse nisso, mas acredita ainda que é cedo para afirmar a viabilidade da Dobra Espacial.
Neste post vou falar um pouco sobre esse assunto, um dos textos que li no site da Nasa questiona que se fomos capazes de quebrar a barreira do som, porque não somos capazes de quebrar a barreira da luz?
A NASA diz que a grande diferença, é que quebramos a barreira do som com um objeto feito de matéria, não feito de som. Os átomos e moléculas da matéria são conectados pelos campos eletromagnéticos, a mesma coisa de que é feita a luz. Então, como um objeto poderia viajar mais rápido que o que liga seus átomos?
Relatividade Especial
Com meu exíguo conhecimento de física, vou tentar explicar a Relatividade Especial de Einstein. Essa teoria baseia-se na ideia de referenciais, no caso, a Terra está parada e o Sol gira ao redor dela. Hoje em dia sabemos que esta informação é errada, que na verdade a Terra gira ao redor do Sol que é o centro do nosso Sistema Solar, mas se utilizarmos como ponto de referência uma pessoa na Terra, temos a impressão de que estamos parados, e ao olharmos para o céu, vamos realmente ver o Sol girando ao redor da Terra.
O que muda é o ponto de referência que estamos utilizando.
Agora outro exemplo, estamos dirigindo um carro a 60Km/h e temos duas situações, na primeira passamos por pessoas sentadas nos bancos de um parque, na segunda temos um carro vindo na nossa direção, a 100Km/h, na outra mão da pista.
Tomando como referencial, o nosso carro, podemos concluir que estamos parados e as pessoas no parque estão se movimentando a 60Km/h, já o carro vindo na nossa direção está na velocidade relativa de 160Km/h, o vemos como um borrão.
Agora, se ambos os carros estão a uma velocidade de 100Km/h, na mesma direção, e lado a lado, podemos dizer a partir de qualquer um dos carros que o outro carro está parado, podemos vê-lo sem distorções.
velocidade_relativa_1
Postulados
1º – As leis da física são iguais em todos os referenciais.
2º – A Velocidade da luz é medida como uma constante em todos os referenciais.
O segundo postulado quer dizer que, não importa o quão rápido você está, a velocidade da luz sempre será a mesma. Os links de referência contém uma explicação mais detalhada sobre isso.
Imagine então um observador onde a sua única forma de percepção seja sonora, sendo assim, ele escuta sons e distingue distâncias e movimentos ao seu redor.
Agora coloque este observador numa estação de trêm. Ao passar o trêm, o observador ouve o barulho do mesmo sobre os trilhos e percebe o exato momento em que o trêm passa em frente ao seu sensor.
Este momento é marcado pela hora em que o barulho do trêm está no seu ápice, logo em seguida, o som começa a diminuir devido ao trêm estar se afastando. Isso é o efeito Doppler.
Agora vamos a outro exemplo, nós vemos os objetos ao nosso redor, suas formas, cores, tamanhos por causa da luz, que reflete um objeto qualquer. Logo em seguida nossa retina capta toda a informação passada pela luz.
Então o que aconteceria ao nos aproximarmos ou superarmos a velocidade da luz? Toda informação seria distorcida.
Também, para acelerarmos um objeto precisamos acrescentar energia, quando aceleramos esse objeto próximo a velocidade da luz, a quantidade de energia necessária para acelerá-lo tende ao infinito.
Tá, mas o que a velocidade de dobra espacial tem a ver com a Relatividade Especial?
Porque o movimento afeta o tempo. Através de um efeito chamado Distorção Temporal.
O tempo fica mais lento com o movimento, porém isso só fica perceptível quando o movimento se aproxima da velocidade da luz. Se a velocidade atingir a da luz, o tempo diminui a sua velocidade, mas isso só seria percebido por um observador que não estivesse em movimento com o tempo. [ZAVISA].
A Teoria da Dilatação do Tempo foi comprovada por Einstein, utilizando dois relógios atômicos precisamente sincronizados. Um deles foi posto em um avião para dar uma volta, e quando retornou do passeio, percebeu-se que o relógio que estava no avião estava atrasado. Exatamente como previram os cálculos de Einstein.
Isso dificultaria nossos planos de viajar além da velocidade da luz para explorar outros planetas, pois ao viajarmos 4,4 anos luz para Pandora, visitar nossos amigos Na´vi, ao retornar à Terra teriam se passado no mínimo 8,8 anos e nós estaríamos com a mesma aparência, enquanto nossos amigos e parentes estariam 8,8 anos mais velhos. (sem contar o tempo das nossas férias em Pandora)
Isso porque nós estaríamos viajando muito além da velocidade da luz, e nossa distorção temporal iria nos manter jovens, o tempo teria passado de forma diferente para nós, enquanto na Terra passou normalmente.
Isso é o Paradoxo dos Gêmeos, imagine se nosso viajante espacial tem um irmão gêmeo que fica na Terra. Ao retornar de Pandora, o irmão viajante estaria 8,8 anos mais novo que o irmão que ficou na Terra.
twins-paradox
Imagem: NASA
Motor de Dobra de Alcubierre
Para entender o Motor de Dobra, levaremos em conta o seguinte: primeiro, que a Relatividade Especial proíbe qualquer corpo de acelerar além da velocidade da luz dentro do espaço - tempo, e segundo, que a velocidade do próprio espaço – tempo é desconhecida.
Pode-se fazer uma analogia com o seguinte, imagine que você está numa passarela móvel, existente nos aeroportos, essa passarela está numa velocidade que você não conhece. Ela é o nosso motor de dobra.
Por outro lado, você tem um limite de velocidade que é a velocidade da luz, para andar no chão, mas e quando está na nossa passarela móvel, no caso no Motor de Dobra Espacial?
Um Motor de Dobra de Alcubierre pode ser criado expandindo o espaço – tempo atrás da nave e contraindo na frente da nave.
warp-drive
Imagem: NASA.
A ideia de expandir e contrair o espaço – tempo não é nova, segundo a perspectiva do Universo Inflacionário, o espaço – tempo teria expandido mais rápido que a luz instantes após o Big Bang.
Agora como criar esse efeito?
Acho que essa pergunta não terá resposta no wikipedia, por enquanto, mas para criar o efeito de contração e expansão espaço – temporal seria necessário que a nave inteira tivesse um anel de energia negativa ao redor de si.
No entanto a física clássica diz que energia negativa não existe, enquanto a física quântica diz que talvez exista. Esse efeito precisa ser controlado de forma que se possa ligar ou desligá-lo. E assume-se que a dobra deveria possuir velocidade superior a da luz, no entanto, isso é desconhecido.
E por fim, se todos esses obstáculos forem superados, ainda tem a chance da viagem através da dobra espaço – temporal incidir em todos os paradoxos que mencionei.
Abaixo nas referências tem o artigo escrito pelo Dr. Harold White, o qual pretendo ler com mais detalhe futuramente, e sinceramente espero que consigamos viajar pelo espaço e explorar o Cosmo. O Universo é infinitamente grande, a ponto de compararmos a Terra a um grão de areia no meio do Oceano Cósmico, e da mesma forma que acredito que não estamos sozinho nesse Oceano, um dia não só vamos explorá-lo como encontrar vida lá fora.
Enquanto isso não ocorre só desejo uma coisa a todas: Vida Longa e Próspera.
spock
Referência:
ZAVISA, John. Como funciona a relatividade Espacial? Disponível em: [http://ciencia.hsw.uol.com.br/relatividade-especial2.htm]
NASA. Ideas based on what we´d like to achieve. Disponível em: [http://www.nasa.gov/centers/glenn/technology/warp/ideachev.html]
WHITE, Harold. Warp Field Mechanics 101. Disponível em: [http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20110015936_2011016932.pdf]

quinta-feira, 10 de janeiro de 2013

Gerenciamento de Projetos–Como estudar para um concurso

 

Após muito tempo, retorno ao blog para fazer a primeira postagem de 2013, espero que não seja a única. Minha demora a postar é justificada em virtude de uma série de cursos que estava fazendo e também do trabalho.

Primeiro comentarei sobre o curso de Gestor de TI que fiz pela Alfamídia. O curso foi muito bom, e recomendo para quem quiser seguir uma carreira de gestor de tecnologia da informação, ou investir na iniciativa privada, que valoriza bastante o profissional certificado.

Como disse um dos professores, tudo na vida é projeto, e nesse sentido chegamos ao valor do curso, pois o planejamento pode nos facilitar muito na hora de fazer um plano de aula, um plano de estudos, aquele churrasquinho de final de semana, uma festa de aniversário ou casamento, projetos mais complexos como o desenvolvimento de um sistema, construção civil, etc.

Quanto aos itens abordados no curso de Gestor de TI, vou colocar logo abaixo, brevemente, com minhas observações pessoais a respeito:

· PMI – Curso de Gerenciamento de Projetos utilizando as Boas Práticas do PMI, o curso foi excelente. Muito bom para quem procura certificação do PMI – Project Management Institute.

· Microsoft Project – ferramenta muito útil para gestão de projetos, existem também outras ferramentas no mercado, algumas personalizáveis e gratuitas. (um exemplo é o redmine)

· Prática de Projeto utilizando Microsoft Project – muito bom para colocar em prática o conhecimento adquirido no curso PMI.

· ITIL v3 – basicamente gestão de processos, o curso também foi excelente, no mesmo patamar do PMI, porém voltado para definição de processos da empresa. Excelente para quem quer fazer a certificação ITIL Foundations.

· SCRUM – métodos ágeis de desenvolvimento. Curso também muito bom, com práticas bem didáticas que envolvem todos os alunos organizados em times para o desenvolvimento de um produto.

· COBiT – governança de TI, esse foi o único curso, que do meu ponto de vista deixou muito a desejar, pois eles ofereceram o curso da versão 5 do COBIT, que na época não estava nem consolidado ainda. Para fins de concurso público, as provas ainda estão cobrando o Cobit 4.1.

Outra grande fonte de conhecimento que tirei bastante proveito, foi a disciplina de mestrado da UFRGS, que cursei na modalidade de Aluno Especial. Inteligência Artificial Avançada. Um ano antes já havia feito um curso introdutório e gratuito de IA no site www.ai-class.org, com os professores Peter Norvig e Sebastian Thrun.

Já na disciplina, que foi ministrada pela professora Drª. Ana Bazzan, tive uma visão também prática, onde foram apresentadas várias ferramentas para otimização, sistemas multi - agente, simulação de trânsito, e todo um referencial teórico na área de sistemas multi - agente, jogos estocásticos, swarm intelligence, enfim, muita coisa que ficará para uma outra postagem. Quem tiver interesse por IA pode acompanhar o blog (de novo), que irei postar um tutorial sobre o NetLogo que é uma software muito bom para trabalhar com sistemas mono ou multi agente, irei exemplificar com um programa simples que desenvolvi para resolver o problema 4-Queen utilizando satisfação de restrições.

Vamos então voltando a ideia principal deste post, vamos falar de gerenciamento de projetos.

Neste caso, temos um projeto de vida que envolve passar em um concurso público, numa prova de vestibular, ou então numa prova de ingresso de pós – graduação.

Podemo pegar os livros, canetas e cadernos e ir estudando o conteúdo que está no edital. No dia da prova, utilizamos nosso conhecimento e pronto, passamos na prova.

Pode ser tão simples, como pode requerer uma série de passos que podem determinar o nosso nível de sucesso nessa empreitada.

Inclusive, conforme o PMBOK a cada 1 hora gasta investida no planejamento, economiza-se 4 horas na execução, isso demonstra que planejar é bom, planejar é legal.

Primeiramente então começarei mostrando uma imagem que ajuda bastante na hora de utilizarmos as boas práticas do PMBOK, que é o Project Management Body Of Knowledge (Guia do Conhecimento em Gerenciamento de Projetos). Para quem investir nessa área, esse livro tem que ser de cabeceira, e talvez até ler histórias do PMBOK para os filhos para dormir.

Smiley piscando

(não é essa a imagem)

pmtech_processos_pmbok4

(é essa)

Essa imagem de Mauro Sotille relaciona os 42 processos de gerenciamento de um projeto, conforme o PMBOK, indicando os grupos em que os processos se distribuem e as suas áreas de conhecimento associadas.

Começaremos nosso projeto, do início, isso é pelos Processos de Iniciação, que envolvem os processos:

  1. Desenvolver o termo de abertura do projeto
  2. Identificar as partes Interessadas

Lembrando que o PMI não é um manual de gerenciamento de projetos, e sim um livro de boas práticas, as quais podemos aproveitar algumas ou todas para alcançar o sucesso do nosso projeto.

Na internê há muitas formas de desenvolver o termo de abertura, como não estou com o PMBOK, vou fazer algo simples para o fim que se destina, que é Estudar para um concurso.

Neste momento já identificamos, um objetivo geral, as partes interessadas, e muito provavelmente o gestor do projeto.

Objetivo: Passar em um concurso

Partes Interessadas:  Você ou no caso sua família, se eles querem te ver fora de casa.

Gestor do Projeto: Você também, pois você irá gerenciar seu tempo. A não ser que você queira uma babá em cima, lhe cobrando os prazos.

Como fazer parra alcançar o objetivo: para essa segue uma lista de passos, que pode variar de pessoa para pessoa. Exemplificamos:

  1. Encontrar o Edital
  2. Fazer plano de estudos
  3. Executar os passos do plano de estudo

O termo de abertura também deve definir quem é o gestor do projeto e que níveis de autoridade ele possui. Assinado o termo de abertura é dado início oficialmente no projeto, e podemos entrar nos Processos de Planejamento que envolve os seguintes processos:

  1. Desenvolver o plano de gerenciamento do projeto
  2. Coletar os Requisitos
  3. Definir o Escopo
  4. Criar a EAP
  5. Definir as atividades
  6. Sequenciar as Atividades
  7. Estimar os recursos das atividades
  8. Estimar as durações das atividades
  9. Desenvolver o cronograma
  10. Planejar o gerenciamento dos riscos
  11. Identificar os riscos
  12. Realizar a análise qualitativa dos riscos
  13. Realizar a análise quantitativa dos riscos
  14. Planejar as respostas aos riscos
  15. Desenvolver o plano de RH
  16. Estimar os custos
  17. Determinar o Orçamento
  18. Planejar as Comunicações
  19. Planejar as Aquisições
  20. Planejar a qualidade

Para nosso projeto pessoal não precisaremos de todos os processos.

Desenvolver o plano de RH por exemplo não será preciso, pois não iremos, por exemplo, contratar uma mulidão de professores para nos ensinar o conteúdo.

Podemos ter aquisições, se precisarmos comprar livros, nesse caso poderíamos estimar os custos do material a ser comprado, se você não trabalha e precisa do dinheiro dos pais, eles seriam os sponsors (patrocinadores) e poderiam dar um limite de dinheiro para os gastos, isso seria informado como restrição no termo de abertura e iria influenciar o orçamento.

Desenvolver o plano de gerenciamento do projeto

Neste processo iremos documentar os planos auxiliares, ou seja, a metodologia com que vamos trabalhar no projeto, como gerenciaremos o escopo, os requisitos, cronograma, melhorias, custos.

Nosso projeto terá as seguintes fases:

  1. Definir o concurso que deseja passar
  2. Encontrar material para estudo do conteúdo
  3. Criar plano de estudos
  4. Definir marcos, linhas de base ou baseline
  5. Criar controle de qualidade
  6. Executar
  7. Encerrar o projeto

Coletar os requisitos

No site Gestão de Projetos PMI, CUNHA, diz que o requisito é uma funcionalidade ou característica de uma entrega, que visa atender uma expectativa do cliente.

No nosso projeto, que é estudar para o concurso, podemos definir que o requisito é que a cada entrega tem que ser realizado provas sobre o conteúdo que foi estudado e os acertos devem ser superior a 70% do conteúdo.

No PMBOK esse processo é antes da Definição do Escopo, e para a prova de certificação é assim que tem que ser, no entanto, normalmente as entregas são definidas antes dos requisitos, e as entregas fazem parte do processo de Definição do Escopo.

Definir o Escopo

Neste processo vamos detalhar com o máximo possível de informações nosso escopo, objetivo específico, critérios, definir as entregas (ou entregáveis), exclusões, restrições e premissas.

No caso de exclusões, é sempre uma boa prática definir o que não será contemplado no projeto, como um resguardo do gerente de projetos.

A prova para a qual esse projeto será preparado é o POSCOMP, que é o Exame Nacional para Ingresso na Pós – Graduação em Computação.

Escolhi essa prova porque espero estar ajudando aquele que deseja ser um gestor de projetos, e dar uma introdução básica sobre o assunto, e também ajudar aquele que deseja ingressar num Mestrado ou Doutorado em Computação servindo de start para o começo dos estudos (incluo-me entre esses, serei um leitor do meu próprio blog, como quem ri da própria piada).

Descrição do Escopo:

Fazer plano de estudos da área de Matemática para prova do POSCOMP, com base no último edital, que pode ser obtido em http://www.cops.uel.br/concursos/130_poscomp_2012/edital_001_2012.pdf.

Excluem-se do escopo deste projeto as áreas de Fundamentos e Tecnologia da Computação.

O plano de estudo deve conter pacotes de entregáveis, sendo que cada pacote deve ter uma avaliação, cujo resultado será considerado satisfatório se a taxa de acerto for maior ou igual a 70% das questões desta.

O prazo de planejamento, execução e encerramento do projeto será de 6 meses.

cronograma1

Pacotes do Projeto:

  • Álgebra Linear
  • Análise Combinatória
  • Cálculo Diferencial e Integral
  • Geometria Analítica
  • Lógica Matemática
  • Matemática Discreta
  • Probabilidade e Estatística

Criar a EAP:

EAP é a Estrutura Análítica do Projeto, fazemos com base no escopo e nos entregáveis.

Utiliza-se a técnica de decompor as entregas em unidades menores, quanto menor a entrega, melhor fica para estimar recursos necessários, tempo, custo. Um pacote é composto de várias entregas. Uma regra que pode ser usado para o tempo de conclusão é 8-80 ou 4-40, que significa que um pacote deve ser entregue entre 8 e 80h ou entre 4 e 40h.

Nosso projeto tem um escopo muito grande, para exemplificar vou utilizar o edital do POSCOMP 2012 para montar a EAP.

Montarei a EAP com a seguinte estrutura:

eap

eap0

Estrutura Analítica do Escopo do Projeto

Conforme o PMBOK fazemos a EAP com todos os pacotes que estão contemplados no escopo do projeto, e o processo de Definir as Atividades é o responsável pela decomposição dos pacotes e demais informações.

Eu gosto de incluir as atividades na EAP, nesse caso ela ficaria assim:

eap1

Neste exemplo, para não ficar muito extenso, fiz a EAP do pacote Geometria Analítica (em vermelho) apenas, e ass atividades em laranja.

Do meu ponto de vista fica melhor de visualizar e organizar para fazer a descrição das atividades a partir da EAP.

O único problema é que a EAP fica bastante extensa, o que de certa forma não é tão problemático, vez que é mais uma ferramenta para apoiar no planejamento.

Para não ficar muito mais extenso do que já está, acabo esse post aqui, e continuaremos no próximo.

 

Referências:

SOTILLE, M.A., PM Tech. Fluxo de Proocessos do Gerenciamento de Projetos – PMBOK 4ª Edição, 2009. Porto Alegre.

CUNHA, Paulo Henrique da Costa. Como gerenciar projetos utilizando os processos do Guia PMBOK. Site Gestão de Projetos PMI – Disponível em http://gestaodeprojetospmi.com.br

sexta-feira, 20 de julho de 2012

Curso de Computação Quântica e Introdução à Mecânica Quântica

 

Estou mais uma vez usando este espaço para fazer uma “propaganda” do Coursera. No site http://coursera.org é possível participar de vários cursos a distância de 16 Universidades.

Estou participando do curso Quantum Mechanics and Quantum Computation e como os vídeos estão em inglês, estou disponibilizando uma tradução em português.

Segue o link da legenda do vídeo 1-2 Overview.

Espero receber a ajuda dos colegas do coursera para agilizar no processo de criação e sincronização das legendas. Fiz essa primeira sozinho e como é a primeira vez que participo de uma atividade neste sentido, acredito que está muito boa.

Para a legendagem utilizei o site http://www.universalsubtitles.org.

Bom, era isso.

See ya.

quarta-feira, 27 de junho de 2012

Seria Starcraft o futuro de Diablo???

Meu primeiro post, depois de muito tempo, e não é relacionado a IA. Mas tudo bem, vou falar de videogame, do Diablo e do Starcraft, e não é por isso que deixei de postar, vamos deixar bem claro. (heeheh)
Espero que gostem…
Imaginemos um mundo antigo, onde alguém escreveu um livro contando sobre a história de pessoas incríveis que, com ajudas de seres angelicais, derrotavam demônios, espíritos, larvas e insetos gigantescos, enfim... isso é Diablo.
Agora por outro lado, vamos ir para um futuro, não muito distante, onde os terrans, se aliam aos protoss, uma raça de paladinos templários extra-terrestres, para derrotar outra raça alienígena de larvas gigantes que se proliferam pelas profundezas... isso é Statcraft.
Notaram as semelhanças sutis que a Blizzard inventou para contar a mesma história duas vezes e ainda fazer o sucesso que é esses grandes títulos.
Tudo é uma questão de ponto de vista e do paradigma.
Se tentarmos analisar o Starcraft, como se fossemos o Deckard Cain ou pessoas da época, veríamos não larvas gigantescas, mas sim demônios que saem de dentro da terra, zumbis (humanos infestados), e qualquer coisa desse tipo. Interpretando atualmente, poderíamos dizer que isso se dê porque os Zergs se adaptam as culturas do local, vá saber.
Logo, naquela época (época no jogo Diablo), ele se adaptaria à cultura dos povos dali.
Agora do ponto de vista atual, os avançados alienígenas, do Planeta Aiur, constataram a invasão Zerg naquele local, e resolveram ajudar os nativos dali, camuflando-se na forma de Anjos.
Assim, se analisarmos o Tyrael com as culturas Protoss, ele poderia ser um Templário, ou um Xel´Nagah, disfarçado de anjo para ajudar de forma sutil os humanos.
Ensinando-lhes os primeiros passos da própria evolução deles nos Terrans do Starcraft.
E então, eles destruíram a infestação Zerg (insetos, larvas gigantes, entre outros inimigos do jogo Diablo) e descobriram na verdade que haviam três irmãos Protoss por trás, comandando toda a infestação. Eles se nomeavam... Diablo, Baal e Mephisto.
Os terrans, naquela época chamados humanos ou mortais, conseguiram com a ajuda de Tyrael ir até as profundezas da Terra, onde o Protoss Traídor, Diablo, estava lhe esperando.
Uma batalha sangrenta ocorreu e os humanos conseguiram matar Diablo.
Mas o futuro veio, e eles evoluíram, se tornaram Terrans, as armas mágicas se transformaram em tecnologia. O inimigo ainda existia, só que havia trocado de nome.
Com o tempo que passou também, os Zergs evoluíram e com a Super Mente conseguiram obter controle sobre os corpos infestados, assim os “zumbis” poderiam ser controlados pela Super Mente, o piloto disso poderia ter sido Kerrigan.
Novamente repito… é tudo questão de ponto de vista.
Protoss_Slasher_by_Konartist3D
Os Protoss
Diablo
Diablo
diablo-iii-tyrael-03
Tyrael, o anjo, ou do ponto de vista atual, um Protoss Templário ou até mesmo um Xel’Nagah
archonconcept
Um Arconte Protoss
214138-ss12_hires
Um Dark Templar Protoss
17606-diablo-ii-collector-s-edition-windows-screenshot-as-much-as
Infestação de parasitas em Diablo 2 e o humaninho lá… tocando pra fu##
BanelingNest_SC2_Rend1
Um ninho de infestação Zerg em Starcraft
terran
Um Terran
diablo-2-barbarian-official-art
Um Humano
starcraft-ii-terrans-wings-of-liberty
Kerrigan – uma humana infestada
Só duas coisas… joguem Diablo e Starcraft, é muito tri.
Blizzard [http://blizzard.com]


Fotos:



Google [http://www.google.com]