Foro de elhacker.net

Foros Generales => Foro Libre => Mensaje iniciado por: RevolucionVegana en 5 Noviembre 2016, 07:51 am



Título: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 5 Noviembre 2016, 07:51 am
Pues eso, estaría bien recrear un escenario en el cuál se programasen varios animales no humanos, animales humanos y plantas, y ver cuál sería su comportamiento, la idea sería algo así como recrear la pirámide alimenticia, los ciclos del agua, estaciones del año, día y noche, estaría bien ver como las plantas crecerían cuando reciben cerca excremento de los animales, sol y agua, o como mueren si les faltan este tipo de cosas, no me refiero a hacerlo como un videojuego con animaciones y todo eso, si no bastaría desde la terminal, en la cuál saliesen todos los objetos que hay, y poder acceder a la información de cada uno viendo cuántos días de vida tiene, si ha muerto o ha sido comido por otro animal de ese ecosistema, sería algo así como investigar antes de programar a algunos animales poniendo que temperaturas pueden llegar a soportar y durante cuanto tiempo, cuanto tiempo pueden estar sin comer ni beber agua, tener en cuenta la pirámide alimenticia, también poner por ejemplo que si se encuentra con otro de su misma especie dependiendo la especie pues criarían X cantidad de hijos, estaría muy interesante la verdad, y los humanos pues realmente no es tan difícil programarlos porque prácticamente ya estamos programados, ya nos han programado la cantidad de veces que hay que comer, a que hora dormir, a que hora despertarnos, ir a estudiar o al trabajo de X hora a X+el tiempo que haya pasado, etc.. Que opináis?


Se podría hacer un proyecto rollo Open Source e ir haciendo poco a poco más complejo y real el algoritmo de cada especie.

Saludos, se podría hacer en C++


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 5 Noviembre 2016, 11:36 am
Parece algo interesante, pero no acabo de ver lo que quieres hacer.

Existen programas y simulaciones de poblaciones y todo esto. Supongo que quieres hacer como un dijeramos (hablamos muy teóricamente) una clase que defina el comportamiento de un animal, otra clase de otro animal, etc... y luego que interaccionen entre si a través de un numero de ciclos que determines para ver el resultado.

Me recuerda a algunas simulaciones mas o menos rudimentarias que he visto, como por ejemplo el famoso juego "live" con células que da resultados francamente curiosos, o los que miran escenarios de dos especies.

Por ejemplo zorros y conejos y donde ves que las poblaciones van subiendo y bajando alrededor de un punto de equilibro.

Ya de entrada te aviso que aunque aparentemente es simple, el resultado va a ser caótico. No en el sentido de "aleatorio" sino en el matemático. Posiblemente obtengas atractores

https://es.wikipedia.org/wiki/Atractor

Quizás lo que pretendes de "hora a hora" sea excesivo, creo que lo sencillo sería limitarte a una evolución por días, o incluso por semanas. Incluyendo por supuesto en esos ciclos los anuales de reproducción.

Posiblemente lo mas complicado sea planear la "base", pero puede ser bastante interesante. Te propondría que empezaras con diagramas de flujo y con unas ideas generales sobre lo que sería para "ficha" de animal o planta.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 5 Noviembre 2016, 11:45 am
Vale muchas gracias, voy a ponerme a investigar la cadena alimenticia y todo eso, las plantas y traigo esquemas hechos en pseudocódigo, lo suyo sería empezar con un par de animales y poco a poco ir incorporando más, y más hasta llegar a "soltar enfermedades" y algunas cosas así yo creo que con una comunidad detrás de eso se puede hacer perfectamente, la creatividad y lo que quiera profundizar una persona no es suficiente ya que siempre hay cosas que no tenemos en cuenta pero otro sí.

Gracias Orubatosu, un saludo!


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 5 Noviembre 2016, 13:46 pm
Bueno, en realidad no es tan complicado, y si que lo es.

Lo que sugiero es que empieces por pensar un ambiente con una serie de parámetros que se puedan variar. Estos pueden ser extensión (porque los animales y plantas se limitan por eso). Que tenga o no estaciones (épocas donde el calor permite que crezcan mejor las plantas o que no lo hagan) y cosas por el estilo. El pretender meter una cantidad exagerada de factores puede hacer que las simulaciones terminen por no tener mucho sentido a menos que se hagan muchas pruebas. Ten en cuenta que esto siempre va a ser una "mala simulación" que permita sacar conclusiones simples, a menudo inesperadas.

Por ponerte un ejemplo, en algunos parques africanos apenas hay depredadores y los elefantes tienden a destrozar toda la comida disponible. De hecho incluso con depredadores, pocos se atreven a intentar ir a por una cria que solo es "vulnerable" durante los primeros meses de vida y que esta normalmente protegida por una manada que es virtualmente inmune a estos depredadores. El resultado cuando no se controla su numero, incluso artificialmente es la desertización del terreno y la muerte por hambre de esos animales.

Cosas por el estilo se pueden mostrar con programas de este tipo


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: ThinkByYourself en 5 Noviembre 2016, 14:10 pm
La idea mola, podría ser tremendamente útil (para la población, y no para la élite de la Bayern, la Roche, y otros, ya tu sabes).

Para partir de una base seria, yo lo que haría sería pedir permiso a alguien que tenga una base de datos de botánica, y de primeras:

Importar toda la taxonomía vegetal posible (dicen que hay identificadas 300.000 especies de plantas). Aquí hay bastantes recursos parece:

http://lnavarro.webs.uvigo.es/links_TaxVeg.htm

Luego, probaría de hacer lo mismo con las enfermedades. En eso, la OMS lanza como un "boletín oficial" de enfermedades cada año creo. Y si no es la OMS es otra.

