Anda di halaman 1dari 29

UNIVERSIDAD TECNICA PARTICULAR DE LOJA

SEMFORO INTELIGENTE
INTEGRANTES
FREDDY FERNANDO OJEDA POMA

VANESSA CINDHY CELI

INTRODUCCIN

Los agentes de software han mostrado una nueva forma de trabajar con computadores, permitiendo delegar en un programa (el agente) ciertas tareas que, de otra forma, solamente podran hacer los humanos. En algunos casos, puede tratarse simplemente de tareas repetitivas, pero en otros, puede ser una solucin a problemas complejos. En este trabajo analizamos la posibilidad de emplear un agente semforo cuya funcin principal es facilitar el control del trnsito de vehculos y peatones, de manera de que pasen alternadamente a travs de la interseccin.

OBJETIVOS

Conocer a fondo el comportamiento de un agente relacional

Comportamiento de los agentes inteligentes

Un agente inteligente es una entidad que percibe y actua sobre un entorno

COMO SE CARACTERIZA UN AGENTE


LOS AGENTES INTELIGENTES SE CARACTERIZA

POR SER : Comunicativo: Debe entender las necesidades u objetivos del usuario Capaz: Debe tener la capacidad de saber como dar un servicio y proporcionar informacin Autnomo: Debe poder interactuar con el entorno tomando decisiones y actuando por si solo Adaptativo: debe ser capaz de aprender del entorno

AGENTE INTLIGENTE SEMAFORO PROBLEMATICA


La congestin vehicular que encontramos en las calles de nuestra ciudad y de cualquier ciudad del pas, es causante de mucho malestar a los conductores , an cuando en las intersecciones de las calles se encuentran semforos instalados, estos nos garantiza la ptima fluidez vehicular porque cuentan con mtodo estticos.

AGENTE INTLIGENTE SEMAFORO SOLUCIN


para dar lo solucin a esta problemtica hemos planteado la propuesta de la creacin de un semforo inteligente el cual permitir reducir el tiempo de espera en una interseccin y Analizar la cantidad de vehculos que se aproximan al cruce y asignar tiempos de paso y de espera para cada va.

TEDENCIA DE LOS SEMAFOROS INTELIGENTES


En la ciudad de Barcelona en el 2008 comenz la instalacin de estos modelos. Tienen varias funcionalidades avanzadas para mejorar la seguridad y ayudar en la regulacin del trfico. Cientficos norteamericanos y rumanos han desarrollado un modelo informtico basado en informacin real que atribuye inteligencia a los semforos para optimizar la gestin del trfico. De esta forma han comprobado que se reduce un 28% el tiempo de espera en los cruces en hora punta y un 6,5% las emisiones de CO2. El modelo puede potenciarse si se incorpora a los automviles un software especfico que avise a los conductores tanto de las velocidades recomendables en funcin de las luces de los semforos, como en funcin de la cantidad de coches que se pueden encontrar en los atascos. Esta aplicacin tambin podra trasladar informacin al sistema para mejorar la regulacin del trfico mediante los semforos.

FUNCIONAMIENTO
Este proyecto desarrollara un sistema inteligente que , a partir de cmaras IP instaladas en los semforo, ejecute en tiempo real decisiones sobre los tiempos de cada luz de un semforo para la optimizacin del trafico en una interseccin

DESCRIPCION DEL ENTORNO DE TRABAJO DEL AGENTE SEMAFORO

agente

Medidas de Rendimiento

Entorno

Actuadores

Sensores

Agilizar el Trafico

Calles

Luz Amarilla

Detector de Vehculos

Minimizar los embotellamientos

Peatones

Luz verde

Cmara

Trficos

Luz Roja

ARQUITECTURA GLOBAL DEL AGENTE INTELIGENTE SEMFORO


ENTORNO DE APRENDIZAJE DE NUESTR AGENTE


Tenemos lo sensores (cmaras ip) los cuales nos proporcionan datos del numero de vehculos que se aproximan la interseccin para luego enviarlos a un control de entrada que este a su vez se comunicar con la organizacin de los datos los cuales interactan con el control mientras que el control de salida se comunica con la base de datos

ENTORNO DE APRENDIZAJE DE NUESTR AGENTE


Para realizar el entorno de aprendizaje de nuestro agente hemos utilizado Ontologas la cuales fueron creadas con la herramienta CmapTools

ARQUITECTURA GLOBAL DEL AGENTE INTELIGENTE SEMFORO TRIPLETAS

Cdigo del Programa

Clase principal semaforoIA

