예제 #1
0
    def arrange(self, event):
        self.frame_body.pack_forget()
        self.frame_body = Frame(self.frame)
        self.csp = None
        self.list_of_jadwal_ruangan = []
        self.list_of_jadwal_kegiatan = []

        self.csp = CSP(self.dasbor.entry_nama_file.get())

        if self.pilihan_algoritma.get() == 0:
            schedule = Schedule()
            hill = HillClimbing()
            hill.algorithm(schedule, self.csp, int(self.dasbor.entry_iterasi_maksimal.get()))
        elif self.pilihan_algoritma.get() == 1:
            Schedule1 = Schedule()
            Schedule1.inisialisasi(self.csp)
            SimulatedAnnealing1 = SimulatedAnnealing(float(self.dasbor.entry_T.get()), float(self.dasbor.entry_Tmin.get()), float(self.dasbor.entry_alpha.get()))
            SimulatedAnnealing1.inisialisasi(Schedule1, self.csp)
        elif self.pilihan_algoritma.get() == 2:
            for i in range(int(self.dasbor.entry_iterasi_maksimal.get())):
                PopulasiGA1 = PopulasiGA()
                PopulasiGA1.isiPopulasi(self.csp.getListOfJadwal(), self.csp.getListOfRuangan())
                PopulasiGA1.selection()
                PopulasiGA1.crossOver()
                PopulasiGA1.mutasi(self.csp)
                konflikMinimal, idxMinimal = PopulasiGA1.cekKonflikPopulasi()
                self.csp.setJumlahConflict2(konflikMinimal)
                if (konflikMinimal == 0):
                    break
            PopulasiGA1.assignToCSP(PopulasiGA1.getIndividuByIndex(idxMinimal), self.csp)

        self.dasbor.label_angka_jadwal_bentrok.config(text=str(self.csp.getJumlahConflict2()))
        self.dasbor.label_angka_persentase.config(text=str(self.csp.hitungEfisiensi()*100)+'%')

        for ruangan in self.csp.getListOfRuangan():
            self.list_of_jadwal_ruangan.append(JadwalRuangan(self.frame_body, ruangan))

        for kegiatan in self.csp.getListOfJadwal():
            self.list_of_jadwal_kegiatan.append(JadwalKegiatan(self.list_of_jadwal_ruangan, kegiatan))

        #BINDING
        for jadwal_ruangan in self.list_of_jadwal_ruangan:
            for index_baris in range (2,13):
                for index_kolom in range (1,6):
                    frame_jadwal_ruangan = jadwal_ruangan.matrix_of_frame_jadwal_ruangan[index_baris][index_kolom]
                    frame_jadwal_ruangan.bind('<Button-1>', lambda event, a=jadwal_ruangan, b=index_baris, c=index_kolom: self.pindah_jadwal(a,b,c))

        for jadwal_kegiatan in self.list_of_jadwal_kegiatan:
            for button in jadwal_kegiatan.list_of_button:
                button.bind('<Button-1>', lambda event, a=button.cget('text'), b=jadwal_kegiatan: self.pilih_kegiatan(a,b))

        #SHOW
        for jadwal_ruangan in self.list_of_jadwal_ruangan:
            jadwal_ruangan.show()

        for jadwal_kegiatan in self.list_of_jadwal_kegiatan:
            jadwal_kegiatan.show()

        self.frame_body.pack(side=TOP, expand=True)
예제 #2
0
 def toCSP(self) -> CSP:
     """
     Transforms the map into a CSP
     :return: the CSP
     """
     csp = CSP()
     for p in self._region:
         v = Variable(
             'region ' + str('%.3f' % p.x()) + '-' + str('%.3f' % p.y()),
             self._color)
         csp.addVariable(v)
     for l in self._borders:
         csp.addBinaryConstraint(
             csp.getVariable('region ' + str('%.3f' % l[0].x()) + '-' +
                             str('%.3f' % l[0].y())), Constraint(different),
             csp.getVariable('region ' + str('%.3f' % l[1].x()) + '-' +
                             str('%.3f' % l[1].y())))
     return csp