Como no sería fácil porque el mundo vive con miedo temeroso de no tener un trabajo o de concebir su día a día tal y como lo tienen montado (miedo al cambio, a todos nos pasa), sería raro que te ayudaran así, felizmente. Yo lanzaría directamente un spider/crawler/scrapper para que fuera por Google y por Wikipedia y algunas otras webs que sepa que son de fiar, para así coger todo lo que pueda.

Luego haría un programa que buscara nombres de plantas en la información de enfermedades, y viceversa, aislaría los casos, y uno a uno (con algún programa más para abreviar), relacionar planta y enfermedad (si cura o empeora, o lo que sea), a manita, para saber si por el contexto se puede inducir una relación.

Es... Un poco una matada. Pero yo también lo había pensado jeje....... Pero son trabajos de la élite, si la élite no hace naa, un individuo no puede hacer mucho...

Lo que fastidia es pensar que muchos laboratorios ya juegan con esas bases de datos... Por eso no lo hago: está hecho, pero no quieren soltarlo en formato SQL, que sería lo interesante.

Si lo enfocas más al estudio de las plantas y su reactividad ante agentes externos, en ese caso, bueno, 1 persona puede hacer poquillo en verdad... Muchas plantas, muchos factores (más de los que vemos, o incluso que sabemos), poco tiempo.

Pero sí, no sé, estaría guay que cuando tienes una dolencia, buscar el nombre, y que te devuelva una serie de nombres de plantas relacionadas, que ahora lo hace por encima la botánica y la fitoterapia. Es importante, tengo entendido, el principio activo ese. Pero ignoro cómo funciona realmente, la verdad...

Jeje creo que he desviado un poco la intencionalidad, que creo que era más de investigación científica que de médica, más de monitorizar el crecimiento y eso. Pero bueno, tómalo como un punto de vista más, con interés por la salud pública, que creo que podría tener salida más directa, royo: aplicación para saber qué plantas me convienen si me duele la barriga, por ejemplo, o la cabeza, o tengo afectado el riñón. A veces, el médico tampoco acierta con la dolencia, y vale la pena tener vías alternativas disponibles para abarcar el problema que sea, y puede ser útil si estás perdido en la montaña y no tienes un médico a mano, por ejemplo.

En cualquier caso, seguramente C++ es la mejor opción para hacerlo. Ojalá supiera C++...........! Pero lo veo muy tocho ese lenguaje, es demasiado técnico, y tiene demasiadas "cosillas"... pero mola, para mí es "el lenguaje" desde que sé que tiene asm inline (qué pasada) y herencia múltiple. Si subes algo a Git ya dirás, yo le echo un ojo!

La idea de la simulación también mola, eh! Sólo que mis tiros iban cerca, pero no ahí en concreto, aunque estén cerca, y ambos puedan ser útiles para hacer ciencia.

Saludos!







Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 5 Noviembre 2016, 15:12 pm
He estado pensando durante estas horas y he decidido que sí lo voy a hacer, voy a crear su página web donde explique el objetivo cuál es, donde se vayan poniendo los avances y donde se ponga el código que se ha escrito hasta el momento, la idea realmente no la estoy enfocando a la medicina pero creo que valdría para muchas cosas, en unas horas os iré comentando el nombre que le voy a poner al proyecto y el sitio web cual será, por cierto compro un .org mejor no?

Un saludo a todos y espero vuestras respuestas compañeros! Este proyecto es de todos.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: ThinkByYourself en 5 Noviembre 2016, 15:35 pm
Guai! Estaré al loro pues! El *.org siempre queda bien


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Poyoncio en 5 Noviembre 2016, 16:46 pm
Empecemos por los cimientos y no por el tejado. Sabes programar en C++ con fluideza? Piensa que para llevar un proyecto de estas magnitudes necesitaras un dominio un poco/basante avanzado del lenguaje en el programa , quizas con los primeros animales te va saliendo, pero por ejemplo, imagina que ya tienes 200... SI no esta bien programado, con una memoria dinamica bien formada y con un codigo bien hecho te llevaras un gran chasco porque petara por todos lados.

Respecto a lo que comentas de comprar ya un dominio y contratar un servidor, yo si fuera tu me esperaria. Primero consigue unos cimientos del codigo en C++ y luego gastate la pasta. Te aviso de que lo que rapido empieza poco dura. Mas vale que te lo tomes con calma, sino te quemaras mucho. Es una buenisima idea sinceramente, por eso te doy consejos para que siga adelante y no se hunda a la primera de canvio. Tambien te digo que no puedes contar, con que haya una comunidad detras activa que lo desarrolle, eso lo tendras en el mejor de los casos y pidiendo mucho....

Tambien te recomiendo que busques en github proyectos similares con poner "animal ecosystem github" te saldran varios, por ejemplo este:  https://github.com/Lilykos/ecosystem-simulator/blob/master/ecosystem.cpp me lo he mirado por encima y me parece impresionante y muy bien hecho, podrias contactar con ese programador por ejemplo y pedirle el codigo, o intercanviar ideas, seguramente te conteste muy amablemente.

Te recomiendo que partas de por ejemplo un programa que consulte una base de datos en un servidor, o sino que tenga la base de datos descargada y que cada vez que se inicie el programa se actualize automaticamente en el ordenador para generar menos carga al servidor.

Nose que es lo que pretendes que se vea en el ordenador es decir, tienes dos opciones, la primera es que sea la consola normal y que vaya mostrando por ejemplo datos, en plan la poblacion de x animal es tal, la raza x se ha extingido, en caso que sea ese tipo de programa te recomiendo que pongas una consola interactiva con la que el programador pueda interactuar (seria interesantismo), la segunda opcion, seria currarte unos graficos de la ostia, que lo veo para un par de personas casi imposible a no ser que utilizes algo tipo unity o cosas de esas..... Estaria interesante sino, que en vez de tener el programa en consola, tuvieras una interfaz grafica minimalista hecha con Qt por ejemplo, aunque yo si fuera tu esto lo dejaria de lado de momento.

