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
Ejemplo n.º 2
0
    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')
Ejemplo n.º 3
0
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])
Ejemplo n.º 5
0
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(' * ')
Ejemplo n.º 6
0
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