Ver Mensaje Individual
  #66 (permalink)  
Antiguo 26/07/2015, 22:01
Tachikomaia
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Proyecto de inteligencia artificial de codigo abierto

Kritik, el mensaje sobre mis actividades y complicaciones fue para minombreesm como forma de darle ánimo y decirle lo que podría esperarle en el futuro.
Yo ahora me podría poner a discutir contigo, pero no lo creo conveniente al menos en este tema, pues no soy el autor, el tema de discusión es otro, no tengo la barrita muy verde que digamos en este foro, y este tema tampoco -hubo 2 advertencias-.

En cuanto al link que puse sí creo que no sería inconveniente hablar. Lo puse a modo de dar ideas e inspiración a minombreesmm. Pero yo no pedí problemas para solucionarlos con ese programa, dije:
"tengo pensado, cuando termine, retar a los usuarios a que me planteen problemas y yo intentaría solucionarlos con mi programa."
Aún no lo terminé xD Por otro lado sí he pedido que me planteen problemas pero no para resolverlos usando ese programa sino para pensar y luego postear los pseudocódigos como práctica para programar mejor. Y sin embargo a pesar de ser cosas diferentes tienen algo en común: Me refiero a problemas más o menos sencillos; el problema que planteaste no lo es xD

"Quiero saber como se puede optimizar una comunicación."
Si un programa de resolver problemas fuese "perfecto" podría resolver eso, sin importar cómo lo digas, pero mi programa no lo es, describirle un problema significa definirle ciertas variables.

En este caso... en primer lugar una cosa es optimizar una comunicación concreta, específica, y otra cosa es optimizar "cualquiera", cosa que yo entiendo pero no es tan claro, más bien querrías una lista de pautas, o de lo que comunmente es más común que pueda optimizarse o que resulte más optimizador. El punto es que es como si me estuvieses diciendo "optimizar una forma de jugar al tenis", o sea yo me pregunto ¿qué forma? ¿la de quien? La respuesta a tu pedido dependerá de la comunicación específica que digas, sino lo que vas a obtener es, como dije, una lista de pautas o algo así, o podés obtener una clasificación de tipos de comunicación y pautas diferentes para cada una, o cada posible comunicación y cómo optimizar cada una.
¿Ves? Puede ser que yo le de vueltas al asunto para no admitir "no tengo idea", pero sea lo que sea que me plantees la respuesta serí así si me lo planteas como lo hiciste.
Ejemplo: Quiero optimizar una partida de un videojuego. ¡Oye! ¿Qué videojuego? ¿una partida ya empezada o qué?

Si es una comunicación en concreto, en el estado actual de mi programa tendrías que ingresar las variables (o estado) de esa comunicación. Más adelante intentaré que el programa averigüe variables, por ahora es claro que no lo hace, así que si no puedes describirlas deberías empezar por ese problema, algo como "Quiero saber cuales son las variables que definen una comunicación".
Para solucionar un problema así... no sé... no he pensado mucho en eso pero posiblemente debas ingresar un caso que conozcas, con inicio y resultado, y el programa intentaría averiguar cómo a partir de ese inicio se puede llegar a ese resultado. Algo como el programa Formulize Eureka pero no sólo serían números y en este caso sería agregando datos (que invente, suposiciones, de eso se trata: Debe supone qué variable/s no has definido). Pero ojo, lo ideal sería que te dijera el nombre, por ejemplo "valor que el receptor da a la palabra "espacio"", pero eso es aún más complicado, yo primero tengo pensado hacer que te de simplemente conjuntos de valores, luego tendrás que ver tú qué son esos valores en la realidad y cual es el conjunto correcto. Es decir, hay cosas que una computadora no puede comprobar (si se basa en algo que no es del todo conocido), eso tiene que hacerlo cada uno.
...
La verdad, habiendo dicho esto último, todo ese proceso parece inútil, todo valor es posible, no tiene sentido que te los diga un programa, cada uno debería analizar cuales tienen sentido y cuales no. Pero bueno, como dije no es algo en lo que haya pensado mucho, estoy con cosas más básicas.

Si en vez de describir una comunicación en concreto describes un "tipo de comunicación", o sea algo generalizado, entonces toma con pinzas los resultados. Por ejemplo en el Final Fantasy 5 puedes decir algo como "me encuentro en una situación de tipo "todos mis personajes near death" ¿qué me conviene?", pero 1 o 2 HP pueden hacer una gran diferencia, así como otras muchas cosas.
Creo que más allá de eso, da igual, tenés que definir variables.