La idea de NoBullshit es interesante, por ejemplo lanzas un crawler en python (por ponerte algun lenguaje... No hagas un crawler en C++) aqui: https://es.wikipedia.org/wiki/Wikiproyecto:Animales/Lista seria brutal, porque el crawler seria muy sencillo y util, lo que haria por ejemplo seria extraer solo la etiqueta <a> coger el link (href) y el nombre del animal que esta entre las etiquetas <a>, entonces, guardaria en la base de datos el nombre comun y luego entraria en el link, y ya lo programas para que extraiga el texto de wikipedia que quieras como por ejemplo en nombre cientifico o las caracteristicas. Yo hice algo parecido una vez en python y es sencillisimo, solo con eso ya ampliarias la base de datos de animales en unos 250 animales... Imaginate con plantas.... Si veo que tu proyecto tira para adelante igual hasta te lo hago yo...

Tambien te recomiendo que el usuario pueda elegir que animales quiere en el ecosistema por ejemplo solo bacterias o solo plantas cosas asi, seria de gran utilidad para los trabajos de fin de universidad de muchos cientificos...

En general lo que te quiero decir, es que hagas el programa muy flexible para que asi pueda adaptarse a las necesidades de cada cientifico. Dudo que la gente normal use este tipo de tecnologia...

Por ultimo te aconsejo que no programes animal por animal es decir, no hagas esto:
Código
  1. int perro(){
  2.    char* nombre cientifico = "....";
  3.    int fuerza = 3;
  4.    //mas caracteristicas
  5. }
  6.  

Lo que me refiero es a que hagas
Código
  1. int nuevo animal(char[50] nombreCientifico, char[50] nombreComun, int resistencia, int poblacion......){
  2.    //y aqui conectar con la base de datos para llenar los campos o generar un nuevo fichero
  3. }
  4.  

Haciendo esto lograras que tu programa tenga poco tamaño y que tu base de datos sea amplia. Lo carga en memoria y ale. El codigo que te acabo de enseñar si lo implementas en una consola interactiva por ejemplo, podras lograr que cada persona incluya un animal con las caracteristicas que quiera y con una poblacion determinada (en este caso no haria que conectara con la BD porque sino se llenara de animales sin sentido)

Mirate este juego tambien: https://es.wikipedia.org/wiki/Juego_de_la_vida


MUY IMPORTANTE: Reserva la memoria que vayas a utilizar. Tambien te recomiendo que no uses char*, usa char[] y asi usaras lo que necesites asi con todo, Si no te quedaras sin ram en seguida.

Una ultima cosa, no se como se llama la escalera de la que voy a hablar pero, si alguien la conoce que la publique porque es super interesante para esto, es una escalera en la que se ordena a las especies en funcion de el poder que tienen de matar es decir, con las caracteristicas que tienen, recuerdo que el humano, sin contar con la tecnologia estaba en el mismo nivel que un cerdo, por ejemplo, eso seria interesante implementarlo porque resolveria gran parte del trabajo.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 5 Noviembre 2016, 17:43 pm
Citar
Empecemos por los cimientos y no por el tejado. Sabes programar en C++ con fluideza? Piensa que para llevar un proyecto de estas magnitudes necesitaras un dominio un poco/basante avanzado del lenguaje en el programa , quizas con los primeros animales te va saliendo, pero por ejemplo, imagina que ya tienes 200... SI no esta bien programado, con una memoria dinamica bien formada y con un codigo bien hecho te llevaras un gran chasco porque petara por todos lados.

No, es más nunca he hecho nada orientado a objetos, pero la idea es que antes de añadir cualquier cambio al código (o directamente empezar el código) se hagan unos esquemas y unos dibujos que cualquiera que no sepa programar pueda entender y después ir traduciendo todo eso a C++ y utilizando operadores lógicos, sentencias condicionales, sentencias repetitivas, etc. y también junto a un estudio de cada animal y/o planta como cuales son sus devoradores, el tiempo de vida medio que tienen, crecimiento, cantidad media de hijos que pueden tener, en fin, poco a poco en la web que voy a hacer voy a ir poniendo cosas y la gente que vaya a participar que elija si se quedan o no, la idea es que haya una comunidad detrás de todo esto, pero el primer esfuerzo y la primera inversión para el dominio lo haré yo, y si no cuaja no pasa absolutamente nada, yo seguiré intentándolo ya que creo que es una excelente manera de aprender tanto programación, como del comportamiento de los animales, de lo que sería más correcto para ellos, aprender como son los ecosistemas de cada lugar, que plantas hay, temperaturas, es una fuente infinita de sabiduría y un programa que jamás terminaría de ser programado, ya que para eso habría que programar al 100% el algoritmo de un humano, cosa que veo imposible, pero sería muy interesante al menos ver un 1% escrito en código (al menos nuestro instinto).

Citar
Respecto a lo que comentas de comprar ya un dominio y contratar un servidor, yo si fuera tu me esperaria

En esto no hay problema, el dominio me cuesta 14 euros (al año) y el hosting es gratis, voy a usar hostinger cambiando los DNS del dominio a los de hostinger (para una página en HTML y algo de CSS básico más que suficiente), además que si algún día hay que añadirle alguna cosa en PHP estaría bien, todo lo que sea aprender bienvenido sea (gracias por preocuparte por lo del servidor y eso).

Citar
Te aviso de que lo que rapido empieza poco dura. Mas vale que te lo tomes con calma, sino te quemaras mucho. Es una buenisima idea sinceramente, por eso te doy consejos para que siga adelante y no se hunda a la primera de canvio. Tambien te digo que no puedes contar, con que haya una comunidad detras activa que lo desarrolle, eso lo tendras en el mejor de los casos y pidiendo mucho....

