/ / Čo fyzicky znamená "Constrviolation" v produkcii Matlab? - matlab, optimalizácia, obmedzenia, nelineárna optimalizácia

Čo znamená "Constrviolation" fyzicky v produkcii Matlab's fmincon? - matlab, optimalizácia, obmedzenia, nelineárna optimalizácia

Používam fmincon v Matlab. Snažil som sa zistiť, čo znamená "constrviolation" pri spustení funkcie a volania výstupu. Keď sa dostanete nemožné riešenie alebo solver končí predčasne, dostanete nenulovú (& non-integer) constrviolation.

Vložil som obrazovku na odkaz. tu zadajte popis obrázku

Hľadal som dokumentáciu a hovorí toznamená "maximálne obmedzujúce funkcie" a nemám tušenie, čo to znamená. Nie je to celočíselné číslo, takže môj prvý odhad bol, že je percento obmedzení porušených (alebo spokojných).

Akákoľvek pomoc by bola ocenená.

odpovede:

0 pre odpoveď č. 1

Len interpretácia daných dokumentov niektorí Optimalizácia-pozadia:

constrviolation

Maximum of constraint functions

Toto je len maximum všetkých chýb absolútnych obmedzení

Príklad:

x0 + x1 = 1
x0 + x1 + x2 = 2

Riešením je nejako:

x = [0.6, 0.5, 0.9]

Konstrviolation je:

max( abs( 0.6 + 0.5 - 1 ), abs( 0.6 + 0.5 + 0.9 - 2 ) ) = max( 0.1, 0 ) = 0.1

To je zlé a technicky znamená: vaše riešenie je nemožné! (má konvergovať na nulu, napríklad 1e-8)

Keďže riešiteľ nekončil veľmi elegantne, nedá vám skutočný stav o probléme (uskutočniteľný vs. nemožný).

Mohlo by byť cenné pridať: Algoritmy vnútorných bodov (ako sa tu používajú) by mohli (niektorí robia, niektorí nie sú) opakovať cez nemožné riešenia a len konečne konvergovať na uskutočniteľnú (ak existujúcu)!

Aj zlé:

firstorderopt

 Measure of first-order optimality

Mali by sa zblížiť aj na nulu (napr. 1e-8)! Nie je dosiahnuté vo vašom príklade!

Teraz existuje veľa možných dôvodov, prečo sa to deje. Keďže ste neposkytli žiadny kód, môžeme len hádať (a nebudeme o ňom spokojní).

Pravdepodobne narazíte na niektoré iterácie ako limit MaxFunctionEvaluations alebo MaxIterations, Pomer funcCount a iterations vyzerajú ako numerické-diferenciácie, ktoré môžu tlačiť počet funkcií volá veľa!