예제 #1
0
def visualize_isSatNode(domainSiz):
    xAc1 = []
    yAc1 = []
    xAc2 = []
    yAc2 = []
    xAc3 = []
    yAc3 = []
    xAc4 = []
    yAc4 = []

    for node in range(1, 101, 20):
        print(node)
        xAc1.append(node)
        xAc2.append(node)
        xAc3.append(node)
        xAc4.append(node)
        timeAc1 = 0
        timeAc2 = 0
        timeAc3 = 0
        timeAc4 = 0

        for i in range(10):
            csp = generateCSP(node, domainSiz)
            g = csp[0]
            constraints = csp[1]
            domain = csp[2]
            edge = csp[3]
            domainSize = csp[4]
            mn.executeAC1(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            mn.executeAC2(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            mn.executeAC3(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            mn.executeAC4(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            timeAc1 += mn.cnt1
            timeAc2 += mn.cnt2
            timeAc3 += mn.cnt3
            timeAc4 += mn.cnt4

        timeAc1 /= 10
        timeAc2 /= 10
        timeAc3 /= 10
        timeAc4 /= 10
        yAc1.append(timeAc1)
        yAc2.append(timeAc2)
        yAc3.append(timeAc3)
        yAc4.append(timeAc4)

    plt.plot(xAc1, yAc1, color='g', label='AC 1')
    plt.plot(xAc2, yAc2, color='b', label='AC 2')
    plt.plot(xAc3, yAc3, color='r', label='AC 3')
    plt.plot(xAc4, yAc4, color='orange', label='AC 4')
    plt.xlabel('Number of Node')
    plt.ylabel('Number of Satisfactions')
    plt.title('Comparison of Arc Consistency Algorithm')
    plt.suptitle('@mashrur')
    plt.legend(loc='upper left')
    plt.savefig('node_satisfaction_small.png')
    plt.show()
예제 #2
0
def visualize_density(sz):
    xAc1 = []
    yAc1 = []
    xAc2 = []
    yAc2 = []
    xAc3 = []
    yAc3 = []
    xAc4 = []
    yAc4 = []
    node = 100

    for density in numpy.arange(0.1, 1.1, 0.3):
        xAc1.append(density)
        xAc2.append(density)
        xAc3.append(density)
        xAc4.append(density)

        timeAc1 = 0
        timeAc2 = 0
        timeAc3 = 0
        timeAc4 = 0
        domainSize = sz
        constraints = {}
        domain = [[0 for x in range(domainSize)] for y in range(node)]  # node x domainSize size list
        edge = (density*(node*(node-1)))//2
        edge = int(edge)
        print('lol', density, edge)
        g = nw.gnm_random_graph(node, edge, False)

        for i in g.edges:
            constraints[i] = random.randint(0, 10)
            constraints[(i[1], i[0])] = constraints[i] + lim

        for i in range(node):
            for j in range(domainSize):
                domain[i][j] = randInt(-1100, 1100)

        timeAc1 += executeAC1(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
        timeAc2 += executeAC2(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
        timeAc3 += executeAC3(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
        timeAc4 += executeAC4(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))

        yAc1.append(timeAc1)
        yAc2.append(timeAc2)
        yAc3.append(timeAc3)
        yAc4.append(timeAc4)


    plt.plot(xAc1, yAc1, color='g', label='AC 1')
    plt.plot(xAc2, yAc2, color='b', label='AC 2')
    plt.plot(xAc3, yAc3, color='r', label='AC 3')
    plt.plot(xAc4, yAc4, color='orange', label='AC 4')
    plt.xlabel('Graph Density')
    plt.ylabel('Performance (msec)')
    plt.title('Comparison of Arc Consistency Algorithm')
    plt.suptitle('@mashrur')
    plt.legend(loc='upper left')
    plt.savefig('density_large_domain.png')
    plt.show()
예제 #3
0
def visualize_nodes(domainSiz):
    xAc1 = []
    yAc1 = []
    xAc2 = []
    yAc2 = []
    xAc3 = []
    yAc3 = []
    xAc4 = []
    yAc4 = []

    for node in range(1, 101, 20):
        print(node)
        xAc1.append(node)
        xAc2.append(node)
        xAc3.append(node)
        xAc4.append(node)
        timeAc1 = 0
        timeAc2 = 0
        timeAc3 = 0
        timeAc4 = 0

        for i in range(10):
            csp = generateCSP(node, domainSiz)
            g = csp[0]
            constraints = csp[1]
            domain = csp[2]
            edge = csp[3]
            domainSize = csp[4]
            timeAc1 += executeAC1(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            timeAc2 += executeAC2(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            timeAc3 += executeAC3(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            timeAc4 += executeAC4(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))

        timeAc1 /= 10
        timeAc2 /= 10
        timeAc3 /= 10
        timeAc4 /= 10
        yAc1.append(timeAc1)
        yAc2.append(timeAc2)
        yAc3.append(timeAc3)
        yAc4.append(timeAc4)

    print('AC 1')
    for i in yAc1:
        print(i)
    print('AC 2')
    for i in yAc2:
        print(i)
    print('AC 3')
    for i in yAc3:
        print(i)
    print('AC 4')
    for i in yAc4:
        print(i)
    plt.plot(xAc1, yAc1, color='g', label='AC 1')
    plt.plot(xAc2, yAc2, color='b', label='AC 2')
    plt.plot(xAc3, yAc3, color='r', label='AC 3')
    plt.plot(xAc4, yAc4, color='orange', label='AC 4')
    plt.xlabel('Number of Node')
    plt.ylabel('Performance (msec)')
    plt.title('Comparison of Arc Consistency Algorithm')
    plt.suptitle('@mashrur')
    plt.legend(loc='upper left')
    #plt.savefig('node_variable_sized_domain.png')
    plt.show()
예제 #4
0
def visualize_isSatEdge(domainSz):
    xAc1 = []
    yAc1 = []
    xAc2 = []
    yAc2 = []
    xAc3 = []
    yAc3 = []
    xAc4 = []
    yAc4 = []

    xAc1.append(0)
    xAc2.append(0)
    xAc3.append(0)
    xAc4.append(0)

    yAc1.append(0)
    yAc2.append(0)
    yAc3.append(0)
    yAc4.append(0)

    for edge in range(1, 110, 10):
        print(edge)
        xAc1.append(edge)
        xAc2.append(edge)
        xAc3.append(edge)
        xAc4.append(edge)

        timeAc1 = 0
        timeAc2 = 0
        timeAc3 = 0
        timeAc4 = 0
        domainSize = domainSz
        node = randInt(edge+1, 2*edge)

        for p in range(10):
            constraints = {}
            domain = [[0 for x in range(domainSize)] for y in range(node)]  # node x domainSize size list

            g = nw.gnm_random_graph(node, edge, False)

            for i in g.edges:
                constraints[i] = random.randint(0, 10)
                constraints[(i[1], i[0])] = constraints[i] + lim

            for i in range(node):
                for j in range(domainSize):
                    domain[i][j] = randInt(1, 100)

            mn.executeAC1(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            mn.executeAC2(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            mn.executeAC3(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            mn.executeAC4(node, edge, domainSize, deepcopy(g), deepcopy(constraints), deepcopy(domain))
            timeAc1 += mn.cnt1
            timeAc2 += mn.cnt2
            timeAc3 += mn.cnt3
            timeAc4 += mn.cnt4

        timeAc1 /= 10
        timeAc2 /= 10
        timeAc3 /= 10
        timeAc4 /= 10
        yAc1.append(timeAc1)
        yAc2.append(timeAc2)
        yAc3.append(timeAc3)
        yAc4.append(timeAc4)

    plt.plot(xAc1, yAc1, color='g', label='AC 1')
    plt.plot(xAc2, yAc2, color='b', label='AC 2')
    plt.plot(xAc3, yAc3, color='r', label='AC 3')
    plt.plot(xAc4, yAc4, color='orange', label='AC 4')
    plt.xlabel('Number of Edge')
    plt.ylabel('Number of Satisfactions')
    plt.title('Comparison of Arc Consistency Algorithm')
    plt.suptitle('@mashrur')
    plt.legend(loc='upper left')
    # plt.savefig('edge_satisfactions_large.png')
    plt.show()
예제 #5
0
def visualize_domainReduction(domainSiz):
    xAc1 = []
    yAc1 = []
    xAc2 = []
    yAc2 = []
    xAc3 = []
    yAc3 = []
    xAc4 = []
    yAc4 = []

    for node in range(1, 101, 20):
        print(node)
        xAc1.append(node)
        xAc2.append(node)
        xAc3.append(node)
        xAc4.append(node)

        csp = generateCSP(node, domainSiz)
        g = csp[0]
        constraints = csp[1]
        domain = csp[2]
        edge = csp[3]
        domainSize = csp[4]
        initSizeAC1 = node*domainSize
        initSizeAC2 = node*domainSize
        initSizeAC3 = node*domainSize
        initSizeAC4 = node*domainSize
        finalSizeAC1 = 0
        finalSizeAC2 = 0
        finalSizeAC3 = 0
        finalSizeAC4 = 0

        domain1 = deepcopy(domain)
        domain2 = deepcopy(domain)
        domain3 = deepcopy(domain)
        domain4 = deepcopy(domain)
        executeAC1(node, edge, domainSize, deepcopy(g), deepcopy(constraints), domain1)
        executeAC2(node, edge, domainSize, deepcopy(g), deepcopy(constraints), domain2)
        executeAC3(node, edge, domainSize, deepcopy(g), deepcopy(constraints), domain3)
        executeAC4(node, edge, domainSize, deepcopy(g), deepcopy(constraints), domain4)
        for p in range(node):
            finalSizeAC1 += len(domain1[p])
            finalSizeAC2 += len(domain2[p])
            finalSizeAC3 += len(domain3[p])
            finalSizeAC4 += len(domain4[p])

        sizeAc1 = abs((finalSizeAC1-initSizeAC1)/initSizeAC1)
        sizeAc2 = abs((finalSizeAC2-initSizeAC2)/initSizeAC2)
        sizeAc3 = abs((finalSizeAC3-initSizeAC3)/initSizeAC3)
        sizeAc4 = abs((finalSizeAC4-initSizeAC4)/initSizeAC4)

        print('lol', sizeAc1, sizeAc2, sizeAc3, sizeAc4)
        yAc1.append(sizeAc1)
        yAc2.append(sizeAc2)
        yAc3.append(sizeAc3)
        yAc4.append(sizeAc4)

    plt.plot(xAc1, yAc1, color='g', label='AC 1')
    plt.plot(xAc2, yAc2, color='b', label='AC 2')
    plt.plot(xAc3, yAc3, color='r', label='AC 3')
    plt.plot(xAc4, yAc4, color='orange', label='AC 4')
    plt.xlabel('Number of Node')
    plt.ylabel('Domain Reduction')
    plt.title('Comparison of Arc Consistency Algorithm')
    plt.suptitle('@mashrur')
    plt.legend(loc='upper left')
    plt.savefig('node_domain_reduction.png')
    plt.show()