Muchísimas gracias de verdad, entiendo perfectamente lo de la comunidad, por eso haré yo los primeros esfuerzos que además me servirán para practicar lo que vaya aprendiendo en un programa "real", o que al menos tenga una utilidad mínima o algo interesante y esta me parece bastante interesante, y poquito a poco lo que vaya aprendiendo por poco que sea intentar usarlo de manera útil en el código, aprender a escribir el código bien limpio y todo bien comentado para que si algún día otro desarrollador quiere utilizar el código lo tenga más fácil.

Citar
Tambien te recomiendo que busques en github proyectos similares con poner "animal ecosystem github" te saldran varios, por ejemplo este:  https://github.com/Lilykos/ecosystem-simulator/blob/master/ecosystem.cpp me lo he mirado por encima y me parece impresionante y muy bien hecho, podrias contactar con ese programador por ejemplo y pedirle el codigo, o intercanviar ideas, seguramente te conteste muy amablemente.

Muy interesante, aunque había muchas partes del código que no sabía para que servían (son unas 3000 líneas tampoco me he parado a mirarlas todas pero he mirado las partes que más complejas se me hacían y por eso lo digo) en la ojeada rápida que he echado, supongo que es totalmente normal al no haber tocado casi nada en C++, solo he tocado C, PHP y Python, (CSS es lo más parecido "orientado a objetos" que he tocado) posiblemente cuando tenga algo ya hecho que demuestre algo de "profesionalidad" y que el tema va enserio me pondré en contacto con él, gracias por enseñármelo.

Citar
Nose que es lo que pretendes que se vea en el ordenador es decir, tienes dos opciones, la primera es que sea la consola normal y que vaya mostrando por ejemplo datos, en plan la poblacion de x animal es tal, la raza x se ha extingido, en caso que sea ese tipo de programa te recomiendo que pongas una consola interactiva con la que el programador pueda interactuar (seria interesantismo), la segunda opcion, seria currarte unos graficos de la ostia, que lo veo para un par de personas casi imposible a no ser que utilizes algo tipo unity o cosas de esas..... Estaria interesante sino, que en vez de tener el programa en consola, tuvieras una interfaz grafica minimalista hecha con Qt por ejemplo, aunque yo si fuera tu esto lo dejaria de lado de momento.

Efectivamente, la idea es que el usuario tenga la posibilidad de interactuar con la consola y pueda listar todas las especies de vegetales y animales que hay hasta el momento en el programa, y al lado de cada especie salga una especie de ID que los identifique y poder ver cuantos hay en esa especie en el momento actual, cual es la edad media, cuantos han muerto y guardar un log de las causas por las que han muerto (por ejemplo), o también ofrecer la posibilidad de que el usuario pueda introducir por ejemplo: En un espacio de 10km2 x 10km2 pongo estos animales, estos vegetales y estas condiciones de vida y ver cuáles se extinguirían, o incluso si el animal no pasa hambre, sed, tiene una temperatura adecuada, poner una especie de algoritmo para ver si los animales tienen unas condiciones de vida óptimas, yo que sé es que se pueden hacer miles de cosas, si realmente más que programar, es cuestión de ir haciendo poco a poco una buena base de datos de vegetales y animales. Y en lo segundo que has dicho estoy de acuerdo contigo, de momento lo dejaré de lado, hay demasiadas cosas por hacer y aprender de momento antes de entrar en esos temas, habría que saber modelar y haría falta un ordenador gamer de los buenos.


Citar
La idea de NoBullshit es interesante, por ejemplo lanzas un crawler en python (por ponerte algun lenguaje... No hagas un crawler en C++) aqui: https://es.wikipedia.org/wiki/Wikiproyecto:Animales/Lista seria brutal, porque el crawler seria muy sencillo y util, lo que haria por ejemplo seria extraer solo la etiqueta <a> coger el link (href) y el nombre del animal que esta entre las etiquetas <a>, entonces, guardaria en la base de datos el nombre comun y luego entraria en el link, y ya lo programas para que extraiga el texto de wikipedia que quieras como por ejemplo en nombre cientifico o las caracteristicas. Yo hice algo parecido una vez en python y es sencillisimo, solo con eso ya ampliarias la base de datos de animales en unos 250 animales... Imaginate con plantas.... Si veo que tu proyecto tira para adelante igual hasta te lo hago yo...

Interesantisima esta idea, de hecho, hace 4 o 5 días estuve hablando con AlbertoBSD de esto para hacer lo mismo en una web de viajes, así que si acabo haciendo esto sería buenísimo para un trabajo más automatizado y eficiente y también como aprendizaje me vendría de perlas. Muy buena idea NoBullshit.


Citar
Tambien te recomiendo que el usuario pueda elegir que animales quiere en el ecosistema por ejemplo solo bacterias o solo plantas cosas asi, seria de gran utilidad para los trabajos de fin de universidad de muchos cientificos...

En general lo que te quiero decir, es que hagas el programa muy flexible para que asi pueda adaptarse a las necesidades de cada cientifico. Dudo que la gente normal use este tipo de tecnologia...

No había leído el post entero y esto ya te lo he comentado algo más arriba en este mismo post, me alegra que tengamos unas ideas parecidas de este proyecto hemos coincidido en todo en un par de párrafos por no decir en todos xD

Citar
Haciendo esto lograras que tu programa tenga poco tamaño y que tu base de datos sea amplia. Lo carga en memoria y ale. El codigo que te acabo de enseñar si lo implementas en una consola interactiva por ejemplo, podras lograr que cada persona incluya un animal con las caracteristicas que quiera y con una poblacion determinada (en este caso no haria que conectara con la BD porque sino se llenara de animales sin sentido)

