miércoles, 30 de mayo de 2012



Busqueda con información

Busqueda avariciosa (heurísticas)



Utiliza la búsqueda avariciosa para llegar a Bucarest desde Dobreta (toma los datos del ejemplo visto en clase). Dibuja el árbol correspondiente. 





Ruta: Dobreta → Craiova → Rimnicu Vilcea → Pitesti → Bucarest


Operador lógico AND en C 

Redes neuronales (perceptrón)


 
 
#include <stdio.h>

struct stuff {
  double vector[3];
  double desired;
};

double const threshold = 0, learning_rate = 0.1;
double weights[] = {1, 0, 0};
struct stuff training_set[4];

void createTrainingSet() {
  training_set[0].vector[0] = -1;
  training_set[0].vector[1] = 0;
  training_set[0].vector[2] = 0;
  training_set[0].desired = 0;

  training_set[1].vector[0] = -1;
  training_set[1].vector[1] = 0;
  training_set[1].vector[2] = 1;
  training_set[1].desired = 0;

  training_set[2].vector[0] = -1;
  training_set[2].vector[1] = 1;
  training_set[2].vector[2] = 0;
  training_set[2].desired = 0;

  training_set[3].vector[0] = -1;
  training_set[3].vector[1] = 1;
  training_set[3].vector[2] = 1;
  training_set[3].desired = 1;
}

double sum_function(double *values) {
  auto unsigned short index;
  auto double sum = 0;
  for(index = 0; index < 3; index++)
    sum += values[index] * weights[index];

  return sum;
}

int main(int argc, char *argv[]) {
  auto signed short i, error_count, result, index;
  auto double *input_vector, *desired_output, error;
  createTrainingSet();

  printf("Logic Operator Simulation... AND\n\n");

  while(1) {
    for(i = 0; i++ < 63;)
      printf("-");
    printf("\n");

    error_count = 0;
    for(i = 0; i < 4; i++) {
      input_vector = &training_set[i].vector[0];
      desired_output = &training_set[i].desired;
      printf("[%1.17f, %1.17f, %1.17f]\n", weights[0], weights[1], weights[2]);

      result = (sum_function(input_vector) >= threshold)?1:0;
      error = *desired_output - result;
      if(error != 0) {
        error_count += 1;
        for(index = 0; index < 3; index++)
          weights[index] += learning_rate * error * input_vector[index];
      }
    }
    if(error_count == 0)
      break;
  }
  for(i = 0; i++ < 63;)
    printf("-");
  printf("\n");

  return 0;
}

martes, 29 de mayo de 2012

Operador lógico AND en Python

Redes neuronales (perceptrón)   



 
threshold = 0
learning_rate = 0.1
weights = [1, 0, 0]
training_set = [((-1, 0, 0), 0), ((-1, 0, 1), 0), ((-1, 1, 0), 0), ((-1, 1, 1), 1)]

def sum_function(values):
    return sum(value * weights[index] for index, value in enumerate(values))

while True:
    print '-' * 60
    error_count = 0
    for input_vector, desired_output in training_set:
        print weights
        result = 1 if sum_function(input_vector) >= threshold else 0
        error = desired_output - result
        if error != 0:
            error_count += 1
            for index, value in enumerate(input_vector):
                weights[index] += learning_rate * error * value
    if error_count == 0:
        break

Ejercicio

Sistemas expertos: lógica clásica

Ejercicio.
Analiza algunos de los ejemplos, que viene en en la siguientes paginas
http://groups.engin.umd.umich.edu/CIS/course.des/cis479/prolog.html

Este ejemplo consiste en las acciones de un medico y que va descartando las opciones de enfermedades, con una serie de preguntas hasta llegar a la solucion mas probable, este programa nos enseña la lógica de realizar.

Ejemplo

/ * Este es un programa verdaderamente una tontería, ya que se basa en mi propia
conocimientos médicos. 
Pregunte: ¿la comezón. o? de la lesión. o?-ayuda. para ponerlo en marcha. * /


ayudar a: - print ('Diagnóstico de los siguientes temas:'), nl, 
print ('Itch.'), nl, print ('lesión').


pica: - print ('¿Es el ambiente seco:?'), "Decir sí",
  print ('No tome duchas tantos. El uso de vaselina.').

