OptiLab kam se to sešlo?

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Omezení: meze, projekce, penalizace

Skutečná úloha málokdy dovolí libovolné x. Kloub má dorazy, motor má maximální moment, tloušťka nesmí být záporná. Dvě omezení, která robotika potkává nejčastěji, jsou v solveru, a zbytek je vědomě vynechaný.

Meze na proměnné, a projekce

Nejjednodušší omezení je interval na každou proměnnou zvlášť. Řeší se tak, že se udělá obyčejný krok a pak se výsledek vrátí do boxu:

x ← P(x − α∇f), P(x)ᵢ = min(hᵢ, max(lᵢ, xᵢ))projektovaný gradient

Tady je past, na kterou se naráží pokaždé. Konvergenci nelze posuzovat podle obyčejného gradientu: v bodě, který leží na mezi, gradient nemusí být nulový — tlačí do stěny a stěna tlačí zpět. Kdo čeká na ‖∇f‖ = 0, čeká navždy. Rozhoduje projektovaný gradient, kde se složky tlačící ven přes aktivní mez nulují.

Solver proto u každé proměnné hlásí, jestli je její mez aktivní. To je informace, kterou konstruktér chce vidět: „optimum leží na dorazu" znamená něco úplně jiného než „optimum leží uvnitř".

Penalizace, a proč je vždycky trochu mimo

Obecné omezení g(x) ≤ 0 se dá přidat do účelové funkce jako pokuta za porušení:

f_w(x) = f(x) + w · Σ max(0, gᵢ(x))²kvadratická penalizace

Funguje to, je to triviální na implementaci a má to jednu vlastnost, kterou je poctivé přiznat: výsledek je vždycky mírně nepřípustný. Minimum penalizované úlohy leží kousek za hranicí, protože právě tam se vyplatí vyměnit malou pokutu za větší pokles f. Porušení klesá s rostoucí váhou — a s rostoucí váhou se úloha zhoršuje v podmíněnosti. Je to obchod, ne řešení.

váha wco se stane
maláomezení se skoro nedodrží, ale úloha je dobře podmíněná
velkáomezení téměř platí, ale úloha je špatně podmíněná a hůř se řeší
teoreticky přesné, prakticky neřešitelné

Testy v téhle labce právě tenhle kompromis měří: porušení musí s rostoucí vahou monotónně klesat, a přitom nikdy nesmí být přesně nula.

Co tady vědomě není

Podmínky KKT, aktivní množiny, vnitřní bod, SQP. Jsou to správné nástroje pro obecná omezení a patří do úlohy, která je má — ale postavit je pořádně by znamenalo další labku, ne kapitolu. Poslední kapitola to vypisuje jako díru.

Vzorce v této kapitole

P — projekce na box
P(x)ᵢ = min(hᵢ, max(lᵢ, xᵢ)) [—] krok a zpět dovnitř
∇_P f — projektovaný gradient
na aktivní mezi se ven mířící složka nuluje [—] jinak kritérium nikdy nedoběhne
f_w — kvadratická penalizace
f_w = f + w·Σ max(0, gᵢ)² [—] výsledek je vždy mírně nepřípustný