Ejemplo n.º 1
0
    def test_AddStation(self):
        n = Network()
        stationid = "station"
        stationid3 = "station3"
        companyid = "company"
        divisionid = "division"

        s = Station(stationid)
        s2 = Station(stationid)

        n.AddStation(s)
        with self.assertRaises(Exception):
            n.AddStation(s2)

        n.AddStationByDef(stationid3, companyid, divisionid)

        self.assertEqual(n.Stations[stationid].ID, stationid)
        self.assertEqual(n.Companies[""].Stations[stationid].ID, stationid)
        self.assertEqual(n.Companies[""].Divisions[""].Stations[stationid].ID, stationid)
        self.assertEqual(s.Company.ID, "")
        self.assertEqual(s.Division.ID, "")
        self.assertEqual(n.Stations[stationid3].ID, stationid3)
        self.assertEqual(n.Companies[companyid].Stations[stationid3].ID, stationid3)
        self.assertEqual(n.Companies[companyid].Divisions[divisionid].Stations[stationid3].ID, stationid3)
        self.assertEqual(n.Stations[stationid3].Company.ID, companyid)
        self.assertEqual(n.Stations[stationid3].Division.ID, divisionid)

        return
Ejemplo n.º 2
0
    def test_AddDivision(self):
        n = Network()
        companyid = "company"
        companyid2 = "company2"
        companyid3 = "company3"
        divisionid = "division"
        divisionid2 = "division2"
        divisionid3 = "division3"

        c = Company(companyid)
        c3 = Company(companyid3)
        d = Division(divisionid, companyid)
        d2 = Division(divisionid2, companyid2)
        n.AddCompany(c)
        n.AddCompany(c3)
        n.AddDivision(d)
        n.AddDivision(d2)
        n.AddDivisionByDef(divisionid3, companyid3)
        n.AddDivisionByDef(divisionid, companyid2)

        with self.assertRaises(Exception):
            n.AddDivisionByDef(divisionid, companyid)

        self.assertEqual(n.Companies[companyid].Divisions[divisionid].ID, divisionid)
        self.assertEqual(n.Companies[companyid2].Divisions[divisionid2].ID, divisionid2)
        self.assertEqual(n.Companies[companyid3].Divisions[divisionid3].ID, divisionid3)
        self.assertEqual(len(n.Companies[companyid2].Divisions), 2)
        self.assertEqual(n.Companies[companyid2].Divisions[divisionid].ID, divisionid)
        return
Ejemplo n.º 3
0
    def test_FindorAddCompany(self):
        n = Network()
        companyid = "company"
        companyid3 = "company3"
        c = Company(companyid)
        n.AddCompany(c)

        self.assertTrue(n.FindOrAddCompany(companyid).ID, companyid)
        self.assertTrue(n.FindOrAddCompany(companyid3).ID, companyid3)
        self.assertTrue(n.Companies[companyid3].ID, companyid3)
        return
Ejemplo n.º 4
0
    def test_Constructor(self):
        n = Network()

        self.assertEqual(len(n.Nodes),0)
        self.assertEqual(len(n.Stations), 0)
        self.assertEqual(len(n.Companies), 0)
        return
Ejemplo n.º 5
0
    def test_AddCompany(self):
        n = Network()
        companyid = "company"
        companyid2 = "company"
        companyid3 = "company3"
        c = Company(companyid)
        c2 = Company(companyid2)

        n.AddCompany(c)

        with self.assertRaises(Exception):
            n.AddCompany(c2)

        n.AddCompanyByDef(companyid3, False, False)

        self.assertEqual(n.Companies[companyid].ID, companyid)
        self.assertEqual(n.Companies[companyid3].ID,  companyid3)
        return
Ejemplo n.º 6
0
    def ImportBidData(self, network: Network):

        filename = BidDataCSVStream.DefaultFileName
        if FileType.BidData in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.BidData]

        filename = filename.format(self.MktDay)
        propertymap = BidDataCSVStream.DefaultPropertyToFileMap
        if FileType.BidData in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.BidData]

        with BidDataCSVStream(filename, propertymap, self.Encoding) as csv:
            for udo in csv:
                mu = csv.getMktUit()
                network.AddMktUnit(mu)
                unitoffer = csv.getMktUnitDailyOffer()
                unitoffer.MktDay = self.MktDay
                network.AddMktUnitDailyOffer(unitoffer)

        return
