Je dois générer la population initiale d'un algorithme génétique. Considérez le vecteur suivant:
new_population = numpy.random.uniform(low=0.1, high=50.0, size=pop_size)
3 Réponses :
Comme il semble que les gammes de chromosomes soient codées en dur, je vous suggère de générer tous les numéros avec un seul numpy.random.uniforme () avec la plus petite plage dont vous avez besoin, c'est-à-dire 0,1-10 dans votre exemple, puis vous Multipliez ce numéro obtenu par le ratio suivant: P>
want_range / base_range p>
Dans votre exemple, vous seriez multiplier par 10. (Notez que les rapports entre les étapes et les gammes doivent être identiques pour cette méthode) P>
De cette façon, vous pourriez rencontrer des problèmes lorsque le ratio des limites de l'étape vs ne correspondra pas.
Tu as raison, je finissais toujours pour modifier ma réponse
Vous n'avez pas donné suffisamment de données pour voir un modèle pour le code plus court.
Cependant, vous pouvez effectuer ce qui suit: Faites une liste de listes où chaque subliste est composé des éléments suivants: Initialise une matrice numpie vide, c'est-à-dire limites = [[bas, Haute, étape], ...] code> p>
new_population = np.empty (23) code>
Et après cela, vous pouvez simplement faire boucler les limites avec une boucle et générer chaque élément: p>
Le pouvant être utilisé directement sur des tableaux d'entrées. P> Numpy.Vectorize Code> Decorator vous permet de définir facilement des fonctions qui agissent sur des tableaux de valeurs, un élément à la fois. Vous pouvez définir votre cas spécifique comme