www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Ameisen in Matlab
Ameisen in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Ameisen in Matlab: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 18:20 So 01.06.2008
Autor: chrisi99

Der Ameisenalgorithmus ist ja ein bekanntes Verfahren zur Optimierung von div Verfahren oder zum Lösen von Problemen (Handelsreisender etc).

Um eine solche Optimierung zu realisieren würde ich gerne Matlab verwenden.

Leider habe ich bisher nur wenig Erfahrung (hauptsächlich Auswertung von Messdaten etc.) mit ML, weshalb ich etwas "Starthilfe" benötigen würde.

Zu Beginn würde ich gerne das Auffinden von Futterstellen und die danach erfolgende Optimierung des Weges durch die Durftstoffkonzentration die die Arbeiter hinterlassen realisieren.

Leider happert es bei der Umsetzung :(

Könnte mir hier jemand zur Hand gehen? Natürlich freue ich mich auch über halbfertige/fertige Codes oder Codeschnipsel.

so habe ich mir das vorgestellt:

eine Anzahl von Futterstellen wird per Radomfunktion auf dem Gebiet verteilt. Vom "Bau" ausgehend werden zum Zeitpunkt 0 eine Anzahl von Ameisen (etwa 2) ausgesand. Diese klappern so lange die Umgebung ab, bis ihre derzeitige Position mit einer Futterstelle eine gewisse Nähe (Differenz der Koordinaten klein) aufweist, dann kehrt das Programm den Weg (Wegvektor) um -> die Ameise krabbelt in den Bau zurück und legt dabei an Schnittpunkten Duftmarken ab.

(Jede nun ausschwärmede Ameise orientiert sich an vorhandenen Duftstellen um die Futterstelle zu finden...)

Lg
Chris

        
Bezug
Ameisen in Matlab: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:51 Mo 02.06.2008
Autor: BKM

Hallo.

Kannst Du uns hier einmal dein Anfänge reinstellen? Dann können wir uns schon mal das Mathematische Gerüst ansehen und Dir für die Umsetzung Hilfe geben.

Beste grüße

Bezug
                
Bezug
Ameisen in Matlab: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 20:24 Mo 02.06.2008
Autor: chrisi99

was bisher funktioniert ist das Aufsuchen der attraktivsten Koordinate bei Pheromonspuren

mein Problem ist das der Kontrolle der Gesamtfunktion:

ich möchte die Ameisen in Zeitschritten "aussenden", und zwar eine gewisse Anzahl (etwa 5) auf einmal.

Jede Ameise wird durch eine Matrix mit 100x2 Einträgen (die den Wegkoordinaten entsprechen) ausgestattet. 100 ist sozusagen die "Lebensdauer" der Krabbler.

die Ameisen haben 2 "Missionen":

i) hast du kein Futter dann krabble los in die Richtung der höchsten Pheromonkonzentration. Ist kein Pheromon in Sichtweite krabble in beliebige Richtung. Speichere deine Position ab
ii) hast du Futter gefunden arbeite deine Positionsdatenbank rückwärts ab und setze Pheromone bis du im Bau bist.

danach Reset und neu ausschwärmen.


nur wie muss ich die Steuerkonstrukte wählen, damit die Ameisen "gleichzeitig" einen Schritt gehen und dann ihre Agenden checken? Sonst funktioniert die Idee nämlich nicht, da ja die Optimierung auf die "Dichte" des Pheromons aufbaut....


lg
Chris


PS: vielleicht ist die Idee ganz falsch, dann sagt es bitte :D

Bezug
                        
Bezug
Ameisen in Matlab: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 22:32 Di 03.06.2008
Autor: chrisi99



for iter=1:iter_max

    for k=1:ants_max
        
        
        k %zeigt aktuell abgearbeitete Ameise
              
        if iter<=iter_max %solange die Grenze der Iteration nicht überschritten wird
            
            if food==0
                    %Ameise trägt kein Futter
                              
                  
            
            elseif food==1
                
                
                 %Die Ameise kehrt zum Nest zurück und setzt Pheromonmarkierungen
                
                                    
            
            else
                  %Die Ameise stirbt
                        
                  
            end
                  
        
            k=k+1;
        
        else
            iter=1;
            break;
        end
        
        
    end
    
    iter %zeigt aktuellen Iterationsschritt
    iter=iter+1;
    
end


Es funktioniert noch nicht so wirklich... kann mir jemand helfen?

Weiters habe ich noch ein Problem, weil ich ja bei gefundenem Futter "umdrehe" und die Ameisen ins Nest zurück schicken will... hat hier jemand eine Idee?

lg
Chris

Bezug
                                
Bezug
Ameisen in Matlab: Antwort
Status: (Antwort) fertig Status 
Datum: 19:32 Mi 04.06.2008
Autor: Martin243

Hallo,

ich habe mich ein bisschen mit deiner Aufgabe beschäftigt und bin auf einige Schwierigkeiten gestoßen, die man ggf. durch geeignete Modellierung meistern könnte.
Am besten wäre es, wenn du ein Modell einer Ameise entwerfen würdest mit allen Informationen, die sie so mit sich trägt, also z.B.:
zurückgelegt Route, aktueller Routenpunkt, aktueller Zustand, Schrittweite (immer gleich oder zufällig erzeugt?), Sichtweite (auf Futter oder Pheromone), Strategie, ...
Hier bietet sich die objektorientierte Programmierung an, für die Matlab gewisse Befehle bereithält. Vielleicht wirfst du einen Blick auf die Hilfe zu "class" und schaust dir die dort angegebenen Links zu objektorientierter Programmierung an.

Entsprechend solltest du die Karte modellieren mit:
Grenzen, Nestposition (z.B. als Bezugspunkt (0/0)), Futterpositionen, Pheromonpositionen und -konzentrationen.

Auf dem Hinweg müsstest du dann immer die Felder der Ameise aktualisieren und auf dem Rückweg zusätzlich die der Karte. Das Karten-Update könnte aber getrennt stattfinden, so dass alle Ameisen mit demselben Kartenzustand arbeiten würden.

Wenn du diesen Weg einschlagen willst, könnte ich dir evtl. programmiertechnisch unter die Arme greifen, aber es bleiben noch Probleme wie:
- Wie merkt die Ameise, dass sie nicht zwischen zwei starken Pheromonpunkten hin- und herwandert?
- Ist eine kartesische Karte die geeignete Darstellung? Ich habe Algorithmen dieser Art immer nur auf Graphen gesehen...
- Sollte man sich für das Pheromschnüffeln nicht etwas Flexibleres einfallen lassen wie z.B., dass eine Ameise mit einer best. Wahrscheinlichkeit zur stärksten Konzentration wandert, aber nicht 100%ig?

Mach dir ein paar Gedanken und melde dich wieder.

Gruß
Martin

Bezug
                        
Bezug
Ameisen in Matlab: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:20 Mi 04.06.2008
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
Ameisen in Matlab: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:22 Di 03.06.2008
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]