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

Simulated Annealing mit Randbedingungen?

 

DeepFritz
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 31.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2017, 17:14     Titel: Simulated Annealing mit Randbedingungen?
  Antworten mit Zitat      
Hallo zusammen,

ich nutze den Simulated Annealing Algorithmus der Optimization-Toolbox.
Ich habe schon gesehen, dass man den Suchraum durch Upper- und Lower Bounds eingrenzen kann. Da jede Evaluierung meiner Zielfunktion extrem aufwendig ist, würde ich diese Einschränkung gerne durch eine Randbedingung erweitern. Mir ist nämlich bekannt, dass die Variablen des Problems sinnvollerweise nur Werte in aufsteigender Reihenfolge annehmen können.
Wenn ich also drei Variablen a, b und c habe, dann muss immer gelten: a>b>c

Diese Möglichkeit scheint die Toolbox merkwürdigerweise nicht vorzusehen (anders als z.B. beim Genetischen Algorithmus). Gibt es da irgendeinen Trick, wie ich sie doch noch einbauen kann?

Ich hatte schon überlegt, Lösungen, die diese Randbedingung verletzen einfach "nachträglich" in der Objective Function auszusortieren, diesen Lösungen also einfach ohne Berechnung einen schlechten Fitnesswert zuzuweisen. Das Problem das ich damit sehe ist, dass die Temperatur dann auch sinkt, wenn tatsächlich gar kein Lösungskandidat berechnet wurde. Habt ihr da evtl. eine Idee?
Private Nachricht senden Benutzer-Profile anzeigen


DeepFritz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 31.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2017, 12:01     Titel:
  Antworten mit Zitat      
Ich habe das Problem gelöst. Wenn man sich die Quelltexte der Toolbox ansieht, kann man erkennen, dass eine spätere Erweiterung um Randbedingungen an einigen Stellen durchaus schon vorgesehen ist. An einigen anderen Stellen fehlt die Umsetzung aber noch.

Prinzipiell ist eine saubere Lösung, d.h. die Erweiterung der Toolbox um Randbedingungen für Simulated Annealing, durchaus machbar.
Sie schien mir nach einigem Herumprobieren aber den Aufwand nicht Wert zu sein. Ich habe daher eine "quick and dirty" Lösung gewählt:

Der eigentliche Würfelprozess, in dem neue Lösungskandidaten erzeugt werden, findet in der jeweiligen Annealingmethode statt. Ich verwende Fast Annealing. Hierzu wird die Funktion "annealingfast.m" aufgerufen, die sich in

..\MATLAB\R20xxb\toolbox\globaloptim\globaloptim

befindet.
Hier habe ich einfach eine While-Schleife um den Würfel herumgelegt, in der ich meine Randbedingungen formuliert habe. Es wird jetzt also einfach so oft neu gewürfelt, bis zufällig ein Ergebnis herauskommt, das alle Randbedingungen erfüllt.
Ein rechnerischer Mehraufwand ist dadurch in meinem Fall nicht spürbar.

Nachteil dieser schnellen Lösung ist natürlich, dass das Ding jetzt nur noch funktioniert, wenn man die Randbedingungen im Quelltext anpasst. Das stört mich aber erstmal nicht.
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.