def queens(n_queens=16): fitness_fn = mlrose.Queens() problem = mlrose.DiscreteOpt(length=n_queens, maximize=False, fitness_fn=fitness_fn, max_val=n_queens) return problem
start_fit_time = tt.time() best_state, best_fitness,fitness_curve = mlrose.random_hill_climb(problem,max_attempts = 500, max_iters = 500,restarts=0,init_state = istate, random_state = 1,curve=True) end_fit_time = tt.time() it = len(fitness_curve) time = end_fit_time - start_fit_time tpi = time/it print('Flip Flop') print(f'sa, input size: {p},time={time}, iterations={it}, time per iteration={tpi}') for p in ps: fitness_1 = mlrose.Queens() problem = mlrose.DiscreteOpt(length = p, fitness_fn = fitness_1, maximize = False, max_val = p) schedule = mlrose.ExpDecay() istate = np.arange(0,p) start_fit_time = tt.time() best_state, best_fitness,fitness_curve = mlrose.random_hill_climb(problem,max_attempts = 500, max_iters = 500,restarts=0,init_state = istate, random_state = 1,curve=True) end_fit_time = tt.time() it = len(fitness_curve) time = end_fit_time - start_fit_time tpi = time/it ips = it/time print('Queens')
import mlrose import numpy as np '''Simulated Annealing''' fitness = mlrose.Queens() schedule = mlrose.ExpDecay() problem = mlrose.DiscreteOpt(length=8, fitness_fn=fitness, maximize=False, max_val=8) # Define initial state init_state = np.array([1, 1, 1, 1, 1, 1, 1, 5]) # Set random seed np.random.seed(1) # Solve problem using simulated annealing opt_state, opt_fit = mlrose.simulated_annealing(problem, schedule=schedule, max_attempts=100, max_iters=10000, init_state=init_state) print('The best state found is (SA): ', opt_state) print('The fitness at the best state is (SA): ', opt_fit) #RHC
print('Simulated Annealing: ') print("Accuracy: ", aveAccuracyScoreSA) print('Genetic Algorithm: ') print("Accuracy: ", aveAccuracyScoreGA) print( '///////////////////////////////////////////////////////////////////////////////' ) edges = [(0, 1), (1, 4), (1, 3), (2, 4), (3, 7), (4, 5), (4, 6), (5, 6), (5, 7), (6, 7), (5, 3), (0, 3), (0, 2), (1, 7), (1, 6), (0, 4), (1, 2), (3, 4), (8, 0), (8, 4), (8, 2), (8, 1)] weights = [3, 4, 5, 7, 9, 6, 10, 11] values = [1, 2, 3, 4, 5, 6, 7, 8] maxWeightPct = 2 fitnessArray = [ mlrose.Queens(), mlrose.MaxKColor(edges), mlrose.Knapsack(weights, values, maxWeightPct) ] titleArray = ['Queens', 'Max Color', 'Knapsack'] for x in range(len(fitnessArray)): aveFitnessRHC = 0 aveFitnessSA = 0 aveFitnessGA = 0 aveFitnessM = 0 aveTimeRHC = 0 aveTimeSA = 0 aveTimeGA = 0 aveTimeM = 0 for y in range(0, 10): print('Results for: ', titleArray[x])
import mlrose # a library of common optimization problems such as n-queens ans TSP import numpy as np ''' THE 8-QUEENS PROBLEM Having an 8x8 chess board and 8 queen pieces, what is the optimal way to place each piece such that no one piece can attack the other? Pre-requisite- Knowledge of chess that the queen piece can attack in any direction ''' #define our fitness function fitness_func = mlrose.Queens() # the n-queens is a discrete state optimization problem since the values are integers # these integers represent the column position and their indices, the row position optimization_problem = mlrose.DiscreteOpt(max_val=8, maximize=False, length=8, fitness_fn=fitness_func) # maximize=False since we are trying to reduce number of attacking pairs(queen pieces) init_state = np.array([0, 1, 2, 3, 4, 5, 6, 7]) # Define initial state def visualize_state(state): vizualiation_board = [] for i in range(len(state)): row = [] for j in range(len(state)): if state[i] == j: row.append(' Q ') else: row.append(' * ')
def KQueens(numQueens, sizeOrIterations): fitness = mlrose.Queens() problem = mlrose.DiscreteOpt(length = numQueens, fitness_fn = fitness, maximize = False, max_val = numQueens) rhcfitnessMatrix = [] safitnessMatrix = [] genalgfitnessMatrix = [] mimicfitnessMatrix = [] numIterations = 10000 dataPoints = 100 #rhc print("Begin RHC") startingTime = time() for i in range(numIterations): if i % dataPoints == 0 and not sizeOrIterations or i == 1000 and sizeOrIterations: print("RHC I: " + str(i)) t0 = time() best_state, best_fitness = mlrose.random_hill_climb(problem, max_attempts=100, max_iters=i, init_state=None) finish = time() - t0 currentTime = time() - startingTime print("CurrentTime: " + str(currentTime)) rhcfitnessMatrix.append((i, best_fitness, finish)) finishtime = time() - startingTime print("Finish Time: " + str(finishtime)) #simulated annealing schedule = mlrose.ExpDecay() startingTime = time() for i in range(numIterations): if i % dataPoints == 0 and not sizeOrIterations or i == 1000 and sizeOrIterations: print("SA I: " + str(i)) t0 = time() best_state, best_fitness = mlrose.simulated_annealing(problem, schedule = schedule, max_attempts = 100, max_iters = i, init_state = None) finish = time() - t0 currentTime = time() - startingTime print("CurrentTime: " + str(currentTime)) safitnessMatrix.append((i, best_fitness, finish)) finishtime = time() - startingTime print("Finish Time: " + str(finishtime)) #genetic alg startingTime = time() for i in range(numIterations): if i % dataPoints == 0 and not sizeOrIterations or i == 1000 and sizeOrIterations: print("GA I: " + str(i)) t0 = time() best_state, best_fitness = mlrose.genetic_alg(problem, pop_size=200, mutation_prob=0.1, max_attempts=100, max_iters=i) finish = time() - t0 currentTime = time() - startingTime print("CurrentTime: " + str(currentTime)) genalgfitnessMatrix.append((i, best_fitness, finish)) finishtime = time() - startingTime print("Finish Time: " + str(finishtime)) #mimic startingTime = time() for i in range(numIterations): if i % dataPoints == 0 and not sizeOrIterations or i == 1000 and sizeOrIterations: print("Mimic I: " + str(i)) t0 = time() best_state, best_fitness = mlrose.mimic(problem, pop_size=200, keep_pct=0.2, max_attempts=100, max_iters=i) finish = time() - t0 currentTime = time() - startingTime print("CurrentTime: " + str(currentTime)) mimicfitnessMatrix.append((i, best_fitness, finish)) finishtime = time() - startingTime print("Finish Time: " + str(finishtime)) if not sizeOrIterations: writeToExcel.writeOptimzationProblem(rhcfitnessMatrix, safitnessMatrix, genalgfitnessMatrix, mimicfitnessMatrix, "QueensIterations.xlsx") return None else: return rhcfitnessMatrix, safitnessMatrix, genalgfitnessMatrix, mimicfitnessMatrix