aboutsummaryrefslogtreecommitdiff
path: root/doc/diagrams
diff options
context:
space:
mode:
authorInigoGutierrez <inigogf.95@gmail.com>2022-06-29 23:23:09 +0200
committerInigoGutierrez <inigogf.95@gmail.com>2022-06-29 23:23:09 +0200
commit6724aeb3ba98c1b9f042344734c2d683e79dfc64 (patch)
tree34dd64d6d4176edf5e564f860c3a34a9cc128262 /doc/diagrams
parentc25a5d482937fc861e9d1cfc1ff36e479fcb2fb4 (diff)
downloadimago-6724aeb3ba98c1b9f042344734c2d683e79dfc64.tar.gz
imago-6724aeb3ba98c1b9f042344734c2d683e79dfc64.zip
Made full class diagram.
Diffstat (limited to 'doc/diagrams')
-rw-r--r--doc/diagrams/ASTNode.pumlc12
-rw-r--r--doc/diagrams/ConvNeuralNetwork.pumlc7
-rw-r--r--doc/diagrams/DecisionAlgorithm.pumlc5
-rw-r--r--doc/diagrams/DenseNeuralNetwork.pumlc7
-rw-r--r--doc/diagrams/GameBoard.pumlc37
-rw-r--r--doc/diagrams/GameEngine.pumlc18
-rw-r--r--doc/diagrams/GameMove.pumlc29
-rw-r--r--doc/diagrams/GameState.pumlc18
-rw-r--r--doc/diagrams/ImagoIO.pumlc10
-rw-r--r--doc/diagrams/Keras.pumlc3
-rw-r--r--doc/diagrams/MCTS.pumlc11
-rw-r--r--doc/diagrams/MCTSNode.pumlc18
-rw-r--r--doc/diagrams/NeuralNetwork.pumlc9
-rw-r--r--doc/diagrams/Property.pumlc10
-rw-r--r--doc/diagrams/SGF.pumlc5
-rw-r--r--doc/diagrams/analysisClasses.puml2
-rw-r--r--doc/diagrams/engineModule.puml32
-rw-r--r--doc/diagrams/fullClasses.puml16
-rw-r--r--doc/diagrams/gameModule.puml18
-rw-r--r--doc/diagrams/gtpEngine.puml36
-rw-r--r--doc/diagrams/skinparams.puml7
-rw-r--r--doc/diagrams/trainingModule.puml20
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