Ejemplo n.º 7
0
    def test_FindOrAddStation(self):
        n = Network()
        stationid = "station"
        stationid3 = "station3"
        companyid = "company"
        divisionid = "division"

        s = Station(stationid)
        s2 = Station(stationid)

        n.AddStation(s)

        self.assertEqual(n.FindOrAddStation(stationid).ID, stationid)
        self.assertEqual(n.FindOrAddStation(stationid3,companyid, divisionid).ID, stationid3)
        self.assertEqual(n.Stations[stationid3].ID, stationid3)
        self.assertEqual(n.Companies[companyid].Stations[stationid3].ID, stationid3)
        self.assertEqual(n.Companies[companyid].Divisions[divisionid].Stations[stationid3].ID, stationid3)
        self.assertEqual(n.Stations[stationid3].Company.ID, companyid)
        self.assertEqual(n.Stations[stationid3].Division.ID, divisionid)

        return
Ejemplo n.º 8
0
    def test_AddNode(self):

        stname = "station"
        kv = "115"
        ndid = "AB"
        ndid2 = "AB2"
        company = "ABC"

        n = Network()
        s = Station(stname)
        n.AddStation(s)     
        nd = Node(stname, kv, ndid, company)
        n.AddNode(nd)
        n.AddNodeByDef(stname, kv, ndid2, company, "div")

        with self.assertRaises(Exception):
            n.AddNodeByDef(stname,kv, ndid, company)

        self.assertEqual(n.Nodes[nd.ID].ID, (stname, ndid))
        self.assertEqual(n.Stations[stname].Nodes[nd.ID].ID, (stname, ndid))

        self.assertEqual(n.Nodes[(stname, ndid2)].ID, (stname, ndid2))
        self.assertEqual(n.Stations[stname].Nodes[(stname, ndid2)].ID, (stname, ndid2))

        return
Ejemplo n.º 9
0
    def ImportCostCurves(self, network: Network):

        filename = CostCurvesCSVStream.DefaultFileName
        if FileType.CostCurves in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.CostCurves]

        filename = filename.format(self.MktDay)
        propertymap = CostCurvesCSVStream.DefaultPropertyToFileMap
        if FileType.CostCurves in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.CostCurves]

        with CostCurvesCSVStream(filename, propertymap, self.Encoding) as csv:
            for uho in csv:
                network.AddMktUnitHourlyOffer(csv.getMktUnitHourlyOffer())

        return
Ejemplo n.º 10
0
    def ImportDemandBids(self, network: Network):

        filename = DemandBidsCSVStream.DefaultFileName
        if FileType.DemandBids in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.DemandBids]

        filename = filename.format(self.MktDay)
        propertymap = DemandBidsCSVStream.DefaultPropertyToFileMap
        if FileType.DemandBids in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.DemandBids]

        with DemandBidsCSVStream(filename, propertymap, self.Encoding) as csv:
            for mb in csv:
                network.AddMktBid(csv.getMktBid())

        return
Ejemplo n.º 11
0
    def ImportDayAheadLMPs(self, network: Network):

        filename = DayAheadLMPsCSVStream.DefaultFileName
        if FileType.DayAheadLMPs in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.DayAheadLMPs]

        filename = filename.format(self.MktDay)
        propertymap = DayAheadLMPsCSVStream.DefaultPropertyToFileMap
        if FileType.DayAheadLMPs in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.DayAheadLMPs]

        with DayAheadLMPsCSVStream(filename, propertymap,
                                   self.Encoding) as csv:
            for pnode in csv:
                network.AddPNode(csv.getPNode())

        return