Vale perfecto el consejo, con el código de ejemplo lo he comprendido bien

Citar
MUY IMPORTANTE: Reserva la memoria que vayas a utilizar. Tambien te recomiendo que no uses char*, usa char[] y asi usaras lo que necesites asi con todo, Si no te quedaras sin ram en seguida.

Una ultima cosa, no se como se llama la escalera de la que voy a hablar pero, si alguien la conoce que la publique porque es super interesante para esto, es una escalera en la que se ordena a las especies en funcion de el poder que tienen de matar es decir, con las caracteristicas que tienen, recuerdo que el humano, sin contar con la tecnologia estaba en el mismo nivel que un cerdo, por ejemplo, eso seria interesante implementarlo porque resolveria gran parte del trabajo.


La buscaré la pirámide que nombras, lo del char si que lo sé por C

y esto último:

Citar
Mirate este juego tambien: https://es.wikipedia.org/wiki/Juego_de_la_vida

Lo vi hace mucho en este vídeo:

tC-HTMGjiG0

Es el autor del libro de C que me leí hace un tiempo :) muy buen libro para empezar!!

Saludos a todos ya os voy comentando como va la cosa!!!!


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Poyoncio en 5 Noviembre 2016, 18:43 pm
El ID de cada animal o planta puede ser el nombre cientifico

Piensa que necesitaras un buen procesador, almenos para inciar el programa necesitaras muchos datos aleatorios como la posicion y todo el tema...
Para que te hagas a la idea de lo que yo estoy imaginando mira este juego: https://es.wikipedia.org/wiki/No_Man%27s_Sky o https://es.wikipedia.org/wiki/Ark:_Survival_Evolved el concepto de un mundo en el que se puede interactuar.

Aunque ahora que lo pienso, quizas C++ no seria el mejor lenguaje, piensa que la gente esto lo usaria para hacer estudios y todo el tema, quizas seria mejor programarlo en Ruby o Python ya que es de los lenguajes mas usados por ejemplo en bioinformatica, aunque luego tambien se notara bastante en el tema de la potencia del programa....... Quizas crear una API para python que permita interactuar con tu programa estaria bien..  

Y respecto a este codigo que te he pasado antes:
Código
  1. int nuevo animal(char[50] nombreCientifico, char[50] nombreComun, int resistencia, int poblacion......){
  2.    //y aqui conectar con la base de datos para llenar los campos o generar un nuevo fichero
  3. }
  4.  
Lo he estado pensando, y lo mejor seria que los datos pasados por parametro, se guardaran en una estructura para enviarselo a la base de datos. SI hay un parametro que no tiene ningun dato se autorellena ese valor como undefined o algo asi y ya esta.
Por lo que comentas de orientado a objetos, no te preocupes, solo tendras un par de clases, es decir tendras en plan class Animal() class Planta() y asi.. La verdad es que me estoy motivando mas yo que tu con tu proyecto  :xD :xD :xD :xD

Yo tambien lei el libro de miguel angel acera  :P




Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 5 Noviembre 2016, 19:23 pm
Citar
El ID de cada animal o planta puede ser el nombre cientifico

Perfecto! Así será, un lenguaje universal, excelente idea.

Citar
Aunque ahora que lo pienso, quizas C++ no seria el mejor lenguaje, piensa que la gente esto lo usaria para hacer estudios y todo el tema, quizas seria mejor programarlo en Ruby o Python ya que es de los lenguajes mas usados por ejemplo en bioinformatica, aunque luego tambien se notara bastante en el tema de la potencia del programa....... Quizas crear una API para python que permita interactuar con tu programa estaria bien.. 

Lo de la API escapa de momento de mis manos, pero piensa que al ser código abierto se podría modificar o en un futuro hacer esto que tu has dicho, o crear distintos modos de uso, lo importante aquí es escribir los algoritmos y OJO previamente haber investigado bien al animal, como se comporta con otros de su especie, el tema de dominar, y todo eso, son muchas cosas a tener en cuenta pero con tiempo y esfuerzo lo conseguiremos estoy seguro!

Citar
Por lo que comentas de orientado a objetos, no te preocupes, solo tendras un par de clases, es decir tendras en plan class Animal() class Planta() y asi.. La verdad es que me estoy motivando mas yo que tu con tu proyecto  :xD :xD :xD :xD

Jajaja me alegra mucho leer eso aunque no creo porque ya he comprado el dominio y ya estoy haciendo la web!!!! Para dentro dentro de unas cuantas horas o para mañana ya estará online y os pasaré el enlace le he puesto finalmente un .org

Citar
Yo tambien lei el libro de miguel angel acera  :P

Está muy bien explicado la verdad, para empezar es perfecto

Saludos compañeros :)!


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 5 Noviembre 2016, 19:53 pm
En realidad creo que pretendes hacer de entrada algo tremendamente complejo, e incluso me atrevería a decir que muy complejo en C++

Por otro lado "desconfio" de las simulaciones de este tipo mas allá de cuestiones bastante generalistas. Las posibles variables son enormes y los animales e incluso las plantas tienen la mala costumbre de comportarse en ocasiones de forma inesperada.

Es decir, una cosa es calcular las curvas de población entre media docena de especies en base a ciertos factores, y sacar algunas conclusiones "posibles". Pero a medida que pretendes hacer mas y mas preciso el modelo mas sencillo es que ocurran imprevistos que hagan que el resultado no sea fiable.

Para la idea de hacer esto "modularmente" me temo que el recurrir a la POO es casi obligatorio, y el C++ en ese aspecto es como en todo un poco picajoso. ¿Conoces ese tipo de programación?

