Załóżmy, że istnieje kratka zawierająca obie ściany (zablokowane komórki) oraz żywność umieszczona w dowolnym miejscu na siatce.Optymalny algorytm lokalizacji kolonii mrówek
Załóżmy teraz staramy się zdecydować optymalną lokalizację na miejsce kolonii mrówek w tej sieci, tak że mrówki muszą podróżować najmniejszą odległość (w dowolnym kierunku do/od punktu startowego kolonia), aby uzyskać maksymalną ilość jedzenia.
Dotychczas najlepszym podejściem mam wymyślić jest następujący:
for each square on the grid
use a shortest path algorithm to find the distance to/from each food source from this square
sum these distances to find a number and put the number in that square
select the square with the smallest number
Czy podejście to jeszcze działa? Czy istnieje bardziej wydajne rozwiązanie?
Optymalizacja polegałaby na śledzeniu najkrótszej odległości i zatrzymywaniu obliczania "sumy najkrótszych ścieżek", która przekracza. – tofi9
Nie jest jasne, jaką funkcję chcesz tutaj zoptymalizować. Czy peletki żywnościowe są tego samego rozmiaru? Załóżmy, że w punkcie (0,0) znajduje się osad (4,0). Czy lepiej mieć kolonię w (0,0) (na wierzchu pelletu i 4 jednostki z drugiego peletka), czy też mieć kolonię w (2,0) (w połowie drogi między dwoma peletami)? Jeśli cenisz pellet jako wartość żywności/odległość, pierwsze jest lepsze. Jeśli cenisz pellet jako wartość żywności - odległość, wszystkie pozycje między peletami są równie dobre. Czy mrówka może przenosić cały osad z powrotem do kolonii w trakcie jednej podróży? –
@robmayoff Myślę, że "takie, że mrówki muszą pokonać najmniejszą odległość" jest całkiem jasne - OP stara się zminimalizować sumę odległości między jednym konkretnym punktem a wszystkimi komórkami zawierającymi żywność. –