Ejemplo n.º 12
0
    def ImportZonalFactors(self, network: Network):

        filename = ZonalFactorsCSVStream.DefaultFileName
        if FileType.ZonalFactors in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.ZonalFactors]

        filename = filename.format(self.MktDay)
        propertymap = ZonalFactorsCSVStream.DefaultPropertyToFileMap
        if FileType.ZonalFactors in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.ZonalFactors]

        with ZonalFactorsCSVStream(filename, propertymap,
                                   self.Encoding) as csv:
            for zf in csv:
                network.AddPNodeFactor(csv.getCPNodeID(), csv.getPNodeID(),
                                       csv.getFactor())

        return
Ejemplo n.º 13
0
    def testNetworkToDEMSimple(self):

        st1 = "Home"
        st2 = "Grid"
        kv = "115"
        nd1 = "HomeNode"
        nd2 = "GridNode"
        sgen = "SolarGen"
        ggen = "GridGen"
        ld1 = "HomeLoad"

        n = Network()

        #HOME
        n.AddStationByDef(st1)
        n.AddNodeByDef(st1, kv, nd1)
        sg = Unit(st1, kv, nd1, sgen, "", 10, 0, 0, 0, 1, False, 0)
        ld = Load(st1, kv, nd1, ld1, "", 13, 0, 1)
        n.AddDevice(sg)
        n.AddDevice(ld)

        #GRID
        n.AddStationByDef(st2)
        n.AddNodeByDef(st2, kv, nd2)
        gg = Unit(st2, kv, nd2, ggen, "", 1e6, 0, 0, 0, 1, False, 0)
        n.AddDevice(gg)

        #LINE
        br = Branch(st1, kv, nd1, st2, kv, nd2, "Line", "", True, 0, 0, "1",
                    RatingSet(25, 25, 25), RatingSet(25, 25, 25))
        n.AddNodeConnector(br)

        gp = NetworkToDEMSimple(n)
        gp.init_problem()
        gp.problem.solve()
        print(gp.results.summary())
Ejemplo n.º 14
0
    def test_FindorAddDivision(self):
        n = Network()
        companyid = "company"
        companyid3 = "company3"
        divisionid = "division"
        divisionid3 = "division3"
        c = Company(companyid)
        d = Division(divisionid, companyid)
        n.AddCompany(c)
        n.AddDivision(d)

        self.assertTrue(n.FindOrAddDivision(divisionid, companyid).ID, divisionid)
        self.assertTrue(n.FindOrAddDivision(divisionid3, companyid3).ID, divisionid3)
        self.assertTrue(n.Companies[companyid3].Divisions[divisionid3].ID, divisionid3)
        return
Ejemplo n.º 15
0
    def ImportCompanies(self, network: Network):

        filename = CompanyCSVStream.DefaultFileName
        if FileType.Company in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.Company]

        propertymap = CompanyCSVStream.DefaultPropertyToFileMap
        if FileType.Company in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.Company]

        with CompanyCSVStream(filename, propertymap, self.Encoding) as csv:
            i = 0
            d = 0
            for company in csv:
                network.AddCompanyByDef(csv.getCompanyName(),
                                        csv.getEnforceLosses(), csv.getAWR())
                i += 1
                while i > ((d + 1) * .10 * len(csv)):
                    print("", end='.')
                    d += 1
        return
Ejemplo n.º 16
0
    def ImportLines(self, network: Network):

        filename = LineCSVStream.DefaultFileName
        if FileType.Line in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.Line]

        propertymap = LineCSVStream.DefaultPropertyToFileMap
        if FileType.Line in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.Line]

        with LineCSVStream(filename, propertymap, self.Encoding) as csv:
            i = 0
            d = 0
            for LN in csv:
                network.AddNodeConnector(csv.getBranch())
                i += 1
                while i > ((d + 1) * .10 * len(csv)):
                    print("", end='.')
                    d += 1

        return
Ejemplo n.º 17
0
    def ImportTransformers(self, network: Network):

        filename = TransformerCSVStream.DefaultFileName
        if FileType.Transformer in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.Transformer]

        propertymap = TransformerCSVStream.DefaultPropertyToFileMap
        if FileType.Transformer in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.Transformer]

        with TransformerCSVStream(filename, propertymap, self.Encoding) as csv:
            i = 0
            d = 0
            for XF in csv:
                network.AddNodeConnector(csv.getTransformer())
                i += 1
                while i > ((d + 1) * .10 * len(csv)):
                    print("", end='.')
                    d += 1

        return