Creo que sería ideal para algo como esto donde quieres escalar y que sea fácil añadir o quitar caracteristicas, e incluso hacer uso de la herencia.

Pero te insisto, no quieras montar desde cero algo muy grande. Empieza con sistemas pequeños y manejables y a partir de ahi con la experiencia recogida plantear nuevos escenarios.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 5 Noviembre 2016, 20:07 pm
En realidad creo que pretendes hacer de entrada algo tremendamente complejo, e incluso me atrevería a decir que muy complejo en C++

Por otro lado "desconfio" de las simulaciones de este tipo mas allá de cuestiones bastante generalistas. Las posibles variables son enormes y los animales e incluso las plantas tienen la mala costumbre de comportarse en ocasiones de forma inesperada.

Es decir, una cosa es calcular las curvas de población entre media docena de especies en base a ciertos factores, y sacar algunas conclusiones "posibles". Pero a medida que pretendes hacer mas y mas preciso el modelo mas sencillo es que ocurran imprevistos que hagan que el resultado no sea fiable.

Para la idea de hacer esto "modularmente" me temo que el recurrir a la POO es casi obligatorio, y el C++ en ese aspecto es como en todo un poco picajoso. ¿Conoces ese tipo de programación?

Creo que sería ideal para algo como esto donde quieres escalar y que sea fácil añadir o quitar caracteristicas, e incluso hacer uso de la herencia.

Pero te insisto, no quieras montar desde cero algo muy grande. Empieza con sistemas pequeños y manejables y a partir de ahi con la experiencia recogida plantear nuevos escenarios.


Claro la idea es hacer ahora unas bases, y a partir de esas bases ir añadiendo especies, es obvio que los animales se comportan de forma inesperada a veces, es que aunque aquí estemos tratando a los animales como un algoritmo simplemente, los humanos somos también un algoritmo, desde mi punto de vista somos un algoritmo igual que los animales pero muchísimo más complejo, incluso cuando sentimos amor hacia alguien, placer, cualquier cosa que parezca "mágica" simplemente (desde mi punto de vista) es un algoritmo, el dolor, todo absolutamente todo, es como los videojuegos, el gta v o el battlefield 3 o 4 o 1 por ejemplo, te pueden llegar a hacer sentir adrenalina y sensaciones de euforia y de placer y al fin y al cabo son 0 y 1, pero el conjunto de todo eso crea algo "mágico", pues con los animales humanos y los no humanos pasa igual, no hay magia, hay un algoritmo muy complejo detrás de todo esto, que opinas?.

Saludos

Por cierto el dominio que he comprado es: codegod.org

Hola a todos disculpar que haga doble-post es para subir el post y que os notifique el sistema, deciros que la web ya esta creada, la he hecho básica, 100% responsive, elegante y desde cero, espero vuestras opiniones, aquí os dejo el enlace:

http://codegod.org/

Un saludo!! Me voy a dormir que al fin la he terminado jeje

Buenas noches a todos!

MOD: No hacer doble post.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: AlbertoBSD en 7 Noviembre 2016, 17:26 pm
Pues esta interesante la idea, aunque la verdad también esta muy ambiciosa.

¿Que tanto has programado?

Minimo ya has programado el código del juego de la vida? donde las celulas mueres de inanición si estan muy amontonadas?

Las simulaciones son buenas y aunque no le veo un objetivo claro al proyecto.
Si es por aprender a programar, el proyecto esta muy ambicioso.

Si es por investigación científica, esta bien (Para alguien con doctorado en Biologia y/o ecosistemas )

Saludos!




Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 7 Noviembre 2016, 18:49 pm
Bueno el primer paso que era el de la web ya está hecho como os comenté ayer, obviamente falta mejorar cosas, pero poco a poco, ahora he hecho un esquema mientras aprendo C++, es algo hecho muy rápidamente, y muy simple, pero es para que os hagáis una idea, pronto os postearé un esquema mucho más elaborado y complejo.