Si quieres que el programa haga una clasificación de tipos de comunicación lo más útil posible (¿útil para qué objetivo? De paso ¿optimizar para qué objetivo? Ej: En qué medida priorizar la velocidad y en qué medida priorizar el nivel de especificación), em... tienes que decir los elementos que forman esas clasificaciones. O sea, esto es como pedir que se construya una casa, pero los ladrillos no los puede inventar. Y no puedes pedirle que construya ladrillos sin darle algo, tampoco.
Obviamente no sé mucho sobre las variables de la comunicación y posibles clasificaciones (que en muchos casos suelo evitar), hablaré de algo que sepa. Si yo quiero clasificar batallas de Final Fantasy Tactics, pensaría en variables o conjuntos de ellas que sean iguales en muchos casos. Por ejemplo "el rival puede usar Summon ofensivamente". Supongo que en un nivel "básico" lo que el programa debería hacer es pedirte distintas situaciones y buscar cosas comunes en todas ellas, luego gualá. Si tú no sabes distintas situaciones volvemos al tema de los ladrillos. A lo que me refería con "básico" es que si el programa mejora, le pondría nombres útiles a los grupos. Son cosas diferentes, supongo que puedes entender, una cosa es crear grupos y otra cosa es ponerles un nombre que a los humanos les parezca bien, por decirlo así.

Por último, si quieres que el programa se ponga a analizar cada posible comunicación, podrás imaginar que le tomaría muchísimo tiempo o que de hecho jamás lo terminaría. Como solución puedes hacer que considere iguales casos que tienen pequeñas diferencias, tú especificarías cuales, pero claro si haces eso el resultado no sería fiable. Otra solución es que analices un conjunto de posibles comunicaciones, es decir, no todas las posibles, sólo algunas.
Lamento ser repetitivo: Tendrías que definir las variables.

No sé si me quedó algo más que decir... Me pregunto si fue un montón de nada o merezco al menos una latita de arvejas.

T.T

Ah sí: También tienes que especificar lo que consideras una comunicación optimizada lo suficiente según tu gusto/objetivo. Si no lo sabes, ok, entonces el problema tiene 2 etapas, es más o menos lo mismo que dije por ahí más arriba. Especificar no significa decir "cuando las personas se entienden", recuerda lo que dije de que mi programa no es tan avanzado, no entendería algo así, precisa comparar variables o ver si existe un archivo y cosas así.

Y debes especificar las acciones posibles o (si no las sabes) algo por el estilo.

Te voy a decir un ejemplo concreto, los que yo uso.
Variable1 = 1
Accion_Inicial = -1
Modificacion_de_la_acciion_actual = Accion_actual+1
Maximo_valor_de_la_accion_actual = 1
Solucion = "Variable1 == 5"

Dicho a mi modo:
V1 = 1
Actini = -1
Actmod = Act+1
Actlimit = 1
Sol = "V1 == 5"

En realidad algunas de esas variables no existen como tales sino que "se forman" a partir de otras, pero bueno, como ejemplo sirve.

Dicho en español eso sería "quiero que un objeto en la coordenada 1 llegue hasta la coordenada 5, mediante el uso de estas acciones:
-1: Va a la coordenada anterior.
0: No cambia.
1: Va a la coordenada siguiente."

Cuando una acción no funciona la situación se resetea, uno podría pensar que es simplemente probar acciones hasta que se dé, pero no es así, no es tan simple.

Si yo fuese tú, e intentara describir tu problema de esta forma, no sabría cómo. Entonces ¿qué? No sé, esto no es magia, hay que conocer bien lo que se quiere resolver, en todo caso quizá es mi error, en vez de "resolvedor de problemas" debería llamarle "probador de acciones que se le defina en una situación que se le defina hasta llegar a otra situación que se le defina", o "resolvedor de problemas tipo X (¿sencillos?)", pero como sea pretender que resuelvan un problema requiere que le definan sus partes, y según he pensado, las que dije son las partes:
- Situación inicial
- Acciones posibles
- Situación a la que se quiere llegar

Se debe conocer al receptor y al emisor (incluyendo el medio), lo cual implica describir una mente, o sea, "implica", ni siquiera es es sólo, que ya es muy complicado.

Qué idioma usa, qué "emoción" siente ante cada palabra o frase, cómo las razona, etc.

Habría que definir esas cosas o que el programa las averigüe. Lo 1ero no sé, no me dedico a esas cosas, y a lo 2ndo todavía me falta mucho para llegar si acaso llego. Quizá incluso es un sin sentido, como dije por ahí, no sé, si avanzo suficiente supongo que me voy a dar cuenta de eso, al menos.