import java.awt.*; public class SemaforoIA extends CreaVentanas { private Iniciarnn Semaforo1, Semaforo4; private Image[] estadoLuces=new Image[4]; private Image carro1, carro3; private Image cruce, Imgsemaforo1; private int X2, Y2, X1, Y1; private AEstrellaParaSemaforo busqueda; private String semaforo[] = {"verde1.gif","amarillo1.gif","rojo1.gif","apagado.gif"}; private Graphics G; private Image I; private Dimension D; private MediaTracker Mt;

public SemaforoIA() { super("A G E N T E S E M A F O R O Cindhy Celi, Freddy Ojeda \t\t\t\t\t\t Inteligencia Artificial", 0, 0, 0, 0, Color.gray, true); Mt = new MediaTracker(this);

Cdigo del Programa


cargarsemaf(); cargarImagenes(); X2 = 10; X1 = 600; Iniciar(); this.setResizable(false); this.setVisible(true); Y2 = 310; //posicion inicial auto de la 18 de nov Y1 = 30; //posicion inicial auto Azuay

}
private void cargarImagenes() { cruce = Toolkit.getDefaultToolkit().getImage("edificios\\cruce2.png"); //FONDO carro1 = Toolkit.getDefaultToolkit().getImage("carros\\arrabj4.gif"); //auto de arriba carro3 = Toolkit.getDefaultToolkit().getImage("carros\\izqder.gif"); //auto izquierda Imgsemaforo1 = estadoLuces[3]; //Semaforo }

public void cargarsemaf() {

Cdigo del Programa


for (int i = 0; i < semaforo.length; i++) { estadoLuces[i] = Toolkit.getDefaultToolkit().getImage("edificios\\"+ semaforo[i]); Mt.addImage(estadoLuces[i],i); } try{Mt.waitForAll();} catch (InterruptedException e){}; }

Cdigo del Programa

public void Iniciar() { int tVerde=0, tVerdeParpa=0, tRojo=0; int nCarrosX=0, nCarrosY=0;// contador=0; nCarrosX =(int)(Math.random()*10); nCarrosY =(int)(Math.random()*10); busqueda(); tVerde=tiempoV(nCarrosX, nCarrosY); tRojo=tiempoR(nCarrosX, nCarrosY); System.out.println(" \n NUMERO DE VEHICULOS APROXIMNDOSE A LA INTERSECCIN:\n\t\t por la 18 de Noviembre = "+nCarrosX+"\n\t\t por la Azuay "+nCarrosY);

\t=

if(nCarrosX>=nCarrosY) System.out.println("\n Avancen los de la 18 = "+tVerde+" ms"+ "\n Avancen los de la Azuay = "+tRojo+"ms"); else System.out.println("\n Avancen los de la Azuay = "+tVerde+" ms"+ "\n Avancen los de la 18 = "+tRojo+" ms");

Cdigo del Programa

if (nCarrosX >= nCarrosY){ Semaforo1 = new Iniciarnn("Calle Azuay",6000,2000,1000); Semaforo4 = new Iniciarnn("Calle 18 de Nov", tVerde,tVerdeParpa,tRojo); //tiempo del semaforo verde, parpadeaverde, rojo Semaforo1.start(); Semaforo4.start(); } else{ Semaforo1 = new Iniciarnn("Calle Azuay",6000,2000,1000); Semaforo4 = new Iniciarnn("Calle 18 de Nov", tRojo,tVerdeParpa,tVerde); / /tiempo del semaforo verde, parpadeaverde, rojo Semaforo1.start(); Semaforo4.start(); } } public int tiempoV(int nx, int ny) { int tVerde=0; int VelAuto=2000; //tiempo que un auto demora en cruzar el cruce

Cdigo del Programa


ny == 0) tVerde=nx*VelAuto; if(nx >= ny ) tVerde = (nx+ny)*VelAuto/ny; else tVerde = (nx+ny)*VelAuto/nx; // System.out.println("\n return V = "+ tVerde); return tVerde;

}
public int tiempoR(int nx, int ny) { int tRojo=0; int VelAuto=2000; //tiempo que un auto demora en cruzar el cruce if(nx==0) tRojo=ny*VelAuto;

if(ny >= nx ) tRojo = (nx+ny)*VelAuto/ny; //else{ tRojo = ny * VelAuto; else{ tRojo = (nx+ny)*VelAuto/nx; }

// System.out.println("\n return Rojo = "+ tRojo); return tRojo; }

Cdigo del Programa


public void paint(Graphics g){update(g);} public void update(Graphics g) { Dimension d = getSize(); if(G == null || d.width != D.width || d.height != D.height) { D = d; I = createImage(D.width, D.height); G = I.getGraphics(); } Graphics2D g2 = (Graphics2D) G; //de arriba a abajo g2.drawImage(carro1,X1, Y1+Iniciarnn.Y2, this); //de izquierda a derecha g2.drawImage(carro3,X2+Iniciarnn.X, Y2, this); g.drawImage(I, 0, 0, this); g2.drawImage(cruce,0,0,this.getWidth(),this.getHeight(),this); g2.drawImage(Imgsemaforo1,550, 250,this);//semaforo EstadosLuces(); repaint();

Cdigo del Programa


try{Thread.sleep(15);} } catch(InterruptedException ie){} public void EstadosLuces() { if(Semaforo1.isAlive()) { // pista = 1; if(Iniciarnn.getestado() == 0){ Imgsemaforo1=estadoLuces[0]; Iniciarnn.AvanzaX(); } else { if(Iniciarnn.getestado() == 1) { if(Imgsemaforo1 == estadoLuces[0]) { Imgsemaforo1 = estadoLuces[3]; Iniciarnn.AvanzaX(); } else {Imgsemaforo1 = estadoLuces[0]; Iniciarnn.AvanzaX(); } repaint(); } else if(Iniciarnn.getestado() == 2){ Imgsemaforo1=estadoLuces[1]; Imgsemaforo1=estadoLuces[2]; Iniciarnn.AvanzaY2();

Cdigo del Programa


} repaint(); } } if(!Semaforo1.isAlive()) {Imgsemaforo1=estadoLuces[2]; Iniciarnn.AvanzaY2(); Iniciar(); } } public void retardo(int pTiempo) { try { Thread.sleep(pTiempo); } catch (Exception e) {} } public static void main(String[] args){new SemaforoIA(); }

Cdigo del Programa


Funcin para crear las Ventanas import java.util.Vectoimport java.awt.*; import javax.swing.*; public class CrearVentanas extends JFrame { Dimension pantalla=Toolkit.getDefaultToolkit().getScreenSize(); public CrearVentanas() { this(null,0,0,0,0,Color.gray,false); } public CrearVentanas (String pTitulo) { this(pTitulo,0,0,200,100,Color.gray,false); } public CrearVentanas(String pTitulo, int pX, int pY) { this(pTitulo,pX,pY,200,100,Color.gray,false); } public CrearVentanas(String pTitulo, int pX, int pY, int pAncho, int pLargo) { this(pTitulo,pX,pY,pAncho,pLargo,Color.gray,false); }

Cdigo del Programa


public CrearVentanas(String pTitulo, int pX, int pY, int pAncho, int pAlto,Color pcolor, boolean pPrincipal) { this.setTitle(pTitulo); this.setSize(getMaximumSize().width, getMaximumSize().height); this.setBackground(pcolor); this.setLocation(pX,pY); this.setDefaultCloseOperation(EXIT_ON_CLOSE); if (pPrincipal) this.setDefaultCloseOperation(EXIT_ON_CLOSE); else this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

};

Cdigo del Programa


public CrearVentanas(String pTitulo, int pX, int pY, int pAncho, int pAlto,Color pcolor, boolean pPrincipal) { this.setTitle(pTitulo); this.setSize(getMaximumSize().width, getMaximumSize().height); this.setBackground(pcolor); this.setLocation(pX,pY); this.setDefaultCloseOperation(EXIT_ON_CLOSE); if (pPrincipal) this.setDefaultCloseOperation(EXIT_ON_CLOSE); else this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); }

};