Ejemplo n.º 18
0
    def ImportUnits(self, network: Network):

        filename = UnitCSVStream.DefaultFileName
        if FileType.Unit in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.Unit]

        propertymap = UnitCSVStream.DefaultPropertyToFileMap
        if FileType.Unit in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.Unit]

        with UnitCSVStream(filename, propertymap, self.Encoding) as csv:
            i = 0
            d = 0
            for UN in csv:
                network.AddDevice(csv.getUnit())
                i += 1
                while i > ((d + 1) * .10 * len(csv)):
                    print("", end='.')
                    d += 1

        return
Ejemplo n.º 19
0
    def ImportNodes(self, network: Network):

        filename = NodeCSVStream.DefaultFileName
        if FileType.Node in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.Node]

        propertymap = NodeCSVStream.DefaultPropertyToFileMap
        if FileType.Node in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.Node]

        with NodeCSVStream(filename, propertymap, self.Encoding) as csv:
            i = 0
            d = 0
            for Node in csv:
                network.AddNodeByDef(csv.getStationName(), csv.getVoltage(),
                                     csv.getNodeName(), csv.getCompanyName())
                i += 1
                while i > ((d + 1) * .10 * len(csv)):
                    print("", end='.')
                    d += 1

        return
Ejemplo n.º 20
0
    def ImportDivisions(self, network: Network):

        filename = DivisionCSVStream.DefaultFileName
        if FileType.Division in self.CSVFileNames:
            filename = self.CSVFileNames[FileType.Division]

        propertymap = DivisionCSVStream.DefaultPropertyToFileMap
        if FileType.Division in self.CSVPropertyMaps:
            propertymap = self.CSVPropertyMaps[FileType.Division]

        with DivisionCSVStream(filename, propertymap, self.Encoding) as csv:
            i = 0
            d = 0
            for Division in csv:
                network.AddDivisionByDef(csv.getDivisionName(),
                                         csv.getCompanyName())
                i += 1
                while i > ((d + 1) * .10 * len(csv)):
                    print("", end='.')
                    d += 1

        return
Ejemplo n.º 21
0
    def test_AddPNode(self):
        stname = "station"
        kv = "115"
        ndid = "AB"
        ndid2 = "AB2"
        company = "ABC"

        n = Network()
        s = Station(stname)
        n.AddStation(s)     
        nd = Node(stname, kv, ndid, company)
        n.AddNode(nd)
        n.AddNodeByDef(stname, kv, ndid2, company, "div")

        id =  122060565
        id2 = 122060564
        id3 = 122060562
        id4 = 122060563
        id5 = 34234234
        name = "nodename"
        name2 = "nodename2"
        name3 = "nodename3"
        name4 = "nodename4"
        name5 = "nodename5"
        ldun = "load1"
        sett = True
        sett2 = False
        rzid = 3

        cnd = CPNode(id, name, sett)
        cnd2=CPNode(id2,name2,sett2)
        pnd3 = PNode(id3, name3)
        end4=EPNode(id4, name4,234234,(stname,ndid), ldun, rzid)
        end5=EPNode(id5, name5,2634234,("",""), ldun, rzid)
    

        n.AddPNode(cnd)
        n.AddPNode(cnd2)
        n.AddPNode(pnd3)
        n.AddPNode(end4)
      
        with self.assertRaises(Exception):
            n.AddPNode(cnd)
        with self.assertRaises(Exception):
            n.AddPNode(end5)       

        self.assertEqual(n.PNodes[id].Name, name)
        self.assertEqual(n.CPNodes[id].Name, name)
        self.assertEqual(n.PNodes[id2].Name, name2)
        self.assertEqual(n.CPNodes[id2].Name, name2)
        self.assertEqual(n.PNodes[id3].Name, name3)
        self.assertEqual(n.PNodes[id4].Name, name4)
        self.assertEqual(n.EPNodes[id4].Name, name4)
        self.assertEqual(n.EPNodes[id4].Node.ID, nd.ID)

        self.assertEqual(n.CPNodes[id].FactorSum, 0)
        n.AddPNodeFactor(id, id4, .4)
        n.AddPNodeFactor(id, id3, .6)
        self.assertEqual(n.CPNodes[id].FactorSum, 1)
        self.assertEqual(n.CPNodes[id].PNodes[id4].Name, name4)
        self.assertEqual(n.CPNodes[id].PNodeFactors[id3], .6)

        with self.assertRaises(Exception):
            n.AddPNodeFactor(id, id4, .4)
        with self.assertRaises(Exception):
            n.AddPNodeFactor(34, id4, .4)
        with self.assertRaises(Exception):
            n.AddPNodeFactor(id, 45, .4)
        return
