Создание эффективной техники локального поиска в Python для латинских квадратов - PullRequest
2 голосов
/ 25 апреля 2020

Мне в основном нужно создать технику локального поиска, используя функцию стоимости. Мне нужно создать новую функцию, которая случайным образом меняет исходное решение в латинском квадрате, затем вычисляет стоимость и, если она лучше, чем исходное решение, меняются местами. Это нужно делать до тех пор, пока либо функция стоимости не станет равной 0, либо не будет выполнено достаточное количество итераций. Любая помощь вообще будет высоко ценится. Спасибо!!

     def cost(sol):

nolist1 = [i for i in range(0,dim)]

costcol = []

missno = []

for i in range(0,dim):

    nolist1 = [i for i in range(0,dim)]

    for j in range(0,dim):

        for k in range(0,len(nolist1)):

            if sol[j][i] not in nolist1:

                continue

            elif sol[j][i] == nolist1[k]:

                nolist1.remove(sol[j][i])

    missno.append(nolist1)

    costcol.append(len(missno[i]))

totalcost = sum(costcol)

return(totalcost,costcol,missno)

cost = cost(sol)
...