Я пытаюсь сделать так, чтобы при запуске моего кода родители из массива родителей использовались только один раз. Я сократил цифры только для устранения неполадок. Я хочу, чтобы моя программа выбрала из моего массива одну возможную комбинацию. Как только этот элемент выбран, я хочу, чтобы он снова стал непригодным для использования.
Код, который я сейчас использую:
#Importing the needed functions
import pandas as pd
import math
import numpy as np
import matplotlib.pyplot as plt
import random
from itertools import permutations as permutation
#Defining my mating function where I want each parent in the parent array to be only once and not repeat.
def mating (parents):
parent1 = 0
parent2 = 0
parent1 = permutation(parents,2)
parent2 = permutation(parents , 2)
print ("parent1: ", list(parent1))
print ("parent2: ", list(parent2))
#Function used to create my 4 parents and 3 genes
def generateRandom(population , m):
Population = np.random.rand (population,m)
return(Population)
# main code where I am setting returns from the functions to other vairables to call later
for i in range(2):
candidateSolution = generateRandom(4,3)
print ("the solutions: ", candidateSolution)
full_population = mating(candidateSolution
Вывод, который я получаю сейчас, - это перестановка, в которой элемент 0 используется против элементов 1, 2, 3.
Что бы я хотел, чтобы это был случайный родитель, назначенный для родителя 1, и случайный неиспользуемый родитель, чтобы быть родителем 2. Я хотел бы использовать каждого родителя только один раз.
Тема, на которую я смотрел, показала, что я получаю: Пара комбинаций элементов в словаре без повторений
Однако они хотели иметь его там, где элемент 0 используется несколько раз. Я хочу, чтобы он использовался только один раз.