Mixed-Integer Nächste optimale Lösung in Matlab

8

Ist es möglich, die optimale Lösung für ein gemischt-ganzzahliges Problem zu finden? Zum Beispiel würde ich das vereinfachte Problem unten wünschen:

%Vor%

gibt x=[0;0;1] zurück, da dies die nächstliegende Ganzzahllösung für den Zielwert von 0.16 ist. Stattdessen gibt es zur Zeit

zurück
  

Intlinprog wurde angehalten, weil kein Punkt die Einschränkungen erfüllt.

Muss nicht unbedingt intlinprog ausführen. Im Idealfall müsste es auch funktionieren, wenn beq niedrig ist, zum Beispiel 0.14 .

    
Mary 23.06.2017, 15:23
quelle

1 Antwort

6

Sie können einige Slack-Variablen einführen, um bei Bedarf eine Constraint-Verletzung wie folgt zuzulassen:

%Vor%

Anmerkungen

  • Ich habe zwei (positive) Slack-Variablen hinzugefügt, eine für eine positive Constraint-Verletzung und eine weitere für eine negative Constraint-Verletzung.

  • Sie sollten die Puffervariablen mit einem großen Wert bestrafen, andernfalls ist es vorteilhaft, Ihre Beschränkungen mehr als unbedingt notwendig zu verletzen. Ein allgemeinerer Ansatz bestünde darin, einen guten Bestrafungswert basierend auf den Werten in f und Aeq zu bestimmen, zum Beispiel

    %Vor%
m7913d 30.07.2017, 10:11
quelle