Ejemplo n.º 22
0
    def test_AddNodeConnector(self):
        st1 = "ST1"
        st2 = "ST2"
        kv115 = "115"
        kv365 = "365"
        ndid1 = "N1"
        ndid2 = "N2"
        ndid3 = "N3"
        ndid4 = "N4"
        cbid1 = "12"
        trname = "23"
        psname = "ps12"
        lnname = "lnname"
        cbid2 = "34"        
        company = "ABC"

        n = Network()
        #Station #1
        s1 = Station(st1)
        nd11 = Node(st1, kv115, ndid1, company)
        nd12 = Node(st1, kv115, ndid2, company)
        nd13 = Node(st1, kv365, ndid3, company)
        nd14 = Node(st1, kv365, ndid4, company)
        cb11 = CircuitBreaker(st1, kv115, ndid1, ndid2, cbid1, company, CBState.Closed, "CB")
        tr11 = Transformer(st1, kv115, ndid2, kv365, ndid3, trname, company, True)
        cb12 = CircuitBreaker(st1, kv365, ndid3, ndid4, cbid2, company, CBState.Closed, "CB")

        n.AddStation(s1)
        #both nodes mising     
        with self.assertRaises(Exception):
            n.AddNodeConnector(cb11)

        n.AddNode(nd12)
        #from node missing
        with self.assertRaises(Exception):
            n.AddNodeConnector(cb11)

        n.AddNode(nd11)
        n.AddNodeConnector(cb11)
        #to node missing
        with self.assertRaises(Exception):
            n.AddNodeConnector(tr11)
        #duplicate connector
        with self.assertRaises(Exception):
            n.AddNodeConnector(cb11)


        n.AddNode(nd13)
        n.AddNode(nd14)
        n.AddNodeConnector(tr11)
        n.AddNodeConnector(cb12)
        
        #Station #2
        s2 = Station(st2)
        n.AddStation(s2) 
        nd21 = Node(st2, kv115, ndid1, company)
        n.AddNode(nd21)
        nd22 = Node(st2, kv115, ndid2, company)
        n.AddNode(nd22)
        ps = PhaseShifter(st2, kv115,  ndid1, kv115, ndid2, psname, company, False)
        n.AddNodeConnector(ps)

        ln = Branch(st1, kv115, ndid1, st2, kv115, ndid1, lnname, company, True)
        n.AddNodeConnector(ln)

        self.assertEqual(len(n.NodeConnectors), 5)
        self.assertEqual(len(n.CircuitBreakers), 2)
        self.assertEqual(len(n.Transformers), 1)
        self.assertEqual(len(n.PhaseShifters), 1)
        self.assertEqual(len(n.Lines), 1)
        self.assertEqual(len(nd11.NodeConnectors), 2)
        self.assertEqual(len(nd12.NodeConnectors), 2)
        self.assertEqual(len(nd13.NodeConnectors), 2)
        self.assertEqual(len(nd14.NodeConnectors), 1)
        self.assertEqual(len(nd21.NodeConnectors), 2)
        self.assertEqual(len(nd22.NodeConnectors), 1)
