PathOfBuildingCommunity / PathOfBuildingCommunity/PathOfBuilding

Proof-of-concept Genetic Algorithm Optimization Build

Offen
#5,602 2 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

enhancement
Vorherrschende Sprache
Lua
Sterne
5.4k
Forks
2.4k
Ø Merge
1 T. 12 Std.
Gemergte PRs (30 T.)
26

Beschreibung

Check for duplicates
  • I've checked for duplicate issues by using the search function of the issue tracker
Is your feature request related to a problem?

Yes.

Describe the solution you'd like

I did two separate projects. In the first Lua implementation of the UI and the implementation of the genetic algorithm itself in Rust.

https://github.com/Tiikara/path_of_building_genetic_genetic_lualib - genetic library on rust for lua
https://github.com/Tiikara/pathofbuildinggenetic - PoB with genetic

Describe alternatives you've considered

No response

Additional context

Currently implemented:

  • Genetic algorithm
  • Multithreaded calculation
  • UI interface for setting the values the genetic algorithm will aim for
  • Saving the genetic algorithm settings in Build xml
  • Displaying the best results in the UI during the optimization process
  • Use of conventional nodes
  • Using ascendence nodes
  • Using mastery nodes

Current issues:

  • Slow performance due to long shortest path search (the algorithm takes 20 minutes on my Intel Core i9 12900k and uses 8 gigabytes of memory)
  • Memory leak on optimization restart

What needs to be done before merge:

The 64bit architecture is necessary because of threads' memory usage. The luajit2.0 used in the project now cannot allocate more than 2 Gbytes of memory, that's why I chose https://github.com/openresty/luajit2 without this limitation.

Project dependencies (runtime_x64) https://github.com/Tiikara/pathofbuildinggenetic compiled with Visual Studio 2019

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem verlinkten pathofbuildinggenetic-Fork und seinen runtime_x64-Abhängigkeiten und vergleiche dann die Lua UI und die genetische Rust-Bibliothek mit dem LuaJIT 2.0-Setup des Hauptprojekts. Reproduziere den Optimierungs-Workflow und untersuche die gemeldete Laufzeit von 20 Minuten, den hohen Speicherverbrauch und das Leck beim Neustart. Als abgeschlossen gilt die Definition eines Merge-Plans für 64-bit-Unterstützung und eine Einigung über die verbleibenden Performance- und Speicherprobleme.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
lua, rust
Bereich
desktop, performance
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
15/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.