Foros del Web » Programación para mayores de 30 ;) » Programación General »

¿Un curso de metaheurística en un lenguaje común?

Estas en el tema de ¿Un curso de metaheurística en un lenguaje común? en el foro de Programación General en Foros del Web. Explicaré a qué me refiero con cada cosa porque no sé si me estoy expresando bien. ---------------------------------------------------------------------- Con metaheurísica me refiero a búsquedas de soluciones ...
  #1 (permalink)  
Antiguo 03/10/2012, 22:22
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
¿Un curso de metaheurística en un lenguaje común?

Explicaré a qué me refiero con cada cosa porque no sé si me estoy expresando bien.

----------------------------------------------------------------------

Con metaheurísica me refiero a búsquedas de soluciones (programando una computadora) sin hacer afirmaciones previas o haciendo muy pocas.

Una forma de buscar soluciones o acciones útiles -no es metaheurística- es afirmando algo general y a medida que encontramos fallas se agregan excepciones, especificaciones o lo cambiar lo gral.

Ej (fútbol): "Para ganar patea la pelota hacia el arco rival, a una esquina random."
Veremos por ejemplo que nuestro golero -incluso- va a patear al arco rival (tiro de arco a arco), entonces corregimos ese y todos los errores que veamos, y repetimos el proceso una y otra vez por cada falla que notemos, sin nunca estar seguros de que no habrá otra.

Bueno, en la metaheurística -tengo entendido- no se afirma algo "general" ¿qué se hace? No estudié el tema, abrí un tema una vez -en otro foro- contando algo que tengo en mente y me dijeron "se llama metaheurístca", y lo busqué en wikipedia pero aprendí mucho...
Lo que tengo en mente para encontrar soluciones si las hay es hacer -virtualmente- cosas distintas en distintas situaciones evaluando cada vez con más "rango" qué es útil. O sea empezamos viendo qué acciones en las distintas situaciones hacen que ganemos el partido, si es que planteamos ese objetivo, y tales situaciones son evaluadas con la utilidad máxima-1; luego el proceso se repite, pero esta vez también se evalúa a las acciones que causen esas "situaciones MAX-1", y las situaciones en que es posible hacer esas acciones quedan evaluadas con MAX-2, y así sucesivamente hasta la situación inicial probablemente. Vale decir que las "distintas situaciones" en el caso del fútbol son infinitas, y las posibles acciones no se quedan muy atrás, pero bue... ¿es peor que afirmar algo general? No sé, pero ambas cosas se pueden combinar y quedaría predominando esta, el programa aprendiendo por si mismo.

----------------------------------------------------------------------

Lenguaje común le llamo al que tiene algo de esto:
- Declarar variable (en lo posible sin "int" ni cosas así).
- if
- else
- else if
- do while
- crear/guardar en archivo externo
- cargar archivo externo

Y bueno, un poco más que eso, pero mi punto es que hoy en día se habla mucho de bibliotecas por ejemplo y yo no sé qué son ni me interesa. Por si no lo saben uso Flash 5 viejo.

----------------------------------------------------------------------

Particularmente me interesa la estructura de este tipo de programas y cómo irlos complicando o cómo hacer cosas cada vez más complejas sin que nos estalle la mente, por decirlo así. Algo que me ayude a entender eso.

Yo hice esto:


https://rapidshare.com/files/2299691454/0017f.swf

Si lo entienden genial pero eso no es el tema, no es necesario que lo entiendan, es sólo para que se orienten un poco más cuando hablo de "hacer cosas cada vez más complejas" y en cuanto al tema y mis dudas.
Spoiler:
Ahí por ejemplo, arriba en la izquierda (cuadro gris oscuro), el programa que se describe se compone de una variable (dice n), no tiene objetivo (dice ?), etc. Una de las líneas que salen de él llevan a un programa en un cuadro rosaducho, y dice +Objetivo -?, o sea, creo que a pesar de lo chino que parezca, se aclara bastante, yo soy muy olvidadizo o me cuesta retomar las cosas así que me hago muchas aclaraciones en lo que hago (cada cuadro además al señalarlo muestra un código de ejemplo y al cliquearlo muestra un resúmen en español).

Debo cambiar varias cosas porque me estalló un poco la mente.

Motivo 1:
Olvidé agregar limitaciones de las acciones.
Es algo bastante confuso para mí, o sea, no sé si existen 2 o más formas de esto, o si es una sola, pero lo claro es que hay una gran diferencia entre situaciones con acciones ilimitadas y situaciones con acciones limitadas como diré en A.

A- Esto es un ejemplo. El objetivo que intenta cumplir el programa, es que A sea 1. Las acciones libres o ilimitadas permitirían modificar A directamente, o con gran libertad. En cambio, cuando hay limitaciones, puede suceder que sólo se pueda afectar a A si se afecta a B y C, que sólo podamos hacer el gol si hacemos que el defensa salga del arco y hacemos un buen tiro. En fin, es un ejemplo, no tengo muy claro cómo es esto.

B- Otro ejemplo. Recordemos que dije que había -quizá- 2 formas de limitación de las acciones. Una es cuando no se puede afectar directamente lo crucial. Otra, es cuando hay "post-acciones", que pueden ser las de un rival. Si el objetivo fuera lograr que A sea 1 o menos, e inicialmente fuera 10, entonces podría darse el caso de que uno pueda reducirla 0, 1 o 2 por turno (es un ejemplo tonto, pero difícil de aplicar en un programa en este estilo) y el rival la aumentara siempre 1. Podría ser que uno empuja el balón hacia el arco rival (reduciendo entonces la distancia del balón hasta él) y que hubiera un jugador rival haciendo fuerza hacia el lado contrario. O sea, se puede afectar lo crucial, pero hay algo que ocurre o cambia además de lo que nosotros elegimos.

Motivo 1.5 (este vale la mitad):
Spoiler:
Para describir los programas uso por ejemplo la cantidad de variables en las situaciones. En lo que hice siempre son 1 o 2. Pero el caso del color cyan (1 variable, con variación de situaciones y de acciones) hay 3 y eso me confunde un poco, o sea 2 no son de la situación a resolver sino del programa (contadores), pero no sé si tendría que ponerles un límite también, no sé, no entiendo bien de eso.

Lamento si escribí mucho, gracias.

Etiquetas: curso, lenguaje, programa, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:15.