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

Constraints: Zahlen nicht zwischen a und b

 

tomsra101
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 10.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2013, 10:57     Titel: Constraints: Zahlen nicht zwischen a und b
  Antworten mit Zitat      
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?? Shocked
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.10.2013, 12:36     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
tomsra101
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 10.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2013, 12:48     Titel:
  Antworten mit Zitat      
danke schon mal für deine antwort harald Smile

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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.10.2013, 13:31     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
tomsra101
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 10.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2013, 14:06     Titel:
  Antworten mit Zitat      
Zitat:
Wenn die Schranke recht klein ist, könnte man kleine Einträge einfach auf 0 setzen.


Wie genau meinst du das?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.10.2013, 15:38     Titel:
  Antworten mit Zitat      
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
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 - 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.