W przypadku gry, w którą gram, chciałbym poznać najszybsze zamówienie na budowę kilku budynków. Gra, o której mowa, to OGame, jeśli ją znasz, to jest plus, ale oczywiście wyjaśnię podstawy gry:Jakiego algorytmu użyć, aby obliczyć najszybsze zamówienie na budowę budynków?
- Gracz ma dostęp do wielu różnych zasobów.
- Gracz może budować budynki, maksymalnie jeden budynek naraz.
- Budynki mają różne poziomy, na przykład Budynek A poziom 1, Budynek A poziom 2 itp.
- Koszt zasobów na budowę budynków wzrasta na poziom.
- Budynki też mają dużo czasu na budowę, to także zwiększa się na poziomie.
- Niektóre budynki wytwarzają różne zasoby, co również zwiększa się w zależności od poziomu.
- Niektóre budynki zmieniają obliczenia, dzięki czemu budynki budowane są szybciej.
Wybierałem wyraźnie, aby nie wyświetlać równań, ponieważ nie są one proste i nie powinny być potrzebne do zasugerowania algorytmu.
wybrałem model ten z następujących czynności:
- StartUpgradeBuildingAction: Ta akcja rozpoczyna proces aktualizacji poprzez odjęcie kosztów od dostępnych zasobów.
- FinishUpgradeBuildingAkcja: Ta czynność kończy proces aktualizacji, przechodząc do przodu w czasie. To także wytwarza zasoby.
- WaitAction: Ta akcja przekazuje czas do X sekund, a tymczasem produkuje zasoby zgodnie z produkcją zasobów.
Należy zauważyć, że przestrzeń stan jest nieskończony i mogą być charakteryzowane przez fakt, że istnieje wiele ścieżek do ostatecznej konfiguracji (gdzie wszystkie wymagane budynki zostały zbudowane), każdy ewentualnie mający inny czas trwa i inną ilość zasobów, którą w końcu otrzymujesz. Teraz najbardziej interesuje mnie ścieżka (kolejność), która jest najszybsza, a jeśli istnieje wiele równych ścieżek, wówczas preferowana powinna być ścieżka, która kosztuje najmniejszą.
Próbowałem już następujące metody:
- wszerz wyszukiwania
- Depth-First Search
- Iterative Pogłębienie Depth-First Search
- Iterative Pogłębienie A *
- A * Wyszukaj
Niestety Wszystkie z tych algorytmów trwają zbyt długo lub zużywają zbyt dużo pamięci.
Jak googling nie dał mi jakieś dodatkowe przewody, pytam tu następujące pytania:
- Czy istnieje już istniejący model, który pasuje do mojego problemu? Wydaje mi się, że na przykład już wcześniej napotkaliśmy ten typ problemu.
- Czy istnieje algorytm, który daje najlepsze rozwiązanie? Jeśli tak, to jaki?
- Czy istnieje algorytm, który zapewnia rozwiązanie zbliżone do najlepszego rozwiązania? Jeśli tak, to jaki?
Każda pomoc jest doceniana.
Firmy są skłonne zadowalać się wystarczająco szybką odpowiedzią, która wymaga mniej pamięci do rozwiązania. O ile jest to wystarczająco dobre, spróbuj najpierw zbudować budynki, które zapewniają zasoby, a następnie zbuduj inne budynki. Nie zapomnij wziąć pod uwagę czasu zmarnowanego, gdy nie masz środków na zbudowanie czegokolwiek. –