YALMIP dokáže formulovať ľubovolné optimalizačné problémy bez ohľadu na to, či sú ohraničenia a účelová funkcia lineárne alebo nelineárne. Treba si však dôsledne uvedomiť, že nelineárne problémy sú vo všeobecnosti veľmi ťažko riešiteľné. Naviac hrozí riziko, že riešenie bude iba lokálne optimálne.

Ako príklad nelineárnej optimalizácie si zoberme nasledovnú úlohu:

Firma uvažuje, ako má nastaviť cenu produktu tak, aby maximalizovala zisk. Zistila, že ak cena bude x EUR a do reklamy investuje y EUR, potom dokáže predať $2000+4 \sqrt{y} – 20x$ kusov produktov. Naviac výroba jedného kusu produktu stojí 2 eurá a fixné výrobné náklady sú 20000 EUR.

Táto úloha má dve optimalizované premenné:

  • cena ako cenu produktu
  • reklama ako náklady na reklamu

pričom chceme maximalizovať zisk ako rozdiel medzi tržbami a nákladmi. Najskôr zadefinujeme optimalizované premenné:

sdpvar cena reklama

Následne vytvoríme účelovú funkciu:

predane_kusy = 2000 + 4*sqrtm(reklama) - 20*cenatrzby = cena*predane_kusynaklady = 2*predane_kusy + reklama + 20000zisk = trzby - naklady

a povieme YALMIPu, aby riešil problém maximalizácie účelovej funkcie bez ohraničení:

optimize([], -zisk)

Všimnime si, že optimalizujeme zápornú hodnotu zisku. YALMIP totiž štandardne rieši minimalizačné úlohy a teda na maximalizáciu musíme minimalizovať zápornú hodnotu účelovej funkcie.

Optimálne riešenie získame pomocou funkcie value:

optimalna_cena = value(cena)optimalna_reklama = value(reklama)maximalny_zisk = value(zisk)

Pričom ich hodnoty sú nasledovné:

optimalna_cena =   63.2500optimalna_reklama =   1.5006e+04maximalny_zisk =   40025


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *