0
votes

Numpy aléatoire - Spécifiez plusieurs limites et étapes

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)


0 commentaires

3 Réponses :


1
votes

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:

want_range / base_range

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)


2 commentaires

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



1
votes

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: limites = [[bas, Haute, étape], ...]

Initialise une matrice numpie vide, c'est-à-dire new_population = np.empty (23) Et après cela, vous pouvez simplement faire boucler les limites avec une boucle et générer chaque élément: xxx


0 commentaires

0
votes

Le Numpy.Vectorize 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 xxx

pouvant être utilisé directement sur des tableaux d'entrées. xxx


0 commentaires