def franken30(n, my_func, lb, ub, dimension, iteration): X = np.array( [src.solution(my_func, dimension, (lb, ub)) for i in range(n)]) [Xi.initRandom() for Xi in X] for it in range(iteration): X1 = src.op.op_pso(X, src.op.select_random, src.op.mut_pso, src.op.crx_exponential) X = src.op.replace_if_best(X, X1) X = src.op.drop_probability(X) return X
def ge(): X = np.array([src.solution(my_func, dimension, bounds) for i in range(n)]) [Xi.initRandom() for Xi in X] src.solution.updateHistory(X) for it in range(iteration): X1 = src.op.op_pso(X, src.op.select_random, src.op.mut_pso, src.op.crx_exponential) X = src.op.replace_if_best(X, X1) X = src.op.drop_probability(X) src.solution.updateHistory(X) return X
def new_franken10(n, my_func, lb, ub, dimension, iteration): X = np.array( [src.solution(my_func, dimension, (lb, ub)) for i in range(n)]) [Xi.initRandom() for Xi in X] for it in range(iteration): X1 = src.op.op_de(X, src.op.select_random, src.op.mut_pso, src.op.crx_blend) X = src.op.replace_if_best(X, X1) X1 = src.op.op_pso(X, src.op.select_random, src.op.mut_pso, src.op.crx_blend) X = src.op.replace_if_best(X, X1) return X
def pso(n, my_func, lb, ub, dimension, iteration): #instantiate solutions X = np.array( [src.solution(my_func, dimension, (lb, ub)) for i in range(n)]) #initialize solutions [Xi.initRandom() for Xi in X] for it in range(iteration): #1. Select individuals for modification in this round # none - select all. Alternative (bee algorythm) is to select only solutions drawn with fitness-dependant probability #2. de_operator = create an alternative set of solutions X1 using mutation+crossover X1 = src.op.op_pso(X, src.op.select_random, src.op.mut_pso, src.op.crx_exponential) #3. Select individual for the next generation <- accept all X = X1 return X
def pso(): #instantiate solutions X = np.array([src.solution(my_func, dimension, bounds) for i in range(n)]) #initialize solutions [Xi.initRandom() for Xi in X] #just so we can have some animations src.solution.updateHistory(X) # it is not necessary for the grammar for it in range(iteration): #1. Select individuals for modification in this round # none - select all. Alternative (bee algorythm) is to select only solutions drawn with fitness-dependant probability #2. de_operator = create an alternative set of solutions X1 using mutation+crossover X1 = src.op.op_pso(X, src.op.select_random, src.op.mut_pso, src.op.crx_exponential) #3. Select individual for the next generation <- accept all X = X1 src.solution.updateHistory(X) return X
def test_case_one_element(): assert solution([0]) == []
def test_case_empth(): assert solution([]) == []
def test_case_sample(): assert solution([9, 1, 4, 9, 0, 4, 8, 9, 0, 1]) == [1, 3, 2, 3, 0, 0, 0, 0, 0]