Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Einführung in die Geatpy-Toolbox des genetischen Python-Algorithmus

Eine kurze Einführung in die Geatpy-Toolbox des genetischen Python-Algorithmus

WBOY
WBOYnach vorne
2022-09-09 13:38:562401Durchsuche

【Verwandte Empfehlung: Python3-Video-Tutorial

1. Was ist ein genetischer Algorithmus?

Der genetische Algorithmus ist eine Art Suchalgorithmus, der künstlich durch Simulation des Mechanismus der biologischen Genetik und der natürlichen Selektion erstellt wurde. In gewissem Maße ist der genetische Algorithmus eine mathematische Simulation des biologischen Evolutionsprozesses. Der Überlebensprozess biologischer Populationen folgt im Allgemeinen den darwinistischen Evolutionsprinzipien. Individuen in der Population werden von der Natur aufgrund ihrer Fähigkeit, sich an die Umwelt anzupassen, ausgewählt oder eliminiert. Die Ergebnisse des Evolutionsprozesses spiegeln sich in der Struktur des Individuums wider. Sein Chromosom enthält mehrere Gene. Der entsprechende Zusammenhang zwischen Phänotyp und Genotyp spiegelt die logische Beziehung zwischen den äußeren Merkmalen und dem inneren Mechanismus des Individuums wider. Passen Sie sich durch Kreuzung und Mutation zwischen Individuen an die natürliche Umgebung an. Biologische Chromosomen werden mathematisch oder computermäßig als eine Reihe von Zahlen dargestellt, die manchmal auch als Individuen bezeichnet werden. Die Anpassungsfähigkeit wird anhand eines numerischen Werts gemessen, der einem Chromosom entspricht oder Minimum. 2. Bibliothek für genetische Algorithmen Geatpy

sizes: int – Populationsgröße, also die Anzahl der Individuen in der Population.

ChromNum: int – Die Anzahl der Chromosomen, also wie viele Chromosomen jedes Individuum hat.

Kodierung: str – Chromosomenkodierungsmethode, „BG“: Binär-/Gray-Kodierung; „RI“: echte Ganzzahlkodierung, also eine gemischte Kodierung aus reellen Zahlen und ganzen Zahlen; „P“: Permutationskodierung

Feld: Array - Dekodierungsmatrix

Chrom: Array – Populationschromosomenmatrix, jede Zeile entspricht einem Chromosom eines Individuums.

Lind: int – Chromosomenlänge der Population.

ObjV: Array – Populationszielfunktionswertmatrix, jede Zeile entspricht dem Zielfunktionswert einer Person, jede Spalte entspricht einem Ziel. FitnV: Array – Populationsindividueller Fitness-Spaltenvektor, jedes Element entspricht der Fitness einer Person Individuum, die Mindestfitness beträgt 0

    CV: Array – CV (Constraint Violation Value) ist eine Matrix, die verwendet wird, um den Grad der Verletzung von Constraint-Bedingungen quantitativ zu beschreiben
  • Phen: Array – Populationsphänotypmatrix (d. h. eine Matrix, die aus den Entscheidungsvariablen besteht, die durch jedes Chromosom der Population nach der Dekodierung repräsentiert werden).
  • Wenn Einschränkungen basierend auf der Machbarkeitsregel durch die CV-Matrix festgelegt werden, müssen die Ungleichheitsbeschränkungen ≤ sein und die Gleichheitsbeschränkungen müssen in abs() übergeben werden (da es dem Prinzip folgt, dass je größer der Wert ist, desto größer der Wert). kleiner die Fitness)
  • ea.Problem.
  • init
  • () lbin und ubin (Entscheidungsvariablen-Bereichsgrenzenmatrix) repräsentieren das Öffnen und Schließen des Bereichsintervalls, 1 geschlossenes und 0 offenes Intervall
  • Geatpy-Ergebnisparameter-Einführung
  • success: True oder False, was angibt, ob der Algorithmus erfolgreich gelöst wurde.

stopMsg: Eine Zeichenfolge, die den Grund für das Stoppen des Algorithmus speichert.

optPop: Populationsobjekt, das die Ergebnisse der Algorithmuslösung speichert. Wenn es keine praktikable Lösung gibt, ist optPop.sizes=0. optPop.Phen ist die Entscheidungsvariablenmatrix, optPop.ObjV ist die Zielfunktionswertmatrix.

lastPop: Das Populationsobjekt der letzten Generation, nachdem die Algorithmusentwicklung abgeschlossen ist.

    Vars: gleich optPop.Phen, was die optimale Lösung ist. Wenn es keine praktikable Lösung gibt, ist Vars=None.
  • ObjV: gleich optPop.ObjV, dem Zielfunktionswert, der der optimalen Lösung entspricht. Wenn es keine zulässige Lösung gibt, ist ObjV=None.
  • CV: gleich optPop.CV, hier ist die Matrix für den Grad der Einschränkungsverletzung, die der optimalen Lösung entspricht. Wenn es keine praktikable Lösung gibt, ist CV=None.

startTime: Startzeit der Programmausführung. endTime: Die Endzeit der Programmausführung.

executeTime: Die vom Algorithmus benötigte Zeit. success: True or False, 表示算法是否成功求解。

stopMsg: 存储着算法停止原因的字符串。

optPop: 存储着算法求解结果的种群对象。如果无可行解,则optPop.sizes=0。optPop.Phen为决策变量矩阵,optPop.ObjV为目标函数值矩阵。

lastPop: 算法进化结束后的最后一代种群对象。

Vars: 等于optPop.Phen,此处即最优解。若无可行解,则Vars=None。

ObjV: 等于optPop.ObjV,此处即最优解对应的目标函数值。若无可行解,ObjV=None。

CV: 等于optPop.CV,此处即最优解对应的违反约束程度矩阵。若无可行解,CV=None。

startTime: 程序执行开始时间。

endTime: 程序执行结束时间。

executeTime: 算法 所用时间。

nfev: 算法评价次数

gd: (多目标优化且给定了理论最优解时才有) GD指标值。

igd: (多目标优化且给定了理论最优解时才有) IGD指标值。

hv: (多目标优化才有) HV指标值。

spacing

nfev: Anzahl der Algorithmusbewertungen 🎜🎜gd: (nur verfügbar für Mehrzieloptimierung und die theoretisch optimale Lösung ist angegeben) GD-Indexwert. 🎜🎜igd: (nur verfügbar für Mehrzieloptimierung und die theoretisch optimale Lösung ist angegeben) IGD-Indikatorwert. 🎜🎜hv: (nur für Mehrzieloptimierung verfügbar) HV-Indikatorwert. 🎜🎜spacing: (nur verfügbar für Mehrzieloptimierung) Wert des Abstandsindikators. 🎜

3. Best Practices

3.1 Codebeispiel | f_opt: zeitgenössisches optimales Individuum Der Zielfunktionswert von

f_max=maximaler Funktionswert der heutigen Bevölkerung

f_min Minimum f_avg: Durchschnittsniveau f_std: Standardbeschränkungsniveau

3.2 Best Practices


Verwenden Sie die Geatpy-Bibliothek, um die kürzesten zu lösen gerichteter azyklischer Graph Road

Code [Kürzester Pfad] 1: Verwenden Sie die Geatpy-Bibliothek

header_regex = '|'.join(['{}'] * len(headers))
header_str = header_regex.format(*[str(key).center(width) for key, width in zip(headers, widths)])
print("=" * len(header_str))
            print(header_str)
            print("-" * len(header_str))

[Verwandte Empfehlungen:

Python3-Video-Tutorial
]

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in die Geatpy-Toolbox des genetischen Python-Algorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen