alguien me puede ayudar a resolver el algoritmo colonia de hormigas o pasar este codigo java a php
el codigo java esta en el siguiente link
http://code.google.com/p/in-silico/source/browse/trunk/Proyectos/src/Colonia/Hormigas.java?r=137
| |||
convertir codigo java a php alguien me puede ayudar a resolver el algoritmo colonia de hormigas o pasar este codigo java a php el codigo java esta en el siguiente link http://code.google.com/p/in-silico/source/browse/trunk/Proyectos/src/Colonia/Hormigas.java?r=137 |
| |||
Respuesta: convertir codigo java a php Pues hombre tanto como traducirtelo no... pero te puedo explicar conceptualmente que hace y que de lo que estan usando te toca hacerlo en php por que es clase propia de java. Primero explicarte que hace el algoritmo. El algoritmo de la colonia de hormigas es una tecnica de optimizacion, tal cual como los algoriitmos voraces y dinamicos, este podria ser un algo dinamico. La idea del algoritmo es trabajar como una colonia de hormigas, ellas cuando caminan dejan un rastro de feromonas, si le fue bien, vuelve usar el mismo camino y el rastro de feromonas se vuelve mas fuerte, si no simplemente usa otro camino. Al final este algoritmo hace eso, plantea una solucion, si le va bien la vuelve a usar, si no prueba otra, al final la solucion con mas feromonas (la mas utilizada) sera la mejor. El algoritmo es parecido al del agente viajero, debes pensarlo como un conjunto de nodos, una entrada y una salida y un monton de hormigas viajando de un lado a otro encontrando el mejor camino. El algoritmo base es algo sencillo, tienes digamos unas hormigas y unos caminos. La primera hhormiga va del punto a al b por un camino aleatorio. Luego la siguen otras hormigas. Luego los caminos mas cortos siguen siendo usados fortalenciendo un rastro de feromonas. Los caminos que son mas largos van perdiendo su rastro de feromonas por que son menos utilizados. Y al final el camino con mas ferommonas sera el mejor y este tendra mejor probabilidad acorde al numero de iteraciones del algoritmo. Te explico las clases que usa y por que es una mala idea el pensar en una traduccion tal cual. package Colonia; import java.awt.Color; import java.awt.Graphics; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; Primero va la declaracion del paquete al que pertenece la clase (No hace falta en php) lo correspondiente a awt son librerias graficas (hay si te la vez negra depediendo del uso que se le den puedes usar GD en php o buscar algo similar, ya tienes serios problemas aqui ya que el algortimo conforme va construyendo la ruta va actualizando el grafico y la logica de esta clase grapiish es como un pintor sobre un canvas, funcionalidad que tendrias que implementar tu). Las de Java.io, son las clases de lectura de archivos, por alli no tienes problema ArrayList es para declarar listas, nada que no puedas emular con arrays de php Scanner Si te la vas a ver mas complicada, es una clase que separa una cadena en tokens parseando mediante una gramatica. Sin embargo php tiene su propias herramientas para parsear basando en expresiones regulares. Si no sabes que es un parser, es algo que evalua una cadena de entrada para encontrar coincidencias con una secuencia predeterminada. Yo te diria que no pienses en copiarlo, mejor haste esta lista de tareas. Encuentra el pseudocodigo del algoritmo. (Bien sea en texto o como tareas base). Define la entrada y la salida. Si tu entrada no es un archivo que describa los pesos de unas aristas en un camino mal vas, por que esta es la entrada del algoritmo que nos das. La salida de este algoritmo es un grafico sobre el cual vas pintando el camino, eso se te puede complicar un poco en php, yo te diria que mejor devolvieras un arreglo que te corresponndiera a el camino de aristas que eligio al finnal el algoritmo. Intente explicarte un poco como va eso. Espero que desistas de la idea de traducir y intentes hacerlo por ti mismo. Por que creo que te vas a complicar muchisimo mas si no lo comprendes al principio. Tu mejor aliado ahora mismo no es un lenguaje, seria una hoja de papel y un lapiz, has el pseudo alli, entiendelo y luego si lo programas. |
Etiquetas: |