4.2.2 Realizacja programowa
Sieć tworzona jest za pomocą klasy NetworkBuilder, z wykorzystaniem węzłów (Node) i łuków (Arc) zdefiniowanych w JaCoP.constraints.netflow. Na potrzeby zadania utworzono dodatkową klasę MapBuilder, której zadaniem jest wygenerowanie listy obiektów klasy NodeMap, które przechowują wszystkie informacje na temat węzła: id, położenie, balans, lista sąsiadów, z uwzględnieniem kierunków. Pola obiektów NodeMap są „czysto" liczbowe, tzn. nie są powiązane ze zmiennymi używanymi w JaCoPie. Klasa OptimizationProblemModel dostarcza do Solvera wszystkie parametry modelu. Dla lepszego zrozumienia załączono fragment diagramu UML:
9 NodeMap | ||
O int | ||
O cost int | ||
O balance int | ||
0 position NodePosition | ||
0 neighbours :r, Direction> -7K- | ||
© OptimizationProblemModel | ||
Orows |
int | |
O MapBuilder |
O cols |
int |
O x int |
O balance |
List<lnteger> |
O, int |
O cost |
List< lnteger> |
O mapNodes NodeMap> |
O windDirection |
Direction |
O balance List<lnteger> |
O sailingCost |
Vlap<SailingPoint lnteger> |
O cost List<lnteger> |
O directionCost |
Map< Direction, lnteger> |
7? |
O solutionCost |
int |
\ |
O solutionRoute |
_Set<lnteger> | |
\ r \ i | ||
©Optimiza |
ionProblemSolver | |
O model |
OptimizationProblemModel | |
0 solutionCost |
lntVar | |
O solutionRoute |
Set<lnteger> | |
10