Wpis z mikrobloga

Mireczki i mirabelki, potrzebuję pomocy z #matlab.
Pisałem algorytm ewolucyjny do rozwiązywania problemu komiwojażera. Potrzebuję zrobić na końcu wykres najdłuższej i najkrótszej ścieżki, gdzie miasta są punktami o wspórzędnych x i y od 0 do 10.
W jaki sposób najlepiej przedstawić te ścieżki graficznie?
#naukaprogramowania #pytanie
  • 14
@Slucham_psa_jak_gra_: Tak. A chodzi mi o samą podpowiedź jakiego narzędzia w matlabie najlepiej użyć do wyświetlania tego typu rzeczy, bo ze środowiskiem mam niewielkie doświadczenie, ale prowadzący sobie zażyczył ( ͡° ʖ̯ ͡°)
@Slucham_psa_jak_gra_: No to przyszło mi do głowy, ale nie jest to zbyt eleganckie rozwiązanie, bo najednym wykresie musiałbym wyświetlić łącznie 20 wektorów, więc traktowałem je jako ostateczność.
Myślałem może nad czymś w stylu wyświetlania grafów skierowanych, ale nie wiem czy to będzie opłacalne.
@Piesa: Tak tylko powiem, że jeśli chciałbyś rzeczywiście narysować to jako wykres punktowy 2d to w zasadzie wystarczyłoby konsekwentnie użyć 2-3 poleceń.
scatter(X,Y) % wyrysowanie wszystkich punktów na mapie 2D.
plot(x,y) % wyrysowanie ścieżki. teraz wystaczyłoby dobrać wektory, czyli jeśli twoje punkty są zapisane jako X,Y a dodatkowo masz macierz K odpowiadającą kolejności to wystarczy:
plot(X(K),Y(K))

Oczywiście można też użyć polecenia line.

Są też polecenia umożliwiające wstawianie opisu na wykres.
@Okcydent: Wystarczyłby, ale byłoby to dużo więcej kodu. Bo jako dane wsadowe mogę zrobić sobie coś w stylu

> mapPlotX = [4 1 8 3 5 7 6 2 9 10];

> mapPlotY = [3 9 7 9 8 8 4 6 5 2];


I wtedy line z tych 2 będzie idealną ścieżką między punktami, czyli tym, czego potrzebuję.

A jak rozumiem jesli na jednym wykresie chcę zrobić 2 różne linie,
@Piesa: Ja założyłbym, że znane są punkty zapisane tak:

mapPlotX = [4 1 8 3 5 7 6 2 9 10];

mapPlotY = [3 9 7 9 8 8 4 6 5 2]


Dodatkowo, każda trasa komiwojażera zapisana jest np tak: [1,2,3,4,...,10] czy tam [1,3,2,5,...], oznaczmy to jako K.

mapPlotX(K) - da mi punkty z mapPlotX uszeregowane względem tego co było w K

a plot(mapPlotX(K),mapPlotY(K), 'b', mapPlotX(K1),mapPlotY(K1),'k')

zrobi te dwie ścieżki