|
|
Constraints: Zahlen nicht zwischen a und b |
|
tomsra101 |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 10.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.10.2013, 10:57
Titel: Constraints: Zahlen nicht zwischen a und b
|
 |
Hi Leute,
ich hab nen fmincon Optimierer in meinem Skript benutzt und habe auch alle constraints bis auf eine formuliert.
Es gilt: ub=ones(N,1) und lb=zeros(N,1)
Nun würde ich allerdings gerne die Bedingung an den Optimierer weitergeben, dass für alle N Koordinaten gilt, dass sie entweder =0 oder >=a sind, wobei a eine Zahl zwischen 0 und 1 ist.
Selbstverständlich gilt das für jede Koordinate einzeln, d.h. einige können 0 sein, während andere >=a sind.
Kann mir einer weiterhelfen??
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.10.2013, 12:36
Titel:
|
 |
Hallo,
fmincon und ähnliche Solver erfordern an sich, dass die Parameter kontinuierlich variiert werden können.
Für kleine N wäre das einfachste, alle Kombinationen p(i) = 0 oder p(i) >= a durchzutesten. Wenn zu erwarten ist, das nur wenige p(i) ~= 0 sind (z.B. weniger als 5), dann reduziert das die Anzahl der durchzutestenden Kombinationen und macht es somit auch für etwas größere N praktikabel.
Ansonsten muss man sich besondere Strategien (z.B. ga oder bintprog in Kombination mit einem 'normalen' Solver) überlegen.
Grüße,
Harald
|
|
|
tomsra101 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 10.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.10.2013, 12:48
Titel:
|
 |
danke schon mal für deine antwort harald
N=106 und ich nehm an mehr als 16 p(i) können nicht 0 sein
allerdings muss ich dann trotzdem (106!)/(90!) möglichkeiten testen und das läuft dann saulange :/
gibts da nicht noch ne einfachere lösung?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.10.2013, 13:31
Titel:
|
 |
Hallo,
das kommt auch darauf an, wie groß die Schranke relativ zu den typischen Größen ist, und wie groß der Einfluß auf die Zielfunktion ist.
Wenn die Schranke recht klein ist, könnte man kleine Einträge einfach auf 0 setzen.
Ansonsten bleiben nur die vorher genannten alternativen Strategien.
Falls es sich um eine Anwendung aus dem Bereich Portfoliooptimierung handelt würde ich auch einen Blick in die fertige Funktionalität der Financial Toolbox werfen. Vielleicht ist das dort ja sogar schon abgedeckt.
Grüße,
Harald
|
|
|
tomsra101 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 10.09.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.10.2013, 14:06
Titel:
|
 |
Zitat: |
Wenn die Schranke recht klein ist, könnte man kleine Einträge einfach auf 0 setzen. |
Wie genau meinst du das?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.10.2013, 15:38
Titel:
|
 |
Hallo,
sagen wir, dass p(1) >= 1e-6 sein soll oder = 0. Typische Werte von p(1) sind aber meist min. 1000. Wenn Werte zwischen 0 und 1e-6 nur eine geringe Auswirkung auf die Zielfunktion haben, könnte man sie dann einfach auf 0 setzen.
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.
|
|