Cdigo del Programa


Funcin para mover los autos public class MoverAutos extends Thread { public static int Y2; public static int X; private int verde, amarillo, parpaverde; private boolean activo; private static int estado=-1; private static int aTiempo[];

public MoverAutos(String pNombre,int pVerde,int pParpaverde,int pAmarillo) { super(pNombre); verde = pVerde; parpaverde = pParpaverde; amarillo = pAmarillo; aTiempo = new int[] { verde, parpaverde, amarillo, 0 }; activo = true;

Cdigo del Programa


Funcin para mover los autos public class MoverAutos extends Thread { public static int Y2; public static int X; private int verde, amarillo, parpaverde; private boolean activo; private static int estado=-1; private static int aTiempo[];

public MoverAutos(String pNombre,int pVerde,int pParpaverde,int pAmarillo) { super(pNombre); verde = pVerde; parpaverde = pParpaverde; amarillo = pAmarillo; aTiempo = new int[] { verde, parpaverde, amarillo, 0 }; activo = true;

Cdigo del Programa


public void run() { estado(); } public void estado() { synchronized(System.out) { if(activo) { //System.out.println("estado antes = "+estado); estado = ++estado % 4; //System.out.println("estado despues = "+estado); activo = (estado != 3); //System.out.print("\n Carril "+getName()+"el semaforo esta en: "+Nombre[estado]+" "+aTiempo[estado]); retardo(aTiempo[estado]); estado(); } } } public static int getestado() { return estado; }

Anda mungkin juga menyukai