WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimale Stationierung

 

XxneedhelpxX
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 28.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.12.2021, 15:10     Titel: Optimale Stationierung
  Antworten mit Zitat      
Hallo,
ich muss für meine Projektarbeit die optimale Stationierung von Rettungshubschraubern rausfinden. Die Aufgabe soll ich mit Hilfe des k-means Algorithmus lösen.
Es stehen 3 Hubschrauber zur verfügung und es gibt 109 Skigebiete.
Die Frage ist, wo diese Hubschrauber stationiert werden sollen.
Die Standorte der Skigebiete sind in x und y Koordinaten angegeben und die Unfallhäufigkeit der Skigebiete ist als Zahl angegeben
Es gibt mehrere Lösungsansätze, jedoch soll ich die gewichtete Mittelbildung als Lösungsansatz verwirklichen.

Diese Aufgabe soll mit Hilfe des k-means Algorithmus gelöst werden. Der Pseudocode ist wie folgt:

1. Anzahl der gewünschten Cluster wählen (hier K-Rettungshubschrauber)
2. K zufällige Skigebiete als mögliche Rettungshubschrauberstandorte auswählen
3. Distanz aller Skigebiete zu den gewählten Hubschrauberstandorten berechnen
4. Skigebiete werden dem Hubschrauberstandort mit dem geringsten Abstand zugewiesen
5. Den gewichteten Mittelwert (auch Schwerpunktgenannt) jedes Clusters bestimmen.
6. Als neue Clusterpunkte beziehungsweise Hubschrauberstandorte wählt man die Skigebiete, mit dem geringsten Abstand zu den einzelnen Schwerpunkten
7. Wenn sich die Cluster unterscheiden, wiederhole (3)-(6). Wenn sich seit dem letzten Durchlaufnichts verändert hat, breche ab.
8. ENDE

Ich würde mich sehr über eine Hilfe bei dem k-means Algorithmus freuen, die Lösung wäre natürlich optimal, es reicht aber auch nur eine Idee oder eine Veranschaulichung, wie der Algorithmus aussehen muss.
Natürlich muss der Algorithmus in Matlab funltionieren.

Ich bedanke mich jetzt schonmal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.12.2021, 17:34     Titel:
  Antworten mit Zitat      
Hallo,

was hast du denn versucht?
kmeans ist ja in MATLAB schon implementiert. Es kann natürlich sein, dass du das zur Übung selbst implementieren sollst. Dann bringt es aber wenig, wenn man dir die Lösung hinschreibt. Ebenso gut kannst du die Toolbox-Funktion oder File Exchange-Einträge ansehen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
XxneedhelpxX
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 28.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2022, 14:50     Titel:
  Antworten mit Zitat      
Ich habe jetzt mal diesen Code für den kmeans Algorithmus erstellt. Würde mich freuen wenn es Verbesserungsvorschläge oder so gibt:)
Für A wird eine Matrix verwendet, die die gewünschten Koordinaten besitzt.
Dort wo die Smileys sind sind bei meinem Code das doppelpunlt zeichen ":"
Keine Ahnung warum das so ist


function X = kmeans(A,S,M)
%Input : −Datenpunkte als Zeilen in Matrix A ,
% − Clusterpunkte als Zeilen in Matrix S ,
% − Anzahl der Durchlaeufe M des Algorithmus
%Output : Matrix X, in der jeder Datenpunk t durch den
% naechst gelegenen Cluster punkt ersetzt wurde

N=size(A,1); %Def. Anzahl der Datenpunkte
X=zeros(size(A)); %Def. Outputmatrix

for m=1:M % Durchlaufschleife des Algorithmus

K=size(S,1); %Def. Anzahl Clusterpunkte
D=zeros(N,K); %Def. einer "Distanzmatrix"
L=zeros(N,1); %Def. eines "Labelvektors"
Z=zeros(N,1); %Def. eines Hilfsvektors

% Clustering
for i=1:N % Bestimme naechstgelegenen
% Clusterpunkt zum i−ten Datenpunkt
for k=1:K % Bestimme Distanz vom i−ten Datenpunkt
% zum k−ten Clusterpunkt
D(i,k)=norm(A(i,Smile - S(k,Smile);
end
[Z(i), L(i)] =min(D(i,Smile); %Setze L(i) als den Index des
% Abstands−minimierenden Clusterpunkts
end

% Berechnung der neuen Clusterpunkte
S=zeros(size(S)); % Loesche alte Clusterpunkte
n=zeros(K,1); % Def. "Zaehlvektor"

for i=1:N % Summiere alle Datenpunkte mit gleichem Label
l=L(i); % Def. Label des i−ten Datenpunktes
S(l,Smile=S(l,Smile+A(i,Smile;
n(l)=n(l)+1; % Erhoehe Zaehler zum l−ten Label
end

for k=1:K % Teile die Summen durch die Anzahl der Summanden
S(k,Smile=1/n(k)*S(k,Smile;
end

end

for i=1:N % Def. i−te Zeile der Outputmatrix durch den zum
% i−ten Datenpunkt naechst liegenden Clusterpunkt
l=L(i);
X(i,Smile=S(l,Smile;
end

end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.01.2022, 15:12     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Dort wo die Smileys sind sind bei meinem Code das doppelpunlt zeichen ":"
Keine Ahnung warum das so ist

Du kannst die Code-Umgebung verwenden und/oder die Smilies deaktivieren.

Spricht etwas gegen die Verwendung der fertigen kmeans-Funktion (die du momentan mit deiner Funktion überlagerst)? Du könntest die Ergebnisse deiner Funktion mit denen von der Standardfunktion vergleichen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
XxneedhelpxX
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 28.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2022, 15:45     Titel:
  Antworten mit Zitat      
Wenn ich versuche die kmeans Funktion von Matlab aufzurufen, steht dort dass die Funktion nicht gefunden wurde
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.01.2022, 16:03     Titel:
  Antworten mit Zitat      
Hallo,

hast du denn die Statistics and Machine Learning Toolbox?
Ansonsten bieten sich wie gesagt Implementierungen auf File Exchange an.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.