Estaría interesante crear un programita con el algoritmo de cada especie animal

Iniciado por RevolucionVegana, 5 Noviembre 2016, 07:51 AM

0 Miembros y 1 Visitante están viendo este tema.

FJDA

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.


Orubatosu

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.
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

AlbertoBSD

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








Demo Online:

http://imgs.mx/vida.html


Código (javascript) [Seleccionar]

<canvas id="world">
</canvas>
<script>
var world = document.getElementById("world");
var max = 100;
var w = [];
var mult_size = 2;
var i = 0,j;
while(i < max ) {
j = 0;
w[i] = [];
while(j < max) {
if(Math.random() < 0.1) {
w[i][j] = 1; //1 alive
}
else {
w[i][j] = 0; //1 alive
}
j++;
}
i++;
}
world.width = max*mult_size;
world.height = max*mult_size;
//drawLive();
setInterval(drawLive, 1000);
function drawLive() {
var i = 0,j;
var world = document.getElementById("world");
var ctx = world.getContext("2d");
while(i < max ) {
j = 0;
while(j < max) {
if(w[i][j] == 0) {
ctx.fillStyle = "#000000"; //Black
ctx.fillRect(j*mult_size,i*mult_size,mult_size,mult_size);
}
else {
ctx.fillStyle = "#FFFFFF"; //White
ctx.fillRect(j*mult_size,i*mult_size,mult_size,mult_size);
}
j++;
}
i++;
}
//Calcular next turno
var v = 0;
i = 0;
while(i < max ) {
j = 0;
while(j < max) {
v = vecinas(j,i);
if(w[i][j] == 0) { //Celula muerta
if(v == 3) {
w[i][j] = 1; //Si la celula esta muerta y tiene 3 vecinas vivas, entonces la celula nace
}
}
if(w[i][j] == 1) { //Celula viva
if(v == 2 || v == 3) {
w[i][j] = 1; //Si la celula tiene solo una vecina muerte o tambien si tiene 4 o mas
}
else {
w[i][j] = 0;
}
}
j++;
}
i++;
}

}
function vecinas(x,y) {
var x_menos_1 = x - 1;
var x_mas_1 = x + 1;
var y_menos_1 = y - 1;
var y_mas_1 = y + 1;
if(x_menos_1 == -1) {
x_menos_1 = max - 1;
}
if(x_mas_1 == max) {
x_mas_1 = 0;
}
if(y_menos_1 == -1) {
y_menos_1 = max -1;
}
if(y_mas_1 == max) {
y_mas_1 = 0 ;
}
var contador = w[y_menos_1][x_menos_1] + w[y_menos_1][x] + w[y_menos_1][x_mas_1];
contador+= w[y][x_menos_1]  + w[y][x_mas_1];
contador+= w[y_mas_1][x_menos_1] + w[y_mas_1][x] + w[y_mas_1][x_mas_1];
return contador;
}
</script>


Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

ThinkByYourself

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++!!




No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.


RevolucionVegana

Cita de: Poyoncio en 19 Noviembre 2016, 15:41 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 :)!
HAS DICHO ALGO NENAAAAAA?!

Orubatosu

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
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998