pica: - print ('¿El paciente tiene un historial de alergias:?'), 
  "Decir sí", no (fiebre), impresión ("Considere la posibilidad de dermatitis atópica. ').

fiebre: - 
  print ('¿El paciente tiene fiebre? ")," Decir sí ".

"No infecciosa": - el acné, "el acné severo.
"No infecciosa": - el acné, "acné quístico".
"No infecciosa": - el acné.
"No infecciosa": - "severo acné rosácea.
"No infecciosa": - "rosácea".

lesión: - No (fiebre), "no infecciosa".


el acné: - 
  print ('¿Es la piel grasa?'), "Decir sí",
  print ('¿Hay un montón de granos? ")," Decir sí ",
  imprimir ("La condición es probable que el acné. '). 

"Acné quístico": - 
  print ('¿Hay muchos quistes amarillentos?), "Decir sí", 
  print ('La condición es el acné quístico.').

"Acné severo ': - 
  imprimir ( 
    "¿Hay grandes abscesos elevados azulado con cicatrices deformantes? ),
  "Decir sí".

"Rosácea": - print ('¿Está el paciente a una mujer? ")," Decir sí ", 
             "Acné rosácea".


"Acné rosácea": - "severo".
"Acné rosácea": - "suave".

"Severo": - 
  print ('¿Tiene el paciente una nariz inflamada y con crecimientos? ")," Decir sí ",
  print ('El diagnóstico es severo acné rosácea.').

"Suave": - 
  print ('¿Es la piel grasa, con tendencia a la seborrea? ")," Decir sí ",
  print ('¿Hay pústulas rodeada por una zona rojiza?'), "Decir sí",
  imprimir ("Pero, ¿son más grandes que las erupciones de acné común?"), "Decir sí",
  print ('El diagnóstico es el acné rosácea.').


"Decir sí": - lectura (Ans),(Ans), nl.(yes).(Y).().
()..

lunes, 28 de mayo de 2012

Puntos extras

Aqui esta el video del programa final ya terminado en un video




http://www.youtube.com/watch?v=lGLOHLf-1W4&feature=youtube_gdata

También les dejo el programa del ventilador en codigo en C++
#include <iostream>
#include <ctime>
using namespace std;

void delay(int secs) {
for(int i = (time(NULL) + secs); time(NULL) != i; time(NULL));
}
int main() {      
    int i=2000; 
        int x=0;   
    while(true){ 
     // =================
   time_t tSac = time(NULL); // instante actual
   tm tms = *localtime(&tSac);
      if (x==0){
      cout << "hh:mm:ss " << tms.tm_hour << ":" << tms.tm_min << ":"<< tms.tm_sec << endl;
      x++;
      }

      
      if (tms.tm_hour>=0 && tms.tm_hour<=6){
      printf("el ventilador esta en el nivel 1\n");
      }
      if (tms.tm_hour==7)
      printf("esta cambiando el nivel del ventilador\n");
      if (tms.tm_hour>=8 && tms.tm_hour<=11){
      printf("el ventilador esta en el nivel 3\n");
      }
       if (tms.tm_hour==12)
      printf("esta cambiando el nivel del ventilador\n");
            if (tms.tm_hour>=13 && tms.tm_hour<=18){
      printf("el ventilador esta en el nivel 4\n");
      }
      if (tms.tm_hour==19)
      printf("esta cambiando el nivel del ventilador\n");
      if (tms.tm_hour>=20 && tms.tm_hour<=23){
      printf("el ventilador esta en el nivel 2\n");        
      }                         
delay(i);
}

   getchar();
   return 0;
}

Investigación

Conceptos:

JADE
También conocido Java Agen DEvelopment Framwork, es una plataforma integrada en java para la creacion de un sistema multi-agentes, tambien cuenta con un API para la creacion de agentes y de elementos relacionado.
Que perimten los siguientes:
Ejecución de agentes completamente de recibir y transmitir información a otros.

Comunicación entre agentes en la misma o diferentes plataformas como jade, leap y jadex
Programación de agentes mediante un conjunto de paquetes Java
‰ Validación de la ejecución mediante seguimiento mensajes
y estado interno del agente.


SPADE
Es de una plataforma libre multi-agentes, que fue creado en el 2005, desarrollado en Python, que cuenta con un soporte de organizcion virtual e independiente del lenguaje.
la protaforma nacio como una prueba de conceptos para probar la tecnologia de la mensajeria instantanea como protocolo de transporte para los agentes

Madkit
Esta escrito en Java, y es de una plataforma de codigo habierto multi-agentes modular y escalable, sus agentes juegan un papel como crear sociedades artificuales

miércoles, 25 de abril de 2012

Tercer entrega

Por el momento ya tengo la detección de rostros a tiempo real usando la webcam con C++ funcionando en GNU/Linux, aunque aun falta la parte del reconocimiento y aplicarlo en el inicio de sesión.


// detection.C
#include <iostream>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;


string title = "Sistemas adaptativos, reconocimiento facial";
String fcn = "detect_faces_bitch.xml";
CascadeClassifier fc;

void detectFaces(Mat frame) {
  Mat frame_gray;
  std::vector<Rect> faces;

  cvtColor(frame, frame_gray, CV_BGR2GRAY);
  equalizeHist(frame_gray, frame_gray);
  fc.detectMultiScale(frame_gray, faces, 1.1, 2, 0, Size(80, 80));

  for(int i = 0; i < faces.size(); i++) {
    Mat faceROI = frame_gray(faces[i]);
    Point pt1(faces[i].x, faces[i].y);
    Point pt2(faces[i].x + faces[i].width, faces[i].y + faces[i].height);
    Point org(faces[i].x + faces[i].width * 0.5 - 50, faces[i].y + faces[i].height + 50);
    rectangle(frame, pt1, pt2, Scalar(0, 0, 0), 10, 8, 0);
    putText(frame, "Desconocido", org, 1, 1.5, Scalar(0, 0, 0), 2, 8, 0);
  }
  imshow(title, frame);
}

int main(int argc, const char *argv[]) {
  Mat frame;
  CvCapture* capture;

  if(!fc.load(fcn)) {
    std::cout << "Error cargando cascada de clasificacion..." << std::endl;
    return -1;
  }

  capture = cvCaptureFromCAM(-1);
  if(capture) {
    while(true) {
      frame = cvQueryFrame(capture);

      if(!frame.empty())
        detectFaces(frame);
      else {
        std::cout << "Error al capturar video..." << std::endl;
        break;
      }

      int q = waitKey(10);
      if((char)q == 'q' || (char)q == 'Q')
        break;
    }
  }
  return 0;
}



Probando formatos de video...


NOTA: Agregaré el video del avance lo más pronto posible.