]> git.llucax.com Git - z.facultad/75.68/celdas.git/blob - trunk/src/main.cpp
1489768f0a93d84583445a57595905baaacd7d75
[z.facultad/75.68/celdas.git] / trunk / src / main.cpp
1
2 #include "main.h"
3 #include <iostream>
4
5 //
6 void CMiEntorno::inicializar()
7 {
8         // Inicializo el Entorno
9         datos.add("robot.sensor_adelante",      1) ;
10         datos.add("robot.sensor_atras",         0) ;
11         datos.add("robot.sensor_derecha",       0) ;
12         datos.add("robot.sensor_izquierda",     0) ;
13         datos.add("robot.avanzo_adelante",      0) ;
14         datos.add("robot.avanzo_atras",         0) ;
15         datos.add("robot.avanzo_derecha",       0) ;
16         datos.add("robot.avanzo_izquierda",     0) ;
17 }
18
19
20 void CMiEntorno::actualizar()
21 {
22         datos.set_val("robot.sensor_adelante",          0) ;
23         datos.set_val("robot.sensor_atras",             0) ;
24         datos.set_val("robot.sensor_derecha",           0) ;
25         datos.set_val("robot.sensor_izquierda",         1) ;
26         datos.set_val("robot.avanzo_adelante",          1) ;
27         datos.set_val("robot.avanzo_atras",             0) ;
28         datos.set_val("robot.avanzo_derecha",           0) ;
29         datos.set_val("robot.avanzo_izquierda",         0) ;
30 }
31
32
33
34 //
35 int main(int argc, char* argv[])
36 {
37         //
38         CMiEntorno*                     e = new CMiEntorno;
39         CSistemaAutonomo                a ;
40
41         e->inicializar() ;
42
43         // Inicializo las teorias
44         CTeoria t1("Avanzar", "avanzar", 1, 1) ;
45         t1.datos_iniciales.add ("robot.sensor_adelante",        0) ;
46         t1.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
47         t1.datos_iniciales.add ("robot.sensor_derecha",         ANY) ;
48         t1.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
49         t1.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
50         t1.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
51         t1.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
52         t1.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
53         t1.datos_finales.add ("robot.sensor_adelante",          ANY) ;
54         t1.datos_finales.add ("robot.sensor_atras",             ANY) ;
55         t1.datos_finales.add ("robot.sensor_derecha",           ANY) ;
56         t1.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
57         t1.datos_finales.add ("robot.avanzo_adelante",          1) ;
58         t1.datos_finales.add ("robot.avanzo_atras",             0) ;
59         t1.datos_finales.add ("robot.avanzo_derecha",           0) ;
60         t1.datos_finales.add ("robot.avanzo_izquierda",         0) ;
61
62
63         CTeoria t2("Retroceder", "retroceder", 1, 1) ;
64         t2.datos_iniciales.add ("robot.sensor_adelante",        ANY) ;
65         t2.datos_iniciales.add ("robot.sensor_atras",           0) ;
66         t2.datos_iniciales.add ("robot.sensor_derecha",         ANY) ;
67         t2.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
68         t2.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
69         t2.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
70         t2.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
71         t2.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
72         t2.datos_finales.add ("robot.sensor_adelante",          ANY) ;
73         t2.datos_finales.add ("robot.sensor_atras",             ANY) ;
74         t2.datos_finales.add ("robot.sensor_derecha",           ANY) ;
75         t2.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
76         t2.datos_finales.add ("robot.avanzo_adelante",          0) ;
77         t2.datos_finales.add ("robot.avanzo_atras",             1) ;
78         t2.datos_finales.add ("robot.avanzo_derecha",           0) ;
79         t2.datos_finales.add ("robot.avanzo_izquierda",         0) ;
80
81
82         CTeoria t3("Derecha", "derecha", 1, 1) ;
83         t3.datos_iniciales.add ("robot.sensor_adelante",        ANY) ;
84         t3.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
85         t3.datos_iniciales.add ("robot.sensor_derecha",         0) ;
86         t3.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
87         t3.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
88         t3.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
89         t3.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
90         t3.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
91         t3.datos_finales.add ("robot.sensor_adelante",          ANY) ;
92         t3.datos_finales.add ("robot.sensor_atras",             ANY) ;
93         t3.datos_finales.add ("robot.sensor_derecha",           ANY) ;
94         t3.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
95         t3.datos_finales.add ("robot.avanzo_adelante",          0) ;
96         t3.datos_finales.add ("robot.avanzo_atras",             0) ;
97         t3.datos_finales.add ("robot.avanzo_derecha",           1) ;
98         t3.datos_finales.add ("robot.avanzo_izquierda",         0) ;
99
100
101         CTeoria t4("Eludir.1", "derecha", 1, 1) ;
102         t4.datos_iniciales.add ("robot.sensor_adelante",        1) ;
103         t4.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
104         t4.datos_iniciales.add ("robot.sensor_derecha",         0) ;
105         t4.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
106         t4.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
107         t4.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
108         t4.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
109         t4.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
110         t4.datos_finales.add ("robot.sensor_adelante",          0) ;
111         t4.datos_finales.add ("robot.sensor_atras",             ANY) ;
112         t4.datos_finales.add ("robot.sensor_derecha",           ANY) ;
113         t4.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
114         t4.datos_finales.add ("robot.avanzo_adelante",          0) ;
115         t4.datos_finales.add ("robot.avanzo_atras",             ANY) ;
116         t4.datos_finales.add ("robot.avanzo_derecha",           1) ;
117         t4.datos_finales.add ("robot.avanzo_izquierda",         ANY) ;
118
119
120         a.teorias.add(t1.nombre, &t1) ;
121         a.teorias.add(t2.nombre, &t2) ;
122         a.teorias.add(t3.nombre, &t3) ;
123         a.teorias.add(t4.nombre, &t4) ;
124 #ifdef DEBUG
125         std::cout << "Agrega teoria: " << t1 << "\n";
126         std::cout << "\tdatos_iniciales:\n" << t1.datos_iniciales << "\n";
127         std::cout << "\tdatos_finales:\n" << t1.datos_finales << "\n";
128         std::cout << "Agrega teoria: " << t2 << "\n";
129         std::cout << "\tdatos_iniciales:\n" << t2.datos_iniciales << "\n";
130         std::cout << "\tdatos_finales:\n" << t2.datos_finales << "\n";
131         std::cout << "Agrega teoria: " << t3 << "\n";
132         std::cout << "\tdatos_iniciales:\n" << t3.datos_iniciales << "\n";
133         std::cout << "\tdatos_finales:\n" << t3.datos_finales << "\n";
134         std::cout << "Agrega teoria: " << t4 << "\n";
135         std::cout << "\tdatos_iniciales:\n" << t4.datos_iniciales << "\n";
136         std::cout << "\tdatos_finales:\n" << t4.datos_finales << "\n";
137 #endif // DEBUG
138
139         // Inicializo el SA
140         delete a.p_entorno;
141         a.p_entorno = e;
142
143         // Obtengo un plan
144         CIndiceMagico<t_dato> datos_finales;
145
146         a.m_datos_finales.add ("robot.avanzo_adelante", 1) ;
147         //a.m_datos_finales.add ("robot.avanzo_en_x", 1) ;
148
149         for (int i = 0; i < 3; ++i)
150         {
151
152                 std::cout << "Teorias:\n" << a.teorias << "\n";
153
154                 a.plan();
155
156
157                 while (a.has_next_theory())
158                 {
159                         CTeoria* t = a.get_next_theory();
160                         // Deberia ejecutar accion y actualizar entorno
161                         if (a.validate_theory(t))
162                         {
163                                 std::cout << "Valida\n";
164                         }
165                         else
166                         {
167                                 std::cout << "No valida, planificamos de nuevo\n";
168                                 break;
169                         }
170                 }
171
172         }
173
174         return 0 ;
175 }
176
177