def main():
    """
    task:
        0 - N queens
        1 - Latin square
        
    size:


    algorithm:
        0 - forward checking
        1 - backtracking 
        
    """
    size = int(input("Specify the desired size of the board: "))
    csp = CSP.CSP(task=1, size=size)
    results = csp.start(algorithm=1)
    # for r in results:
    #    print(r)
    print("Solutions found: ", len(results[0]), "Number of iterations: ",
          results[1])
예제 #4
0
def new_sudoku(file=None):
	if not file:
		# Create empty sudoku with domains 1-9 for every cell
		X = [0] * DIM*DIM
		D = [ list(range(1,DIM+1)) for _ in range(len(X)) ]
	else:
		# Read a sudoku and fill in domain values
		X = read_sudoku(file)
		D = []
		for i in range(len(X)):
			if X[i] == 0:
				D.append( list(range(1,DIM+1)) )
			else:
				D.append( [ X[i] ] )
	# Only one constraint to satisfy (on a variety of arcs)
	C = [ alldiff ]
	# Seems like it could be done more correctly

	# Generate all rows, columns, and boxes
	box_size = int(sqrt(DIM))
	rows, cols, boxes = [], [], []
	for i in range(0,DIM):
		row, col, box = [], [], []
		for j in range(0,DIM):
			row.append(i + DIM*j)
			col.append(DIM*i + j)
			box.append( (j%box_size) + DIM*(j//box_size) + box_size*(i%box_size) + DIM*box_size*(i//box_size) )
		rows.append(tuple(row))
		cols.append(tuple(col))
		boxes.append(tuple(box))

	# Convert all groups into binary arcs
	groups = rows + cols + boxes
	arcs = []
	for group in groups:
		arcs += binary_arcs(group)

	# Return a CSP representation of the sudoku
	return CSP.CSP(X, D, C, arcs)
    def __init__(self, N=1):
        def leftDiagonalConstraint(state, values, size=N):
            pairs = values.items()
            validStates = list(
                range(
                    state.state -
                    min(state.state // size, state.state % size) * (size + 1),
                    size**2, size + 1))
            validPairs = list(
                filter(lambda pair: pair[1] and pair[0].state in validStates,
                       pairs))
            statesToConsider = map(lambda x: x[1], validPairs)
            return sum(statesToConsider) <= 1

        def rightDiagonalConstraint(state, values, size=N):
            pairs = values.items()
            validStates = list(
                range(
                    state.state - min(state.state // size,
                                      (N - 1) - state.state % size) *
                    (size - 1), size**2, (size - 1)))
            validPairs = list(
                filter(lambda pair: pair[1] and pair[0].state in validStates,
                       pairs))
            statesToConsider = map(lambda x: x[1], validPairs)
            return sum(statesToConsider) <= 1

        self._number = N
        goal = lambda values, size=N: sum(map(lambda v: v[1], values.items())
                                          ) == size
        self._CSP = CSP(goal, ChessState(0, set([True, False]), N))

        for i in range(N * N):
            self._CSP.addVariable(ChessState(i, set([True, False]), N))

        self._CSP.addConstraint(leftDiagonalConstraint)
        self._CSP.addConstraint(rightDiagonalConstraint)
예제 #6
0
 def __init__(self, filename,domain):
     self.csp1 = CSP.CSP(filename, domain)
     self.csp1.parseFile()
     self.finalassignment = {}
     self.cnt = 0
 def solve_mrv(self):
     aus = CSP(self.vars, self.doms, self.cons)
     return aus.backtrack(aus.mrv, aus.order_values, aus.simple)
 def simplesolve(self):
     aus = CSP(self.vars, self.doms, self.cons)
     return aus.backtrack(aus.select_unnassigned, aus.order_values,
                          aus.simple)
예제 #9
0
import CSP
import numpy as np
import matplotlib.pyplot as plt

# csp_bt_6 = CSP.CSP(size=6, domain_size=3).backtracking_map()[0]
########################################################################################################################
# --------------------------------------------------KOLOROWANIE GRAFU---------------------------------------------------
########################################################################################################################

# ------------------------------------------PORÓWNANIE CZASU DLA 5 ROZMIARÓW--------------------------------------------

objects = ('6 x 6', '9 x 9', '12 x 12', '15 x 15' '18 x 18')
y_pos = np.arange(len(objects))

csp_bt_6 = CSP.CSP(size=6, domain_size=5).backtracking_map()[0]
csp_bt_9 = CSP.CSP(size=9, domain_size=5).backtracking_map()[0]
csp_bt_12 = CSP.CSP(size=12, domain_size=5).backtracking_map()[0]
csp_bt_15 = CSP.CSP(size=15, domain_size=5).backtracking_map()[0]
csp_bt_18 = CSP.CSP(size=18, domain_size=5).backtracking_map()[0]

csp_fc_6 = CSP.CSP(size=6, domain_size=5).forward_checking_map()[0]
csp_fc_9 = CSP.CSP(size=9, domain_size=5).forward_checking_map()[0]
csp_fc_12 = CSP.CSP(size=12, domain_size=5).forward_checking_map()[0]
csp_fc_15 = CSP.CSP(size=15, domain_size=5).forward_checking_map()[0]
csp_fc_18 = CSP.CSP(size=18, domain_size=5).forward_checking_map()[0]

backtracking = [csp_bt_6, csp_bt_9, csp_bt_12, csp_bt_15, csp_bt_18]
forward_checking = [csp_fc_6, csp_fc_9, csp_fc_12, csp_fc_15, csp_fc_18]

plt.bar(y_pos, backtracking, align='center', alpha=0.5)
plt.bar(y_pos, forward_checking, align='center', alpha=0.5)
def main():

    # set up the variables and domains in the Australia example so it can be solved with AC3
    variables = [
        "Alabama", "Arizona", "Arkansas", "California", "Colorado",
        "Connecticut", "Delaware", "Florida", 'Georgia', 'Idaho', 'Illinois',
        'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine',
        'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi',
        'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
        'New Jersey', 'New Mexico', 'New York', 'North Carolina',
        'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania',
        'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas',
        'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia',
        'Wisconsin', 'Wyoming'
    ]
    domains = {}
    for variable in variables:
        domains[variable] = ["red", "white", "blue", 'yellow']

    myCSP = CSP(variables, domains)
    myCSP.addConstraint("Alabama", "Florida")
    myCSP.addConstraint("Alabama", "Georgia")
    myCSP.addConstraint("Alabama", "Mississippi")
    myCSP.addConstraint("Alabama", "Tennessee")
    myCSP.addConstraint("Arizona", "California")
    myCSP.addConstraint("Arizona", "Colorado")
    myCSP.addConstraint("Arizona", "Nevada")
    myCSP.addConstraint("Arizona", "New Mexico")
    myCSP.addConstraint("Arizona", "Utah")
    myCSP.addConstraint("Arkansas", "Louisiana")
    myCSP.addConstraint("Arkansas", "Mississippi")
    myCSP.addConstraint("Arkansas", "Missouri")
    myCSP.addConstraint("Arkansas", "Oklahoma")
    myCSP.addConstraint("Arkansas", "Tennessee")
    myCSP.addConstraint("Arkansas", "Texas")
    myCSP.addConstraint("California", "Arizona")
    myCSP.addConstraint("California", "Nevada")
    myCSP.addConstraint("California", "Oregon")
    myCSP.addConstraint("Colorado", "Arizona")
    myCSP.addConstraint("Colorado", "Kansas")
    myCSP.addConstraint("Colorado", "Nebraska")
    myCSP.addConstraint("Colorado", "New Mexico")
    myCSP.addConstraint("Colorado", "Oklahoma")
    myCSP.addConstraint("Colorado", "Utah")
    myCSP.addConstraint("Colorado", "Wyoming")
    myCSP.addConstraint("Colorado", "Massachusetts")
    myCSP.addConstraint("Colorado", "New York")
    myCSP.addConstraint("Colorado", "Rhode Island")
    myCSP.addConstraint("Delaware", "Maryland")
    myCSP.addConstraint("Delaware", "New Jersey")
    myCSP.addConstraint("Delaware", "Pennsylvania")
    myCSP.addConstraint("Florida", "Alabama")
    myCSP.addConstraint("Florida", "Georgia")
    myCSP.addConstraint("Georgia", "Alabama")
    myCSP.addConstraint("Georgia", "Florida")
    myCSP.addConstraint("Georgia", "North Carolina")
    myCSP.addConstraint("Georgia", "South Carolina")
    myCSP.addConstraint("Georgia", "Tennessee")
    myCSP.addConstraint("Idaho", "Montana")
    myCSP.addConstraint("Idaho", "Nevada")
    myCSP.addConstraint("Idaho", "Oregon")
    myCSP.addConstraint("Idaho", "Utah")
    myCSP.addConstraint("Idaho", "Washington")
    myCSP.addConstraint("Idaho", "Wyoming")
    myCSP.addConstraint("Illinois", "Indiana")
    myCSP.addConstraint("Illinois", "Iowa")
    myCSP.addConstraint("Illinois", "Michigan")
    myCSP.addConstraint("Illinois", "Kentucky")
    myCSP.addConstraint("Illinois", "Missouri")
    myCSP.addConstraint("Illinois", "Wisconsin")
    myCSP.addConstraint("Indiana", "Illinois")
    myCSP.addConstraint("Indiana", "Kentucky")
    myCSP.addConstraint("Indiana", "Michigan")
    myCSP.addConstraint("Indiana", "Ohio")
    myCSP.addConstraint("Iowa", "Illinois")
    myCSP.addConstraint("Iowa", "Minnesota")
    myCSP.addConstraint("Iowa", "Missouri")
    myCSP.addConstraint("Iowa", "Nebraska")
    myCSP.addConstraint("Iowa", "South Dakota")
    myCSP.addConstraint("Iowa", "Wisconsin")
    myCSP.addConstraint("Kansas", "Colorado")
    myCSP.addConstraint("Kansas", "Missouri")
    myCSP.addConstraint("Kansas", "Nebraska")
    myCSP.addConstraint("Kansas", "Oklahoma")
    myCSP.addConstraint("Kentucky", "Illinois")
    myCSP.addConstraint("Kentucky", "Indiana")
    myCSP.addConstraint("Kentucky", "Missouri")
    myCSP.addConstraint("Kentucky", "Ohio")
    myCSP.addConstraint("Kentucky", "Tennessee")
    myCSP.addConstraint("Kentucky", "Virginia")
    myCSP.addConstraint("Kentucky", "West Virginia")
    myCSP.addConstraint("Louisiana", "Arkansas")
    myCSP.addConstraint("Louisiana", "Mississippi")
    myCSP.addConstraint("Louisiana", "Texas")
    myCSP.addConstraint("Louisiana", "New Hampshire")
    myCSP.addConstraint("Maryland", "Delaware")
    myCSP.addConstraint("Maryland", "Pennsylvania")
    myCSP.addConstraint("Maryland", "Virginia")
    myCSP.addConstraint("Maryland", "West Virginia")
    myCSP.addConstraint("Massachusetts", "Connecticut")
    myCSP.addConstraint("Massachusetts", "New Hampshire")
    myCSP.addConstraint("Massachusetts", "New York")
    myCSP.addConstraint("Massachusetts", "Rhode Island")
    myCSP.addConstraint("Massachusetts", "Vermont")
    myCSP.addConstraint("Michigan", "Illinois")
    myCSP.addConstraint("Michigan", "Indiana")
    myCSP.addConstraint("Michigan", "Minnesota")
    myCSP.addConstraint("Michigan", "Ohio")
    myCSP.addConstraint("Michigan", "Wisconsin")
    myCSP.addConstraint("Minnesota", "Iowa")
    myCSP.addConstraint("Minnesota", "Michigan")
    myCSP.addConstraint("Minnesota", "North Dakota")
    myCSP.addConstraint("Minnesota", "South Dakota")
    myCSP.addConstraint("Minnesota", "Wisconsin")
    myCSP.addConstraint("Mississippi", "Alabama")
    myCSP.addConstraint("Mississippi", "Arkansas")
    myCSP.addConstraint("Mississippi", "Louisiana")
    myCSP.addConstraint("Mississippi", "Tennessee")
    myCSP.addConstraint("Missouri", "Arkansas")
    myCSP.addConstraint("Missouri", "Illinois")
    myCSP.addConstraint("Missouri", "Iowa")
    myCSP.addConstraint("Missouri", "Kansas")
    myCSP.addConstraint("Missouri", "Kentucky")
    myCSP.addConstraint("Missouri", "Nebraska")
    myCSP.addConstraint("Missouri", "Oklahoma")
    myCSP.addConstraint("Missouri", "Tennessee")
    myCSP.addConstraint("Montana", "Idaho")
    myCSP.addConstraint("Montana", "North Dakota")
    myCSP.addConstraint("Montana", "South Dakota")
    myCSP.addConstraint("Montana", "Wyoming")
    myCSP.addConstraint("Nebraska", "Colorado")
    myCSP.addConstraint("Nebraska", "Iowa")
    myCSP.addConstraint("Nebraska", "Kansas")
    myCSP.addConstraint("Nebraska", "Missouri")
    myCSP.addConstraint("Nebraska", "South Dakota")
    myCSP.addConstraint("Nebraska", "Wyoming")
    myCSP.addConstraint("Nevada", "Arizona")
    myCSP.addConstraint("Nevada", "California")
    myCSP.addConstraint("Nevada", "Idaho")
    myCSP.addConstraint("Nevada", "Oregon")
    myCSP.addConstraint("Nevada", "Utah")
    myCSP.addConstraint("New Hampshire", "Maine")
    myCSP.addConstraint("New Hampshire", "Massachusetts")
    myCSP.addConstraint("New Hampshire", "Vermont")
    myCSP.addConstraint("New Jersey", "Delaware")
    myCSP.addConstraint("New Jersey", "New York")
    myCSP.addConstraint("New Jersey", "Pennsylvania")
    myCSP.addConstraint("New Mexico", "Arizona")
    myCSP.addConstraint("New Mexico", "Colorado")
    myCSP.addConstraint("New Mexico", "Oklahoma")
    myCSP.addConstraint("New Mexico", "Texas")
    myCSP.addConstraint("New Mexico", "Utah")
    myCSP.addConstraint("New York", "Connecticut")
    myCSP.addConstraint("New York", "Massachusetts")
    myCSP.addConstraint("New York", "New Jersey")
    myCSP.addConstraint("New York", "Pennsylvania")
    myCSP.addConstraint("New York", "Rhode Island")
    myCSP.addConstraint("New York", "Vermont")
    myCSP.addConstraint("North Carolina", "Georgia")
    myCSP.addConstraint("North Carolina", "South Carolina")
    myCSP.addConstraint("North Carolina", "Tennessee")
    myCSP.addConstraint("North Carolina", "Virginia")
    myCSP.addConstraint("North Dakota", "Minnesota")
    myCSP.addConstraint("North Dakota", "Montana")
    myCSP.addConstraint("North Dakota", "South Dakota")
    myCSP.addConstraint("Ohio", "Indiana")
    myCSP.addConstraint("Ohio", "Kentucky")
    myCSP.addConstraint("Ohio", "Michigan")
    myCSP.addConstraint("Ohio", "Pennsylvania")
    myCSP.addConstraint("Ohio", "West Virginia")
    myCSP.addConstraint("Oklahoma", "Arkansas")
    myCSP.addConstraint("Oklahoma", "Colorado")
    myCSP.addConstraint("Oklahoma", "Kansas")
    myCSP.addConstraint("Oklahoma", "Missouri")
    myCSP.addConstraint("Oklahoma", "New Mexico")
    myCSP.addConstraint("Oklahoma", "Texas")
    myCSP.addConstraint("Oregon", "California")
    myCSP.addConstraint("Oregon", "Idaho")
    myCSP.addConstraint("Oregon", "Nevada")
    myCSP.addConstraint("Oregon", "Washington")
    myCSP.addConstraint("Pennsylvania", "Delaware")
    myCSP.addConstraint("Pennsylvania", "Maryland")
    myCSP.addConstraint("Pennsylvania", "New Jersey")
    myCSP.addConstraint("Pennsylvania", "New York")
    myCSP.addConstraint("Pennsylvania", "Ohio")
    myCSP.addConstraint("Pennsylvania", "West Virginia")
    myCSP.addConstraint("Rhode Island", "Connecticut")
    myCSP.addConstraint("Rhode Island", "Massachusetts")
    myCSP.addConstraint("Rhode Island", "New York")
    myCSP.addConstraint("South Carolina", "Georgia")
    myCSP.addConstraint("South Carolina", "North Carolina")
    myCSP.addConstraint("South Dakota", "Iowa")
    myCSP.addConstraint("South Dakota", "Minnesota")
    myCSP.addConstraint("South Dakota", "Montana")
    myCSP.addConstraint("South Dakota", "Nebraska")
    myCSP.addConstraint("South Dakota", "North Dakota")
    myCSP.addConstraint("South Dakota", "Wyoming")
    myCSP.addConstraint("Tennessee", "Alabama")
    myCSP.addConstraint("Tennessee", "Arkansas")
    myCSP.addConstraint("Tennessee", "Georgia")
    myCSP.addConstraint("Tennessee", "Kentucky")
    myCSP.addConstraint("Tennessee", "Mississippi")
    myCSP.addConstraint("Tennessee", "Missouri")
    myCSP.addConstraint("Tennessee", "North Carolina")
    myCSP.addConstraint("Tennessee", "Virginia")
    myCSP.addConstraint("Texas", "Arkansas")
    myCSP.addConstraint("Texas", "Louisiana")
    myCSP.addConstraint("Texas", "New Mexico")
    myCSP.addConstraint("Texas", "Oklahoma")
    myCSP.addConstraint("Utah", "Arizona")
    myCSP.addConstraint("Utah", "Colorado")
    myCSP.addConstraint("Utah", "Idaho")
    myCSP.addConstraint("Utah", "Nevada")
    myCSP.addConstraint("Utah", "New Mexico")
    myCSP.addConstraint("Utah", "Wyoming")
    myCSP.addConstraint("Vermont", "Massachusetts")
    myCSP.addConstraint("Vermont", "New Hampshire")
    myCSP.addConstraint("Vermont", "New York")
    myCSP.addConstraint("Virginia", "Kentucky")
    myCSP.addConstraint("Virginia", "Maryland")
    myCSP.addConstraint("Virginia", "North Carolina")
    myCSP.addConstraint("Virginia", "Tennessee")
    myCSP.addConstraint("Virginia", "West Virginia")
    myCSP.addConstraint("Washington", "Idaho")
    myCSP.addConstraint("Washington", "Oregon")
    myCSP.addConstraint("West Virginia", "Kentucky")
    myCSP.addConstraint("West Virginia", "Maryland")
    myCSP.addConstraint("West Virginia", "Ohio")
    myCSP.addConstraint("West Virginia", "Pennsylvania")
    myCSP.addConstraint("West Virginia", "Virginia")
    myCSP.addConstraint("Wisconsin", "Illinois")
    myCSP.addConstraint("Wisconsin", "Iowa")
    myCSP.addConstraint("Wisconsin", "Michigan")
    myCSP.addConstraint("Wisconsin", "Minnesota")
    myCSP.addConstraint("Wyoming", "Colorado")
    myCSP.addConstraint("Wyoming", "Idaho")
    myCSP.addConstraint("Wyoming", "Montana")
    myCSP.addConstraint("Wyoming", "Nebraska")
    myCSP.addConstraint("Wyoming", "South Dakota")
    myCSP.addConstraint("Wyoming", "Utah")
    #myCSP.addConstraint("Hawaii", "None")
    #myCSP.addConstraint("Alaska", "None")

    myCSP.ac3()
    myCSP.print()

    myCSP.search()
    myCSP.print()
예제 #11
0
from sys import *
import local_search
import input
import heuristics as h
import CSP
import time

if __name__ == "__main__":
    time1 = time.clock()
    sud = None

    # The solution method: either CSP or local search
    if argv[1] == "CSP":
        # choosing the grid
        if argv[2] == "easy":
            sud = CSP.CSP(3, input.easy9)
        elif argv[2] == "hard":
            sud = CSP.CSP(3, input.hard9)
        elif argv[2] == "16":
            sud = CSP.CSP(4, input.mid16)

        # choosing set of heuristics
        if argv[3] == '1':
            order = h.by_order
            value = h.random_value
            strategy1 = h.arc_consistency
            strategy2 = h.forward_checking
            sud.solve(order, value, strategy1, strategy2)
        elif argv[3] == '2':
            order = h.by_order
            value = h.random_value
        newDomain = {}
        for key in domains:
            newValue = []
            value = domains[key]
            for domainList in value:
                newDomainList = []
                for domain in domainList:
                    newDomainList.append(domain)
                newValue.append(newDomainList)
            newDomain[key] = newValue
        return newDomain


backTrackSearch = BacktrackingSearch()

csp = CSP(10, 0)
start = time.time()
result = backTrackSearch.backtrackingSearch(csp)
print(result)
print(time.time() - start)
StructureVisual().drawStructure(result[0])

# csp = CSP(10, 0)
# finalMap = {}
# for i in range(50):
#     result = backTrackSearch.backtrackingSearch(csp)
#     finalMap[i] = result[1]
# print(finalMap)
# file = open('testData.txt', 'a')
# file.write(json.dumps(finalMap))
# file.close()
예제 #13
0
# Name: Erin Cole
# Description: Tester file for CSP.py
import CSP

# Test on .mat file from BCI Competition IV dataset 3
f = 'S1.mat'
CSP.CSP(f)
예제 #14
0
def main():
    start = time.time()
    with open('input.txt', 'r') as openFile:
        fileData = openFile.readlines()
    openFile.close()
    cspInfo = [line.strip() for line in fileData]

    #Assign variables

    dNumOfGroups = int(cspInfo[0])
    dNumOfPots = int(cspInfo[1])
    lsVariables = []
    dctVarInfo = collections.defaultdict(list)
    dctDomains = collections.defaultdict(list)
    count = 2
    intPotNum = 1
    for pot in range(dNumOfPots):
        splitLine = cspInfo[count].split(',')
        for country in splitLine:
            lsVariables.append(country)
            dctVarInfo[country].append(intPotNum)

            for num in range(1, dNumOfGroups + 1):
                dctDomains[country].append(num)

        count = count + 1
        intPotNum = intPotNum + 1
    for confederation in range(6):
        #parse string
        splitLine = cspInfo[count].split(':')
        strConfederation = splitLine.pop(0)
        splitLine = str(splitLine)
        splitLine = splitLine.split(',')
        count = count + 1
        if 'None' not in ''.join(splitLine):
            for word in splitLine:
                word = word.strip('[')
                word = word.strip(']')
                word = word.strip("'")
                dctVarInfo[word].append(strConfederation)

    dctNeighboringCountries = collections.defaultdict(list)
    for country in dctVarInfo.keys():
        for checkCountry in lsVariables:
            if country != checkCountry:
                if dctVarInfo[country][0] == dctVarInfo[checkCountry][0]:
                    if checkCountry not in dctNeighboringCountries[country]:
                        dctNeighboringCountries[country].append(checkCountry)
                if dctVarInfo[country][1] == dctVarInfo[checkCountry][1]:
                    if checkCountry not in dctNeighboringCountries[country]:
                        dctNeighboringCountries[country].append(checkCountry)

    dctAssignments = {}
    if len(lsVariables) >= 20:
        consistencyCheck = 'hc'
    else:
        consistencyCheck = 'bc'
    print("Size of variables is %s using: %s" %
          (len(lsVariables), consistencyCheck))
    cspProblem = CSP.CSP(lsVariables, dctVarInfo, dctDomains,
                         dctNeighboringCountries, None)
    solve = SearchAndCheck.SearchAndCheck(cspProblem)
    if consistencyCheck == 'bc':
        solution = solve.BacktrackSearch(dctAssignments, consistencyCheck)
    else:
        solution = solve.HillClimbing(1000, dctAssignments)
    if solution is not None:
        with open("output.txt", 'w') as openFile:
            finalSolution = collections.defaultdict(list)
            for country, group in solution.iteritems():
                finalSolution[group].append(country)
            openFile.write("Yes")
            for group in finalSolution.keys():
                countries = ','.join(finalSolution[group])
                openFile.write('\n')
                openFile.write(countries)

    else:
        with open("output.txt", 'w') as openFile:
            openFile.write("No")
    end = time.time()
    print(end - start)