SOLNP – Solver pro nelineární optimalizaci

Symbol blokuPotřebná licence: MATRIX
Qt SVG Document Exported by REXYGEN Studio uBlk uXb uIb uHes HLD cmd yX yF E iE SOLNP

Popis funkce
Blok SOLNP je navržen k řešení obecného problému nelineárního programování (NLP) ve tvaru

minf(x)

s omezeními

g(x) = 0, lh h(x) uh, lx x ux,

kde

  • x n je vektor návrhových proměnných, které mají být optimalizovány,
  • f(x) je ztrátová funkce (objektivní funkce),
  • g(x) je vektor rovnostních omezení,
  • h(x) je vektor nerovnostních omezení,
  • lh je vektor dolních mezí nerovnostních omezení,
  • uh je vektor horních mezí nerovnostních omezení,
  • lx je vektor dolních mezí návrhových proměnných,
  • ux je vektor horních mezí návrhových proměnných.

Řešič SOLNP se snaží najít optimální řešení x = argminxf(x) 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 [15] a [16]. Obecně jsou f, g a h 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ů: x0.
  • Matice xb definující rozsah návrhových proměnných xb = [lx,ux].
  • Matice uIb definující nerovnostní omezení: uIb = [lh,uh] (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 uXb:

  1. uXb = [x0,xb]: řešič použije zadaný počáteční odhad i meze pro návrhové proměnné.
  2. uXb = x0: řešič použije pouze zadaný počáteční odhad.
  3. uXb = xb: řešič použije pouze zadané meze pro návrhové proměnné. Počáteční odhad je automaticky vypočten jako x0 = lx+ux 2 .

Vektor uXb 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 x).

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)

2024 © REX Controls s.r.o., www.rexygen.com