SOLNP – Solver pro nelineární optimalizaci
Symbol blokuPotřebná licence: MATRIX
Popis funkce
Blok SOLNP je navržen k řešení obecného problému nelineárního programování
(NLP) ve tvaru
s omezeními
kde
- je vektor návrhových proměnných, které mají být optimalizovány,
- je ztrátová funkce (objektivní funkce),
- je vektor rovnostních omezení,
- je vektor nerovnostních omezení,
- je vektor dolních mezí nerovnostních omezení,
- je vektor horních mezí nerovnostních omezení,
- je vektor dolních mezí návrhových proměnných,
- je vektor horních mezí návrhových proměnných.
Řešič SOLNP se snaží najít optimální řešení s využitím metody rozšířeného Lagrangiánu a sekvenčního kvadratického programování (SQP).
Technické detaily lze nalézt v [16] a [17]. Obecně jsou , a libovolné nelineární hladké funkce.
Co se týče implementace, ztrátová funkce, rovnostní a nerovnostní omezení mohou být definovány odděleně, například prostřednictvím bloku REXLANG, který umožňuje definici vlastních funkcí. Jeho výstup y0 je poté zpětně předán do vstupu uBlk bloku SOLNP.
Při formulaci optimalizačního problému, který má být vyřešen blokem SOLNP, mohou být použity následující pomocné proměnné:
- Vektor počátečních odhadů: .
- Matice definující rozsah návrhových proměnných .
- Matice definující nerovnostní omezení: (volitelně, použito pouze pokud optimalizační problém obsahuje nerovnostní omezení).
Blok může být nakonfigurován třemi způsoby na základě vstupního vektoru :
- : řešič použije zadaný počáteční odhad i meze pro návrhové proměnné.
- : řešič použije pouze zadaný počáteční odhad.
- : řešič použije pouze zadané meze pro návrhové proměnné. Počáteční odhad je automaticky vypočten jako .
Vektor může mít jeden, dva nebo tři sloupce; a počet řádků odpovídá počtu návrhových proměnných (rozměr ).
Tento blok nepropaguje kvalitu signálu. Více informací je uvedeno v sekci 1.4.
Vstup
uBlk | Odkaz na spolupracující blok REXLANG | Reference |
uXb | Počáteční odhad a meze pro návrhové proměnné | Reference |
uIb | Meze pro nerovnostní omezení (volitelně) | Reference |
uHes | Uživatelsky dodaná Hessova matice (volitelně) | Reference |
HLD | Pozastavení | Bool |
Parametr
rho | Penalizační parametr pro ztrátovou funkci definovanou pomocí rozšířeného Lagrangiánu 1.0 | Double (F64) |
MaxIterMajor | Maximální počet hlavních iterací 0 400 | Long (I32) |
MaxIterMinor | Maximální počet vedlejších iterací 0 200 | Long (I32) |
delta | Parametr perturbace pro numerický výpočet gradientu 1.79769e+308 double | Long (I32) |
tolerance | Parametr tolerance pro splnitelnost a optimálnost 1.79769e+308 double | Long (I32) |
nmax | Rezervovaná paměť pro pole 10 100000 100 | Long (I32) |
Výstup
cmd | Číslo fáze/příkazu pro spolupracující blok REXLANG | Long (I32) |
yX | Vstupní vektor pro spolupracující blok REXLANG | Reference |
yF | Výstupní vektor pro spolupracující blok REXLANG | Reference |
E | Příznak chyby | Bool |
iE | Kód chyby | Long (I32) |
[Předchozí] [Na začátek] [Výše]
2025 © REX Controls s.r.o., www.rexygen.com