rutaTuristicaAleatoria
, rutaTuristicaBusquedaMemoriaLargoPlazo
, rutaTuristicaBusquedaTabu
, rutaTuristicaBVNS
, rutaTuristicaGRASPPonderado
, rutaTuristicaGreedyPonderado
, rutaTuristicaMultiArranque
, rutaTuristicaRecocidoSimulado
public abstract class problemaRutasTuristicas
extends java.lang.Object
Modifier and Type | Field | Description |
---|---|---|
protected java.util.ArrayList<java.awt.Point> |
listaTabu |
|
private int |
LRC |
Número de candidatos para realizar la elección del próximo lugar
|
private puntosTuristicos |
lugaresTuristicosDisponibles_ |
Atributo de tipo puntosTuristicos que almacena todos los lugares disponibles,
matriz de distancias y matriz de tiempos
|
protected java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> |
lugaresVisitados |
Atributo utilizado para la utilización del problema, itinerario de visita
de todos los dias permitidos
|
private int |
numDiasEstancia_ |
Número de Días de la estancia
|
private int |
numHorasDiarias_ |
Número de Horas diarias máximo para la realización de rutas
|
protected java.util.ArrayList<java.lang.Integer> |
solucionDiaria |
Atributo utilizado para la resolución del problema, solución diaria encontrada
|
Constructor | Description |
---|---|
problemaRutasTuristicas(java.lang.String ficheroLugares,
java.lang.String ficheroMatrizDistancias,
java.lang.String ficheroMatrizTiempos,
int numDias,
int numHorasDia) |
Constructor de la Clase problemaRutasTuristicas
|
Modifier and Type | Method | Description |
---|---|---|
java.util.ArrayList<java.lang.Integer> |
busquedaLocal1a1(java.util.ArrayList<java.lang.Integer> visitaDiaria,
java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> yaVisitados) |
Método Búsqueda local que busca una mejora de la solución eliminando dos elementos
e introduciendo uno entre los vecinos que mejore el valor pero que ni supere el tiempo
limite diario ni se diferencie en más de 30min
|
java.util.ArrayList<java.lang.Integer> |
busquedaLocal2a1(java.util.ArrayList<java.lang.Integer> visitaDiaria,
java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> yaVisitados) |
Método Búsqueda local que busca una mejora de la solución eliminando dos elementos
e introduciendo uno entre los vecinos que mejore el valor pero que ni supere el tiempo
limite diario ni se diferencie en más de 30min
|
java.util.ArrayList<java.lang.Integer> |
busquedaLocalCambioVisita(java.util.ArrayList<java.lang.Integer> visitaDiaria) |
Método de agitación basado en buscar una mejora cambiando el orden de los lugares que se visitan.
|
float |
calcularKilometrosEmpleado(java.util.ArrayList<java.lang.Integer> dia) |
Método que calcula los kilómetros empleados para visitar el conjunto de lugares un Array de Sitios
|
int |
calcularTiempoEmpleado(java.util.ArrayList<java.lang.Integer> dia) |
Método que calcula el tiempo empleado en visitar un Array de Sitios.
|
float |
calcularValorDiario(java.util.ArrayList<java.lang.Integer> dia) |
Método que calcula el valor de visitar un Array de Sitios.
|
float |
calcularValorTotal(java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> itinerario) |
|
boolean |
contieneListaTabu(int lugar) |
|
java.util.ArrayList<java.awt.Point> |
getListaTabu() |
Método que devuelve una lista tabu de elementos que no pueden visitarse.
|
puntosTuristicos |
getLugaresTuristicosDisponibles() |
Método que devuelve la información de todos los Lugares existentes para la resolución de problemas
|
java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> |
getLugaresVisitados() |
Método utilizado en la resolución del problema que devuelve la solución del problema
|
int |
getNumDiasEstancia() |
Método que devuelve el numero de días del itinerario de viaje
|
int |
getNumHorasDiarias() |
Método que devuelve el número de horas diarias del itinerario de viaje
|
java.util.ArrayList<java.lang.Integer> |
getSolucionDiaria() |
Método utilizado en la resolución del problema que devuelve la solución Diaria que se este calculando
|
void |
mostrarConsultaItinerarioDia(java.util.ArrayList<java.lang.Integer> itinerario) |
Muestra el Itinerario de viaje de los lugares introducidos por parámetro
Incluye el tiempo utilizado, kilometros y valor acumulado
|
void |
mostrarItinerarioViaje() |
Muestra todo el itinerario del viaje, resultado de la resolución del problema
y el valor total de la solución.
|
abstract void |
resolverProblema(boolean MultiArranque) |
Método abstracto para la resolución de problemas
Se implementarán:
Algoritmo Aleatorio,
Algoritmo Greedy,
Algoritmo GRASP,
Busqueda Local,
Multiarranque,
Recocido Simulado,
Busqueda Tabú y
BVNS
|
void |
solucionAleatoria() |
Método que realiza un algoritmo aleatorio para el dia actual.
|
void |
solucionGRASP() |
Método que realiza un algoritmo GRASP para el dia actual.
|
void |
solucionGRASPParcial() |
Método utilizado en solucionGRASP utilizado para añadir aleatoriamente elementos en el día actual
siempre que se cumplan las restricciones.
|
void |
solucionParcialAleatoria() |
Método utilizado en solucionAleatoria utilizado para añadir aleatoriamente elementos en el día actual
siempre que se cumplan las restricciones.
|
boolean |
yaVisitado(int lugar,
java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> diasAnteriores,
java.util.ArrayList<java.lang.Integer> diaActual) |
Método que evalua si un lugar ha sido visitado los días anteriores o el actual.
|
private final int LRC
private int numDiasEstancia_
private int numHorasDiarias_
private puntosTuristicos lugaresTuristicosDisponibles_
protected java.util.ArrayList<java.lang.Integer> solucionDiaria
protected java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> lugaresVisitados
protected java.util.ArrayList<java.awt.Point> listaTabu
public problemaRutasTuristicas(java.lang.String ficheroLugares, java.lang.String ficheroMatrizDistancias, java.lang.String ficheroMatrizTiempos, int numDias, int numHorasDia) throws java.io.FileNotFoundException, java.io.IOException
ficheroLugares
- Fichero que especifica los Lugares permitidos para su visitaficheroMatrizDistancias
- Fichero que especifica la Matriz de Distancias entre todos los Lugares, BidireccionalficheroMatrizTiempos
- Fichero que especifica la Matriz de Tiempos, cuanto se tarda en llegar de un sitio a otronumDias
- Número de dias del itinerario de viajenumHorasDia
- Número de horas permitidas de viaje diariasjava.io.FileNotFoundException
- Si los ficheros no han sido especificadosjava.io.IOException
- Error entrada salidapublic abstract void resolverProblema(boolean MultiArranque)
public java.util.ArrayList<java.lang.Integer> busquedaLocalCambioVisita(java.util.ArrayList<java.lang.Integer> visitaDiaria)
visitaDiaria
- ArrayList de lugares a visitarpublic java.util.ArrayList<java.lang.Integer> busquedaLocal2a1(java.util.ArrayList<java.lang.Integer> visitaDiaria, java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> yaVisitados)
visitaDiaria
- Visita realizada los días anterioresyaVisitados
- Visitas realizadas ya durante el presente díapublic java.util.ArrayList<java.lang.Integer> busquedaLocal1a1(java.util.ArrayList<java.lang.Integer> visitaDiaria, java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> yaVisitados)
visitaDiaria
- Visita realizada los días anterioresyaVisitados
- Visitas realizadas ya durante el presente díapublic float calcularValorDiario(java.util.ArrayList<java.lang.Integer> dia)
dia
- Array de Lugares Visitadospublic float calcularValorTotal(java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> itinerario)
public int calcularTiempoEmpleado(java.util.ArrayList<java.lang.Integer> dia)
dia
- Array de Lugares Visitadospublic float calcularKilometrosEmpleado(java.util.ArrayList<java.lang.Integer> dia)
dia
- Array de Lugares Visitadospublic boolean yaVisitado(int lugar, java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> diasAnteriores, java.util.ArrayList<java.lang.Integer> diaActual)
lugar
- Lugar a evaluardiasAnteriores
- Array que contiene las visitas a lugares de dias anterioresdiaActual
- Array que contiene las visitas que ya se han hecho el día actualpublic void solucionAleatoria()
public void solucionParcialAleatoria()
public void solucionGRASP()
public void solucionGRASPParcial()
public void mostrarItinerarioViaje()
public void mostrarConsultaItinerarioDia(java.util.ArrayList<java.lang.Integer> itinerario)
itinerario
- Lugares del itinerariopublic boolean contieneListaTabu(int lugar)
public int getNumDiasEstancia()
public int getNumHorasDiarias()
public puntosTuristicos getLugaresTuristicosDisponibles()
public java.util.ArrayList<java.lang.Integer> getSolucionDiaria()
public java.util.ArrayList<java.util.ArrayList<java.lang.Integer>> getLugaresVisitados()
public java.util.ArrayList<java.awt.Point> getListaTabu()