Skip to content

Commit 24e980d

Browse files
committed
initial version, rendering only nodes
0 parents  commit 24e980d

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

genetic_algo_demo.py

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
#from libs.renderer import Renderer
2+
#from libs.system import System
3+
from PyQt4.QtGui import *
4+
#from PyQt5.QtWidgets import *
5+
from PyQt4.QtCore import *
6+
from random import randint
7+
8+
class Node:
9+
def __init__(self, name):
10+
self.name = name
11+
self.connected_nodes = []
12+
13+
def add_connection(self,Node):
14+
self.connected_nodes.append(Node)
15+
16+
def get_connected(self):
17+
return self.connected_nodes
18+
19+
20+
class Canvas(QWidget):
21+
def __init__(self, nodes, *args, **kwargs):
22+
super(Canvas, self).__init__(*args, **kwargs)
23+
self.nodes = nodes
24+
self.tx = 100
25+
self.ty = 100
26+
self.dx = 50
27+
self.dy = 50
28+
29+
30+
def paintEvent(self, event):
31+
self.draw()
32+
33+
def draw(self):
34+
#for nodes
35+
i = 0
36+
for layer in self.nodes:
37+
j = 0
38+
for node in layer:
39+
#self.draw_node_and_its_connections(node)
40+
self.draw_node(i,j)
41+
self.draw_connection(node)
42+
j += 1
43+
i += 1
44+
45+
46+
#def draw_node_and_its_connections(self,Node):
47+
#self.draw_node(Node)
48+
#self.draw_connections(Node)
49+
50+
def draw_node(self,i,j):
51+
print("drawing {} {}".format(i,j))
52+
p = QPainter(self)
53+
p.setRenderHint(QPainter.Antialiasing)
54+
55+
r = QRect(self.tx*i+self.dx,self.ty*j+self.dy,20,20)
56+
outer, inner = Qt.gray, Qt.lightGray
57+
p.fillRect(r, QBrush(inner))
58+
pen = QPen(outer)
59+
pen.setWidth(1)
60+
p.setPen(pen)
61+
p.drawRect(r)
62+
63+
def draw_connections(self,nodes):
64+
for node in nodes:
65+
self.draw_connection(node)
66+
67+
def draw_connection(self,node):
68+
return 0
69+
70+
71+
72+
class Renderer(QMainWindow):
73+
def __init__(self,nodes,*args, **kwargs):
74+
super(Renderer, self).__init__(*args, **kwargs)
75+
canvas = Canvas(nodes)
76+
self.setCentralWidget(canvas)
77+
78+
79+
class System:
80+
def __init__(self,**kwargs):
81+
self.layers_max = kwargs['num_layers']
82+
self.nodes_max = kwargs['max_nodes_in_layer']
83+
self.connection_max = kwargs['max_node_connection']
84+
self.create_random_placement()
85+
86+
def create_random_placement(self):
87+
self.create_layers()
88+
self.create_connections()
89+
90+
def create_layers(self):
91+
self.layers = [ [ Node("Node{}{}".format(i,j)) for j in range(randint(1,self.nodes_max)) ] for i in range(self.layers_max) ]
92+
93+
def create_connections(self):
94+
i = 0
95+
for layer in self.layers:
96+
j = 0
97+
for node in layer:
98+
print("Connecting {} {}".format(i,j))
99+
#if i is not self.layers_max-1:
100+
#n = self.layers[i+1][randint(0,len(self.layers[i+1]))]
101+
#node.add_connection(n)
102+
j+=1
103+
i+=1
104+
105+
def get_data(self):
106+
return self.layers
107+
108+
initial_data = {
109+
'num_layers' : 5,
110+
'max_nodes_in_layer' : 3,
111+
'max_node_connection' : 2,
112+
}
113+
114+
if __name__ == '__main__':
115+
sys = System(**initial_data)
116+
nodes = sys.get_data()
117+
app = QApplication([])
118+
r = Renderer(nodes)
119+
r.show()
120+
app.exec_()

0 commit comments

Comments
 (0)