Ejemplo n.º 23
0
    def get_network(self) -> Network:
        return self.network

    def __str__(self):
        out = [
            f" net: {self.network},", f" interface: {self.interface},"
            f" metric: {self.metric}"
        ]
        if self.gateway is not None:
            out.insert(1, f" gateway: {self.gateway},")
        return "".join(out)


if __name__ == "__main__":
    net = Network("192.168.1.0", 24)
    route = Route(network=net, gateway=None, interface="en0", metric=10)
    route2 = Route(Network("0.0.0.0", 0),
                   gateway=IPv4Address("192.168.0.1"),
                   interface="en0",
                   metric=10)
    print(route)
    print(route2)

# net: 192.168.0.0/24, interface: en0, metric: 10
# net: 0.0.0.0/0, gateway: 192.168.0.1, interface: en0, metric: 10

# class Route {
#   public Route(Network network, IPv4Address gateway, String interfaceName, int metric) {}
#   public IPv4Address getGateway() {}
#   public String getInterfaceName() {}
Ejemplo n.º 24
0
from Network.Network import Network
from python_mnist.mnist import MNIST
import numpy as np
from Network.NetLib import initWeight, sigmoid, ReLU, sigmoidGrad, ReLUGrad

net = Network()
net.creatLayer(784, "None").creatLayer(400, "ReLU").creatLayer(
    400, "ReLU").creatLayer(10, "sigmoid")
net.createWeight()

data = MNIST('python_mnist\data')
t = data.load_training()

net.trainMiniBatch(t, 3, 50, 0.01, 5e-4)
Ejemplo n.º 25
0
    def test_AddDevice(self):
        st1 = "ST1"
        st2 = "ST2"
        kv115 = "115"
        kv365 = "365"
        ndid1 = "N1"
        ndid2 = "N2"
        ndid3 = "N3"
        ndid4 = "N4"
        company = "ABC"
        ldid = "LD1"
        shid = "SH1"
        uid = "U1"
        n = Network()
        #Station #1
        s1 = Station(st1)
        nd11 = Node(st1, kv115, ndid1, company)
        nd12 = Node(st1, kv115, ndid2, company)
        nd13 = Node(st1, kv365, ndid3, company)
        nd14 = Node(st1, kv365, ndid4, company)
        l1 = Load(st1, kv115, ndid1, ldid, company, 1,1,.97)
        sh1 = Shunt(st1, kv115, ndid2, shid, company, 1)
        u1 = Unit(st1, kv365, ndid3, uid, company, 10, 10,5,5,.8, False, 7)

        with self.assertRaises(Exception):
            n.AddDevice(l1)

        n.AddStation(s1)

        with self.assertRaises(Exception):
            n.AddDevice(l1)

        n.AddNode(nd12)
        n.AddNode(nd11)
        n.AddNode(nd13)
        n.AddNode(nd14)
        n.AddDevice(l1)
        n.AddDevice(sh1)
        n.AddDevice(u1)
        #duplicate device
        with self.assertRaises(Exception):
            n.AddDevice(l1)



        self.assertEqual(len(n.Devices), 3)
        self.assertEqual(len(n.Loads), 1)
        self.assertEqual(len(n.Units), 1)
        self.assertEqual(len(n.Shunts), 1)
        self.assertEqual(len(nd11.Devices), 1)
        self.assertEqual(len(nd12.Devices), 1)
        self.assertEqual(len(nd13.Devices), 1)
        return
Ejemplo n.º 26
0
import numpy
from Network.Layer import Layer
from Network.Network import Network

# a = numpy.array([1])
# b = numpy.array([[1, 2], [3, 4], [5, 6]])
# print(b)
layer1 = Layer(2, 2)
layer2 = Layer(1, 2)
network = Network([layer1, layer2])

training_set = numpy.array([
    [0, 0, numpy.array([0])],
    [1, 0, numpy.array([1])],
    [0, 1, numpy.array([1])],
    [1, 1, numpy.array([0])],
],
                           dtype=object)
network.learning(training_set)

# for layer in network.layers:
#     print(layer.weights)

print('###################')
print(network.input([0, 0]))
print(network.input([0, 1]))
print(network.input([1, 0]))
print(network.input([1, 1]))