func (r SimplexCoupleFormation) CoupleFormation(generation *b.Generation, board *b.BlackBoard) { selRuleta := generation.Selection var padres []c.Parents var part2 []int var tam int = len(selRuleta) / 2 for i := 0; i < tam; i++ { padres = append(padres, c.Parents{Parent1: selRuleta[i]}) part2 = append(part2, selRuleta[i+tam]) } fmt.Println("Selector", selRuleta) fmt.Println("padres", padres) fmt.Println("part2", part2) for i := 0; i < tam; i++ { var rdm int = rand.Intn(len(part2)) p := c.Parents{ Parent1: padres[i].Parent1, Parent2: part2[rdm], } var bol bool = true for _, pa := range padres { if pa.Parent1 == p.Parent1 && pa.Parent2 == p.Parent2 { if len(part2) == 1 { bol = true break } else { i-- bol = false break } } } if bol { padres[i].Parent2 = part2[rdm] fmt.Println("part2", part2) fmt.Println("rdm", rdm) part2 = append(part2[:rdm], part2[rdm+1:]...) fmt.Println("part2", part2) } } generation.ParentsLst = make([]c.Parents, len(padres)) fmt.Println("part2", padres) copy(generation.ParentsLst, padres) }