diff options
author | InigoGutierrez <inigogf.95@gmail.com> | 2022-06-29 23:23:09 +0200 |
---|---|---|
committer | InigoGutierrez <inigogf.95@gmail.com> | 2022-06-29 23:23:09 +0200 |
commit | 6724aeb3ba98c1b9f042344734c2d683e79dfc64 (patch) | |
tree | 34dd64d6d4176edf5e564f860c3a34a9cc128262 /doc/diagrams | |
parent | c25a5d482937fc861e9d1cfc1ff36e479fcb2fb4 (diff) | |
download | imago-6724aeb3ba98c1b9f042344734c2d683e79dfc64.tar.gz imago-6724aeb3ba98c1b9f042344734c2d683e79dfc64.zip |
Made full class diagram.
Diffstat (limited to 'doc/diagrams')
-rw-r--r-- | doc/diagrams/ASTNode.pumlc | 12 | ||||
-rw-r--r-- | doc/diagrams/ConvNeuralNetwork.pumlc | 7 | ||||
-rw-r--r-- | doc/diagrams/DecisionAlgorithm.pumlc | 5 | ||||
-rw-r--r-- | doc/diagrams/DenseNeuralNetwork.pumlc | 7 | ||||
-rw-r--r-- | doc/diagrams/GameBoard.pumlc | 37 | ||||
-rw-r--r-- | doc/diagrams/GameEngine.pumlc | 18 | ||||
-rw-r--r-- | doc/diagrams/GameMove.pumlc | 29 | ||||
-rw-r--r-- | doc/diagrams/GameState.pumlc | 18 | ||||
-rw-r--r-- | doc/diagrams/ImagoIO.pumlc | 10 | ||||
-rw-r--r-- | doc/diagrams/Keras.pumlc | 3 | ||||
-rw-r--r-- | doc/diagrams/MCTS.pumlc | 11 | ||||
-rw-r--r-- | doc/diagrams/MCTSNode.pumlc | 18 | ||||
-rw-r--r-- | doc/diagrams/NeuralNetwork.pumlc | 9 | ||||
-rw-r--r-- | doc/diagrams/Property.pumlc | 10 | ||||
-rw-r--r-- | doc/diagrams/SGF.pumlc | 5 | ||||
-rw-r--r-- | doc/diagrams/analysisClasses.puml | 2 | ||||
-rw-r--r-- | doc/diagrams/engineModule.puml | 32 | ||||
-rw-r--r-- | doc/diagrams/fullClasses.puml | 16 | ||||
-rw-r--r-- | doc/diagrams/gameModule.puml | 18 | ||||
-rw-r--r-- | doc/diagrams/gtpEngine.puml | 36 | ||||
-rw-r--r-- | doc/diagrams/skinparams.puml | 7 | ||||
-rw-r--r-- | doc/diagrams/trainingModule.puml | 20 |
22 files changed, 243 insertions, 87 deletions
diff --git a/doc/diagrams/ASTNode.pumlc b/doc/diagrams/ASTNode.pumlc index 05c13ac..945b24d 100644 --- a/doc/diagrams/ASTNode.pumlc +++ b/doc/diagrams/ASTNode.pumlc @@ -1,10 +1,14 @@ @startuml class ASTNode { - ASTNode[] children - Property properties - void addtoSequence() - GameTree toGameTree() + ASTNode[] children + Property[] props + + addtoSequence() + toGameTree() + toGameMoveTree(previousMove) + hasProperty(propertyName) + getPropertyValue(propertyName) } @enduml diff --git a/doc/diagrams/ConvNeuralNetwork.pumlc b/doc/diagrams/ConvNeuralNetwork.pumlc new file mode 100644 index 0000000..2254e5d --- /dev/null +++ b/doc/diagrams/ConvNeuralNetwork.pumlc @@ -0,0 +1,7 @@ +@startuml + +class ConvNeuralNetwork { + +} + +@enduml diff --git a/doc/diagrams/DecisionAlgorithm.pumlc b/doc/diagrams/DecisionAlgorithm.pumlc index aada4f0..c3e9e8a 100644 --- a/doc/diagrams/DecisionAlgorithm.pumlc +++ b/doc/diagrams/DecisionAlgorithm.pumlc @@ -1,8 +1,9 @@ @startuml interface DecisionAlgorithm { - {abstract} forceNextMove(self, coords) - {abstract} pickMove(self) + {abstract} forceNextMove(coords) + {abstract} pickMove() + {abstract} clearBoard() } @enduml diff --git a/doc/diagrams/DenseNeuralNetwork.pumlc b/doc/diagrams/DenseNeuralNetwork.pumlc new file mode 100644 index 0000000..a9e7d1c --- /dev/null +++ b/doc/diagrams/DenseNeuralNetwork.pumlc @@ -0,0 +1,7 @@ +@startuml + +class DenseNeuralNetwork { + +} + +@enduml diff --git a/doc/diagrams/GameBoard.pumlc b/doc/diagrams/GameBoard.pumlc index 7a57b2d..ebeedd7 100644 --- a/doc/diagrams/GameBoard.pumlc +++ b/doc/diagrams/GameBoard.pumlc @@ -5,24 +5,25 @@ class GameBoard { int capturesBlack int capturesWhite - getBoard(self) - getBoardHeight(self) - getBoardWidth(self) - getDeepCopy(self) - getGroupLiberties(self, row, col) - getGroupLibertiesCount(self, row, col) - getGroupCells(self, row, col) - getGroupCellsCount(self, row, col) - moveAndCapture(self, row, col, player) - isMoveInBoardBounds(self, row, col) - isCellEmpty(self, row, col) - isCellEye(self, row, col) - isMoveSuicidal(self, row, col, player) - isMoveKoIllegal(self, row, col, player, prevBoards) - isPlayable(self, row, col, player, prevBoards) - score(self) - equals(self, otherBoard) - printBoard(self) + getBoard() + getBoardHeight() + getBoardWidth() + getDeepCopy() + getGroupLiberties(row, col) + getGroupLibertiesCount(row, col) + getGroupVertices(row, col) + getGroupVerticesCount(row, col) + moveAndCapture(row, col, player) + isMoveInBoardBounds(row, col) + isCellEmpty(row, col) + isCellEye(row, col) + isMoveSuicidal(row, col, player) + isMoveKoIllegal(row, col, player, prevBoards) + isPlayable(row, col, player, prevBoards) + isSensible(row, col, player, prevBoards) + score() + equals(otherBoard) + printBoard() } @enduml diff --git a/doc/diagrams/GameEngine.pumlc b/doc/diagrams/GameEngine.pumlc new file mode 100644 index 0000000..62b892e --- /dev/null +++ b/doc/diagrams/GameEngine.pumlc @@ -0,0 +1,18 @@ +@startuml + +class GameEngine { + int komi + GameState gameState + Enum daId + DecisionAlgorithm da + + setBoardsize(newSize) + clearBoard() + setKomi(komi) + setFixedHandicap(stones) + play(color, vertex) + genmove(color) + undo() +} + +@enduml diff --git a/doc/diagrams/GameMove.pumlc b/doc/diagrams/GameMove.pumlc index 0f75edd..a1d0d73 100644 --- a/doc/diagrams/GameMove.pumlc +++ b/doc/diagrams/GameMove.pumlc @@ -5,19 +5,24 @@ class GameMove { GameMove[] nextMoves GameMove previousMove boolean isPass - int[2] coords + int[] coords + Player playerWhoPassed - getRow(self) - getCol(self) - getPlayer(self) - getNextPlayer(self) - getGameLength(self) - getThisAndPrevBoards(self) - getPlayableVertices(self) - addMove(self, row, col) - addMoveForPlayer(self, row, col, player) - addPass(self) - printBoard(self) + getRow() + getCol() + getPlayer() + getNextPlayer() + getGameLength() + getThisAndPrevBoards() + getPlayableVertices() + getSensibleVertices() + addMove(row, col) + addMoveBcoords(coords) + addMoveForPlayer(row, col, player) + addPass() + addPassForPlayer() + getMainLineOfPlay() + printBoard() } @enduml diff --git a/doc/diagrams/GameState.pumlc b/doc/diagrams/GameState.pumlc index 38e1397..a913855 100644 --- a/doc/diagrams/GameState.pumlc +++ b/doc/diagrams/GameState.pumlc @@ -2,17 +2,17 @@ class GameState { int size - GameTree gameTree GameMove lastMove - 'GameData gameData - getCurrentPlayer(self) - getPlayerCode(self) - getBoard(self) - playMove(self, row, col) - playMoveForPlayer(self, row, col, player) - playPass(self) - undo(self) + getCurrentPlayer() + getPlayerCode() + getBoard() + clearBoard() + playMove(row, col) + playMoveForPlayer(row, col, player) + playPass() + playPassForPlayer(player) + undo() } @enduml diff --git a/doc/diagrams/ImagoIO.pumlc b/doc/diagrams/ImagoIO.pumlc new file mode 100644 index 0000000..848a173 --- /dev/null +++ b/doc/diagrams/ImagoIO.pumlc @@ -0,0 +1,10 @@ +@startuml + +class ImagoIO { + function[] commands_set + GameEngine gameEngine + + start() +} + +@enduml diff --git a/doc/diagrams/Keras.pumlc b/doc/diagrams/Keras.pumlc index daca149..1fa40b2 100644 --- a/doc/diagrams/Keras.pumlc +++ b/doc/diagrams/Keras.pumlc @@ -1,6 +1,9 @@ @startuml class Keras { + GameMove currentMove + NeuralNetwork neuralNetwork + forceNextMove(self, coords) pickMove(self) loadNetwork(self) diff --git a/doc/diagrams/MCTS.pumlc b/doc/diagrams/MCTS.pumlc new file mode 100644 index 0000000..ff00c62 --- /dev/null +++ b/doc/diagrams/MCTS.pumlc @@ -0,0 +1,11 @@ +@startuml + +class MCTS { + MCTSNode root + + forceNextMove(coords) + pickMove() + clearBoard() +} + +@enduml diff --git a/doc/diagrams/MCTSNode.pumlc b/doc/diagrams/MCTSNode.pumlc new file mode 100644 index 0000000..6ae8f35 --- /dev/null +++ b/doc/diagrams/MCTSNode.pumlc @@ -0,0 +1,18 @@ +@startuml + +class MCTSNode { + int visits + int score + GameMove move + MCTSNode parent + MCTSNode[] children + (int, int)[] unexploredVertices + + ucbForPlayer() + selection() + expansion() + expansionForCoords(coords) + simulation(nMatches, scoreDiffHeur) +} + +@enduml diff --git a/doc/diagrams/NeuralNetwork.pumlc b/doc/diagrams/NeuralNetwork.pumlc index 30f783e..f6c0e1c 100644 --- a/doc/diagrams/NeuralNetwork.pumlc +++ b/doc/diagrams/NeuralNetwork.pumlc @@ -1,8 +1,13 @@ @startuml class NeuralNetwork { - load(self, path) - save(self, path) + int boardSize + string path + + trainModel(games) + saveModel(modelPath) + pickMove(gameMove, player) + saveModelPlot(path) } @enduml diff --git a/doc/diagrams/Property.pumlc b/doc/diagrams/Property.pumlc new file mode 100644 index 0000000..bb06b47 --- /dev/null +++ b/doc/diagrams/Property.pumlc @@ -0,0 +1,10 @@ +@startuml + +class Property { + string name + object value + + addValue(value) +} + +@enduml diff --git a/doc/diagrams/SGF.pumlc b/doc/diagrams/SGF.pumlc index 2c30202..5ab248a 100644 --- a/doc/diagrams/SGF.pumlc +++ b/doc/diagrams/SGF.pumlc @@ -1,8 +1,7 @@ @startuml -class SGF { - GameTree loadGameTree(file) - void saveGameTree(file) +object SGF { + loadGameTree(file) } @enduml diff --git a/doc/diagrams/analysisClasses.puml b/doc/diagrams/analysisClasses.puml index 8273930..7685ea1 100644 --- a/doc/diagrams/analysisClasses.puml +++ b/doc/diagrams/analysisClasses.puml @@ -1,6 +1,6 @@ @startuml -'!include skinparams.puml +!include skinparams.puml () Player package "Game module" { diff --git a/doc/diagrams/engineModule.puml b/doc/diagrams/engineModule.puml new file mode 100644 index 0000000..c6f3a3e --- /dev/null +++ b/doc/diagrams/engineModule.puml @@ -0,0 +1,32 @@ +@startuml + +!include skinparams.puml + +package "Engine module" { + + !include ImagoIO.pumlc + !include GameEngine.pumlc + !include DecisionAlgorithm.pumlc + !include MCTS.pumlc + !include MCTSNode.pumlc + !include Keras.pumlc + !include NeuralNetwork.pumlc + !include DenseNeuralNetwork.pumlc + !include ConvNeuralNetwork.pumlc + + ImagoIO ..> GameEngine + GameEngine ..> DecisionAlgorithm + + DecisionAlgorithm <|.. MCTS + MCTSNode <. MCTS + MCTSNode -> MCTSNode + MCTSNode o--> MCTSNode + + DecisionAlgorithm <|.. Keras + Keras ..> NeuralNetwork + NeuralNetwork <|-- DenseNeuralNetwork + NeuralNetwork <|-- ConvNeuralNetwork + +} + +@enduml diff --git a/doc/diagrams/fullClasses.puml b/doc/diagrams/fullClasses.puml new file mode 100644 index 0000000..d7fe4d8 --- /dev/null +++ b/doc/diagrams/fullClasses.puml @@ -0,0 +1,16 @@ +@startuml + +!include skinparams.puml + +!include gameModule.puml +!include engineModule.puml +!include trainingModule.puml + +GameEngine --> GameState + +MCTSNode --> GameMove +Keras --> GameMove + +ASTNode --> GameMove + +@enduml diff --git a/doc/diagrams/gameModule.puml b/doc/diagrams/gameModule.puml new file mode 100644 index 0000000..9a60d3f --- /dev/null +++ b/doc/diagrams/gameModule.puml @@ -0,0 +1,18 @@ +@startuml + +!include skinparams.puml + +package "Game module" { + + !include GameState.pumlc + !include GameMove.pumlc + !include GameBoard.pumlc + + GameState ..> GameMove + GameMove -> GameMove : Previous move + GameMove o--> GameMove : Next moves + GameMove ..> GameBoard + +} + +@enduml diff --git a/doc/diagrams/gtpEngine.puml b/doc/diagrams/gtpEngine.puml deleted file mode 100644 index 5b098da..0000000 --- a/doc/diagrams/gtpEngine.puml +++ /dev/null @@ -1,36 +0,0 @@ -@startuml - -!include skinparams.puml - -class IO { - processComand() -} - -class EngineCore { - setBoardsize() - clearBoard() - setKomi() - setFixedHandicap() - play() - genmove() - undo() -} - -!include GameState.pumlc - -'class EngineBoard { -' setSize() -' setKomi() -' play() -' undo() -'} - -class EngineAI { - genmove(board) -} - -IO --> EngineCore -EngineCore --> GameState -EngineCore --> EngineAI - -@enduml diff --git a/doc/diagrams/skinparams.puml b/doc/diagrams/skinparams.puml index 2a9e58e..c94ad2d 100644 --- a/doc/diagrams/skinparams.puml +++ b/doc/diagrams/skinparams.puml @@ -9,4 +9,11 @@ skinparam { linetype polyline } +'skinparam { +' shadowing false +' ActorBorderColor #339933 +' ActorBackgroundColor #88FF88 +' linetype polyline +'} + @enduml diff --git a/doc/diagrams/trainingModule.puml b/doc/diagrams/trainingModule.puml new file mode 100644 index 0000000..81d5d72 --- /dev/null +++ b/doc/diagrams/trainingModule.puml @@ -0,0 +1,20 @@ +@startuml + +!include skinparams.puml + +package "Training module" { + + !include SGF.pumlc + !include sgflex.pumlc + !include sgfyacc.pumlc + !include ASTNode.pumlc + !include Property.pumlc + + SGF ..> sgfyacc + sgfyacc .> sgflex + sgfyacc ..> ASTNode + ASTNode .> Property + +} + +@enduml |