pl.edu.pw.elka.pszt.inteligraph.model
Class Model

java.lang.Object
  extended by pl.edu.pw.elka.pszt.inteligraph.model.Model

public class Model
extends java.lang.Object


Field Summary
private  SubjectCollection bestSubjectCollection
          Najlepsze uzyskane rozwiązanie
private  EventsBlockingQueue blockingQueue
           
private  java.lang.Thread calculationThread
          Wątek przeprowadzający obliczenia
private  Population currentPopulation
          Aktualna populacja
private  double edgeWeight
          Waga krawędzi.
private  int evolutionSteps
          Ilość iteracji wykonana przez algorytm ewolucyjny;
private  edu.uci.ics.jung.graph.Graph<VertexName,java.lang.String> graph
          Logiczny model grafu
private  java.lang.Boolean stopThread
           
 
Constructor Summary
Model(EventsBlockingQueue blockingQueue)
           
 
Method Summary
 void buildGraph(java.io.File xmlFile)
          Buduje graf na podstawie informacji z pliku XML
private  int calculateCrossing(java.util.Map<VertexName,java.awt.Point> map, java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> vertexPairList)
           
private  java.lang.Integer calculateQuality(SubjectCollection solution)
          Oblicza jakość rozwiązania pod wzglądem spełnienia kryteriów
 void calculateVerticesPositions(java.lang.Integer mi, java.lang.Integer lambda)
           
 void calculateVerticesPositions(java.lang.Integer mi, java.lang.Integer lambda, java.lang.Integer evolutionStepsToDo)
          Funkcja realizująca strategię ewolucyjną mi+labda.
private  boolean checkPoints(edu.uci.ics.jung.graph.util.Pair<VertexName> p1, edu.uci.ics.jung.graph.util.Pair<VertexName> p2)
          Sprawdza czy dwie pary punktów są takie same.
 void clearbestSubjectCollection()
           
private  double edgeDistanseToVertex(java.util.Map<VertexName,java.awt.Point> map, java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> vertexPairList, java.util.Collection<VertexName> vertexCollection, int distance)
           
private  int edgeLengthVariation(java.util.Map<VertexName,java.awt.Point> map, java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> vertexPairList, double avg)
           
private  Population generateFirstPopulation(java.util.Collection<VertexName> verticies, java.lang.Integer mi)
           
 Arrangement getBestArrangement()
           
 double getEdgeWeight()
           
 int getEvolutionSteps()
           
 edu.uci.ics.jung.graph.Graph<VertexName,java.lang.String> getGraph()
           
private  java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> getGraphEdges()
          Na podstawie nazwy krawędzi ustala i tworzy listę par wierzchołków krawędzi.
 int getGraphQuality()
           
private  void pickBestSubjectCollection()
          Wybiera najlepsze rozwiązanie z aktualnej populacji
 void setEdgeWeight(double edgeWeight)
           
 void stopCalculations()
          Przerywa obliczenia
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

blockingQueue

private EventsBlockingQueue blockingQueue

evolutionSteps

private int evolutionSteps
Ilość iteracji wykonana przez algorytm ewolucyjny;


edgeWeight

private double edgeWeight
Waga krawędzi.


graph

private edu.uci.ics.jung.graph.Graph<VertexName,java.lang.String> graph
Logiczny model grafu


currentPopulation

private Population currentPopulation
Aktualna populacja


bestSubjectCollection

private SubjectCollection bestSubjectCollection
Najlepsze uzyskane rozwiązanie


calculationThread

private java.lang.Thread calculationThread
Wątek przeprowadzający obliczenia


stopThread

private volatile java.lang.Boolean stopThread
Constructor Detail

Model

public Model(EventsBlockingQueue blockingQueue)
Method Detail

getGraph

public edu.uci.ics.jung.graph.Graph<VertexName,java.lang.String> getGraph()
Returns:
Graf

getEvolutionSteps

public int getEvolutionSteps()
Returns:
liczba przebytych kroków algorytmu

getGraphQuality

public int getGraphQuality()
Returns:
jakość aktualnego rozwiązania grafu

buildGraph

public void buildGraph(java.io.File xmlFile)
Buduje graf na podstawie informacji z pliku XML

Parameters:
xmlFile - plik xml z definicją grafu

getBestArrangement

public Arrangement getBestArrangement()
                               throws java.lang.Exception
Returns:
Najlepsze uzyskane rozmieszczenie
Throws:
java.lang.Exception

calculateVerticesPositions

public void calculateVerticesPositions(java.lang.Integer mi,
                                       java.lang.Integer lambda,
                                       java.lang.Integer evolutionStepsToDo)
Funkcja realizująca strategię ewolucyjną mi+labda.

Parameters:
mi -
lambda -
iterations - Liczba iteracji, po której algorytm ma się zakończyć

stopCalculations

public void stopCalculations()
Przerywa obliczenia


pickBestSubjectCollection

private void pickBestSubjectCollection()
Wybiera najlepsze rozwiązanie z aktualnej populacji


calculateQuality

private java.lang.Integer calculateQuality(SubjectCollection solution)
Oblicza jakość rozwiązania pod wzglądem spełnienia kryteriów

Parameters:
solution -
Returns:
jakośc rozwiązania

edgeDistanseToVertex

private double edgeDistanseToVertex(java.util.Map<VertexName,java.awt.Point> map,
                                    java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> vertexPairList,
                                    java.util.Collection<VertexName> vertexCollection,
                                    int distance)

edgeLengthVariation

private int edgeLengthVariation(java.util.Map<VertexName,java.awt.Point> map,
                                java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> vertexPairList,
                                double avg)

calculateCrossing

private int calculateCrossing(java.util.Map<VertexName,java.awt.Point> map,
                              java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> vertexPairList)

checkPoints

private boolean checkPoints(edu.uci.ics.jung.graph.util.Pair<VertexName> p1,
                            edu.uci.ics.jung.graph.util.Pair<VertexName> p2)
Sprawdza czy dwie pary punktów są takie same.

Parameters:
p1 -
p2 -
Returns:
TURE jak są takie same

generateFirstPopulation

private Population generateFirstPopulation(java.util.Collection<VertexName> verticies,
                                           java.lang.Integer mi)
Parameters:
mi -
Returns:
Pierwsza populacja

calculateVerticesPositions

public void calculateVerticesPositions(java.lang.Integer mi,
                                       java.lang.Integer lambda)

getGraphEdges

private java.util.List<edu.uci.ics.jung.graph.util.Pair<VertexName>> getGraphEdges()
Na podstawie nazwy krawędzi ustala i tworzy listę par wierzchołków krawędzi.

Returns:
lista par wierzchołków

clearbestSubjectCollection

public void clearbestSubjectCollection()

setEdgeWeight

public void setEdgeWeight(double edgeWeight)

getEdgeWeight

public double getEdgeWeight()