(http://imgs.mx/images/b95472cffe050f8ac0e211f60ad911a3a186b626b9b35fbf115b747813d978c2)


Si es un programa de 30 líneas de código en el que sueltas a una serpiente y a un ratón es obvio lo que va a pasar, pero si fuese un programa con miles de líneas (y cada vez más y más) donde se tenga en cuenta incluso si el terreno es favorable para uno u otro, las velocidades, y un sin fin de detallitos más podría ser que el ratón se salvase ya que en la realidad no siempre una serpiente consigue cazar a su presa, la cuestión está en que cuantas más líneas y más cosas se tengan en cuenta en el algoritmo más realista será, al igual que los esquemas, cuanto más complejos mejor para darle más realismo!!

Saludos compañeros! Por cierto os ha parecido bonita la página? :D :P :P

MOD:Imagen adaptada a lo permitido.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 7 Noviembre 2016, 19:52 pm
Creo que quieres correr antes de andar.

Personalmente (y es solo una opinión) empezaría por algo sencillo como base, y a partir de ahí explorar las posibilidades.

Mas que nada porque proyectos grandes y complejos "desde cero" suelen tener montones de problemas que no son obvios a primera vista, y que aparecen en modelos mas simples.

Imagina un escenario simple, y a partir de ahí añade mas parámetros. Una vez hecho esto, el que se uses dos especies o 100 es irrelevante de hecho. El núcleo del programa no tiene porque cambiar necesariamente mucho.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Poyoncio en 7 Noviembre 2016, 20:27 pm
A ver si comienzas ya con el programa, tengo ganas de ver esas lineas :P


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: kub0x en 7 Noviembre 2016, 21:09 pm
Un proyecto interesante y ambicioso, bajo mi punto de vista has de pasar unos cuantos días sin tocar ni una tecla, simplemente diseñándolo en papel o donde sea. No pienses en código ni en programar hasta que no tengas algo estructurado, ni siquiera pienses en el lenguaje, eso ya vendrá cuando toque implementar.

Sería bonito ver como el ser humano necesita talar árboles, cazar animales y construir, seguramente la civilización colapse por falta de recursos y extinción de especies. Digamos que el tipo de árbol que necesita el humano sale cada X tiempo pero se necesita una demanda mayor a la densidad.. cosas así que reflejen la intrínseca característica destructora humana. Luego están los datos atípicos como personas excepcionales/deficientes/enfermas etc.

Sinceramente, si no cuentas con conocimientos matemáticos y estadísticos tendrás que reducir el alcance del proyecto a algo básico, y luego ir poco a poco incorporando nuevas características. En el foro siempre ayudaremos con cualquier cuestión sea lo que sea.

Espero que su diseño y desarrollo sea fructífero.

Saludos!


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 8 Noviembre 2016, 09:25 am
Esa es una vertiente interesante, y de hecho si no recuerdo mal incluso una ciencia: La silvicultura.

La explotación de los recursos naturales es una actividad tan vieja como el hombre, y cuando se hace bien es beneficiosa.

EL ejemplo que indica Cubox es el típico. Durante siglos muchas culturas han explotado bosques. Cortan árboles, quitan maleza para usarla como combustible, etc... el "secreto" obvio está en evitar la sobreexplotación.

Claro, en estos casos para una simulación de este tipo los factores serían diferentes, ya que por ejemplo habría que tener en cuenta la velocidad de crecimiento de los árboles, las lluvias, niveles de erosión, etc.

Sin pretender meterme en lios, diría que este tipo de simulaciones parecen pensadas para la programación orientada a objetos. Mas que nada por las capacidades de herencia que te permiten crear diferentes clases con características comunes y la capacidad de que todas ellas puedan usar las mismas funciones pero con diferente código dependiendo de cada caso


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: General Dmitry Vergadoski en 8 Noviembre 2016, 12:33 pm
buen proyecto pero porque en C++ y no en PHP ? pienso que en PHP es mejor ya que sera online y la gente no se tendra que bajar ningun .exe, ademas podrias colocarle un boton para que la gente se baje el diagrama ese que colocaste mas arriba.


Título: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: FJDA en 8 Noviembre 2016, 12:52 pm
Hola, si me permitís me gustaría aportar mi granito en este hilo.

En mi opinión no se puede hacer tal cosa. Simular sí pero, solo eso. Cada animal tiene un "programa" establecido en su código genético. Este programa define el comportamiento tiempo de vida, etc. Además cada individuo no es igual al 100% desde un punto de vista genético, si fuera así seríamos todos clones.  Así que se van produciendo pequeños cambios genéticos y de carácter o comportamiento del individuo que influirán en su tiempo de vida y adaptación al medio y cuanto más tiempo más posibilidades de reproducirse y transmitir su genes.  La reproducción sexual juega también un papel importante.

No creo que nadie sea capaz en la actualidad de reproducir a modo de código informático exactamente el mismo código genético que establece el comportamiento de un ser vivo. También hay que tener en cuenta otros factores físicos que condicionan su adaptación al medio y reproducción como he comentado.



Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 8 Noviembre 2016, 22:06 pm
No vamos, obviamente no puedes "simular" el comportamiento de un animal, pero si que puedes hacer simulaciones relativamente fiables de casos "simples"

Por ejemplo un caso de un parque natural cerrado, con ciertos recursos de comida y agua, variaciones anuales, varios tipos de hervivoros y algunos depredadores y ver como el aumento de unos o de otros, o la introducción de nuevas especies puede afectar al equilibrio.

Al menos en teoría claro, siempre puede haber factores imprevistos que no controlas pero como herramienta que permita simular ciertos entornos de forma simplista puede ser interesante.

Por ponerte el ejemplo "típico" a veces veo a personas seguramente de muy buen corazón y demás pensar que "los depredadores no deberían de matar a las pobres presas"

Les pones una simulación simple donde cambias el comportamiento del depredador de carnivoro a vegetariano, y solo tienes que sentarte a ver como en poco tiempo todos se mueren de hambre.


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: AlbertoBSD en 9 Noviembre 2016, 00:26 am
Obvio se trata de simulaciones, y como les comente la mas basica es el juego de la vida, aunque no simula realmente celulas, parece como si estuviera vivo:

Ponder aqui el codigo para el  juego sobre un camvas de 100 x 100

Screenshots
(http://imgs.mx/i/OE)


(http://imgs.mx/i/O_)


(http://imgs.mx/i/Om)

Demo Online:

http://imgs.mx/vida.html (http://imgs.mx/vida.html)


Código
  1. <canvas id="world">
  2. </canvas>
  3. <script>
  4. var world = document.getElementById("world");
  5. var max = 100;
  6. var w = [];
  7. var mult_size = 2;
  8. var i = 0,j;
  9. while(i < max ) {
  10. j = 0;
  11. w[i] = [];
  12. while(j < max) {
  13. if(Math.random() < 0.1) {
  14. w[i][j] = 1; //1 alive
  15. }
  16. else {
  17. w[i][j] = 0; //1 alive
  18. }
  19. j++;
  20. }
  21. i++;
  22. }
  23. world.width = max*mult_size;
  24. world.height = max*mult_size;
  25. //drawLive();
  26. setInterval(drawLive, 1000);
  27. function drawLive() {
  28. var i = 0,j;
  29. var world = document.getElementById("world");
  30. var ctx = world.getContext("2d");
  31. while(i < max ) {
  32. j = 0;
  33. while(j < max) {
  34. if(w[i][j] == 0) {
  35. ctx.fillStyle = "#000000"; //Black
  36. ctx.fillRect(j*mult_size,i*mult_size,mult_size,mult_size);
  37. }
  38. else {
  39. ctx.fillStyle = "#FFFFFF"; //White
  40. ctx.fillRect(j*mult_size,i*mult_size,mult_size,mult_size);
  41. }
  42. j++;
  43. }
  44. i++;
  45. }
  46. //Calcular next turno
  47. var v = 0;
  48. i = 0;
  49. while(i < max ) {
  50. j = 0;
  51. while(j < max) {
  52. v = vecinas(j,i);
  53. if(w[i][j] == 0) { //Celula muerta
  54. if(v == 3) {
  55. w[i][j] = 1; //Si la celula esta muerta y tiene 3 vecinas vivas, entonces la celula nace
  56. }
  57. }
  58. if(w[i][j] == 1) { //Celula viva
  59. if(v == 2 || v == 3) {
  60. w[i][j] = 1; //Si la celula tiene solo una vecina muerte o tambien si tiene 4 o mas
  61. }
  62. else {
  63. w[i][j] = 0;
  64. }
  65. }
  66. j++;
  67. }
  68. i++;
  69. }
  70.  
  71. }
  72. function vecinas(x,y) {
  73. var x_menos_1 = x - 1;
  74. var x_mas_1 = x + 1;
  75. var y_menos_1 = y - 1;
  76. var y_mas_1 = y + 1;
  77. if(x_menos_1 == -1) {
  78. x_menos_1 = max - 1;
  79. }
  80. if(x_mas_1 == max) {
  81. x_mas_1 = 0;
  82. }
  83. if(y_menos_1 == -1) {
  84. y_menos_1 = max -1;
  85. }
  86. if(y_mas_1 == max) {
  87. y_mas_1 = 0 ;
  88. }
  89. var contador = w[y_menos_1][x_menos_1] + w[y_menos_1][x] + w[y_menos_1][x_mas_1];
  90. contador+= w[y][x_menos_1]  + w[y][x_mas_1];
  91. contador+= w[y_mas_1][x_menos_1] + w[y_mas_1][x] + w[y_mas_1][x_mas_1];
  92. return contador;
  93. }
  94. </script>
  95.  



Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: ThinkByYourself en 9 Noviembre 2016, 11:42 am
Veo que ya tienes una web y todo.

Se podría usar la taxonomía científica como modelo de datos para distinguir entre cada especie, tanto animal como vegetal.

Si lo quieres hacer en MySQL aquí hay una web muy guay que te deja diseñar bases de datos online y gratis:

https://ondras.zarovi.cz/sql/demo/

Si es puro C++, una clase que esté por encima de Planta y de Animal.

La taxonomía científica oficial divide a los seres vivos, de más concreto a más general, en:

1. ESPECIE
2. GÉNERO
3. FAMILIA
4. ORDEN
5. CLASE
6. FILO
7. REINO

A partir de ahí, las distinciones que hagas puede ser de cualquier cosa. Antaño, el cerdo era un animal impuro porque tiene la pezuña hendida pero no rumia, por ponerte un ejemplo, y en la biblia se le ataca porque "ni aquí, ni allí" xD y en el Corán arremeten contra el pobre cerdo también... xD con lo que me gusta a mí el jamón.

La nomenclatura científica: {Género} {especie} (mayúscula y minúscula)
http://www.escuelapedia.com/nomenclatura-cientifica/?print=print

En cuanto a la obtención de los datos

Fuentes externas... ¿hay?

Recuerdo en la escuela, de mozal, utilizábamos la magnífica enciclopedia Encarta, que ahora acabo de ver que es de Microsoft, y que un profesor nos hacía manuscribir artículos varios de animales y plantas, y ahí salía mucha info (en Wikipedia siempre más). Con eso se podría avanzar mucho más rápido... Me pregunto si no habrá otros proyectos que tengan esta información más o menos, y la compartan sin más.

SciHub, esto era una web que se hizo un poco con el fin de aliviar todo esto, más de artículos académicos, pero por ahí va la cosa.

Alternativas

Cuando no hay unos datos base que sean útiles:

· Peticiones automatizadas con cURL (primero para conseguir links, luego para el scratch).
· Crawlers en Python (webb, spider.py, http-crawler, scrapy) o en otros lenguajes.
· Navegadores virtuales en PhantomJS/CasperJS, Selenium, etc. Estos para ocasiones en las que hay que jugar con el DOM para extraer la información, que no se extrae directamente de peticiones HTTP, sino que se tienen que procesar contenidos desde el navegador antes.

Quizá se puede hacer algo científico serio.
El problema es que los científicos no siempre saben C++!!






Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Poyoncio en 19 Noviembre 2016, 15:41 pm
Como quedo esto?


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: RevolucionVegana en 19 Noviembre 2016, 16:08 pm
Como quedo esto?

Estoy aprendiendo C++ con el libro de Deitel&Deitel, cuando tenga ya algo de práctica empezaré ya a tocar código de Codegod, supongo que en unas 2 semanas ya habré tocado suficiente código como para poder empezar por lo básico e ir avanzando, pero vamos que el proyecto aunque no este posteando nada sigue totalmente enserio pero tengo que aprender primero jeje y no respondo mucho a los mensajes para que cuando necesite responder no tenga que hacer doble post y pueda subirse mi post en los primeros para que os notifique y lo vean más usuarios!!

Un saludo a todos :)!


Título: Re: Estaría interesante crear un programita con el algoritmo de cada especie animal
Publicado por: Orubatosu en 19 Noviembre 2016, 19:59 pm
Uf... lo básico para algunas cosas, pero lo necesario para almacenar datos, es un poco mas allá de nivel básico.

Lo suyo sería usar clases ya que en animales y plantas la herencia podría solucionar muchos problemas y simplificar código, pero la POO en C++ no es precisamente el principio