|
|
|
Ganzzahligkeit des Wertebereichs festlegen |
|
| miKOscha |

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 19.10.11
|
 |
|
 |
Wohnort: Dortmund
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.10.2011, 19:25
Titel: Ganzzahligkeit des Wertebereichs festlegen
|
 |
Hallo,
habe im Forum etwas gestöbert, aber nichts passendes zu meinem Problem gefunden!
Es geht um Folgendes: ich etwerfe ein Modell für Personaleinsatzplanung. Die Zielfunktion und die dazu nötigen Variablen habe ich bereits hinterlegt und mit SA im Optimazation Tool gelöst. Allerdings bekomme ich keine positiven gazzahligen Werte und ich kann ja nicht in einer Schicht 2,39 Leute einsetzen!
Kann mir jemand helfen den Wertebereich für meine Entscheidungsvariable vornvorne rein als positiv ganzzahlig festzulegen?!
Wie es z.B. im VBA mit Dim x As Interger geht!
Vielen Dank,
Michael
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 09:05
Titel:
|
 |
Hallo,
für solche Probleme würde ich genetische Algorithmen (doc ga) verwenden.
In MATLAB 2011b ist neu hinzugekommen, dass ga auch Integer-Constraints verarbeiten kann. Davor musste man das manuell machen (und insbesondere Creation Function, Mutation Function und Crossover Function selbst definieren), was das ganze recht mühsam machte.
Abhängig von dem Problem bieten sich teilweise auch Brute Force-Ansätze an: wemn das Minimum bei 2,39 Leuten ist, dann schaue ich halt, ob 2 oder 3 besser sind, und nehme das. Das ist aber eher eine Notlösung.
Grüße,
Harald
P.S.: es gibt in MATLAB auch Integer-Datentypen, z.B. uint8. Integer haben und mit ihnen rechnen sind allerdings zwei vollkommen unterschiedliche Dinge.
|
|
|
|
| miKOscha |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 19.10.11
|
 |
|
 |
Wohnort: Dortmund
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 09:52
Titel:
|
 |
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 09:57
Titel:
|
 |
Hallo,
dein Kommentar ist leer. Ich vermute, du wolltest etwas mehr schreiben?
Grüße,
Harald
|
|
|
|
| miKOscha |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 19.10.11
|
 |
|
 |
Wohnort: Dortmund
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 09:58
Titel:
|
 |
Danke,
aber leider ist es mir in Rahmen meiner Bachelor-Arbeit vorgeschrieben mit Simmulated Annealing in MATLAB zu arbeiten!
Deshalb suche ich fieberhaft nach der Lösung, dass SA mir nur ganzzahlige positive Werte liefert!
Gibt es in MATLAB wirklich keine Möglichkeit den Wertebereich festzusetzen??!
Gruß,
Michael
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 10:08
Titel:
|
 |
Hallo,
nur zur Sicherheit: wir sprechen schon beide von Simulated Annealing (simulannealbnd)?
Was du ansprichst, ginge über 'DataType', 'Custom' und eine custom annealing function, siehe
unter "Algorithm Setting".
Ich würde das jedoch nochmal mit dem Betreuer abklären, da mir genetische Algorithmen hier geeigneter erscheinen. Vielleicht kann man ja sogar beides probieren und die Ergebnisse vergleichen.
Grüße,
Harald
|
|
|
|
| miKOscha |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 19.10.11
|
 |
|
 |
Wohnort: Dortmund
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 10:20
Titel:
|
 |
Ja, ich meine schon das Simulated Annealing (simulannealbnd)!
Und es funktioniert soweit - bis halt auf die Tatsache, dass ich negative und Dezimalwerte bekomme!
Ja, ich spreche meinen Betreuer darauf an! Vielleicht schlägt er mir was vor!
Du hast ja GA vorgeschlagen, das merke ich mir!
Was würdest du davon halten, wenn ich es mit "fmincon Solver" versuchen würde?! Dort kann man ja auch nichlineare Nebenbedingungen hinterlegen!
Gruß,
Michael
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.10.2011, 21:41
Titel:
|
 |
Hallo,
negative Werte kannst du doch durch lb = zeros(N, 1) verhindern.
Heißt funktionieren, dass der Code fehlerfrei durchläuft, oder dass du *gute* Ergebnisse bekommst? Oft weiß man bei einer Minimierung ja nicht, wie gut die Ergebnisse sind - ein Vergleich mit einem anderen Algorithmus wird also wohl nicht schaden?
fmincon ist für Integer-Optimierung ungeeignet, außer du willst den anfangs geschilderten Brute-Force - Ansatz verfolgen.
Wenn du dein Problem genauer beschreiben kannst/darfst, könnte man auch besseren Rat geben...
Grüße,
Harald
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|