Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Laxion 28. 08. 2021, 13:55:24

Název: Knihovna pro minimalizaci nelineární funkce jako v Excelu
Přispěvatel: Laxion 28. 08. 2021, 13:55:24
Zdravím,
potřebuji zautomatizovat proces výpočtu užitkové funkce. Můj momenátlní problém je, že potřebuji minimalizovat následující funkci:
Kód: [Vybrat]
((x1*math.exp(-10/x2) + x3) - 0.25)**2 + ((x1*math.exp(-20/x2) + x3) - 0.5)**2 + ((x1*math.exp(-30/x2) + x3) - 0.25)**2 + ((x1*math.exp(-30/x2) + x3) - 0.25)**2
Ta funkce navíc může růst o další závorky v závislosti na vstupu (vesměs počtu řádků v excelu).
Potřebuji dostat podobné výsledky jako v excelu. Excel používá GRG (general reduced gradient) algoritmus, který jsem nikde nenašel dostupný v podobě knihovny. Čili se snažím řešit nelineární problém a musí platit, že:
x1 = negativní číslo
x2 = pozitivní číslo
x3 = cokoli
Hledám primárně knihovnu v JAVĚ, ale pokud je to i Python nebo něco, z čeho půjde udělat skript, který budu moct spustit z Javovský aplikace, tak to taky beru, ale radši bych to měl samozřejmě všechno v javě.
V Pythonu jsem zkoušel knihovnu Scipy, která mi ale dává jiné výsledky proměnných x1, x2, x3, ale podobnou hodnotu té minimalizované fce, ale asi to není úplně pravé.

Nemáte někdo zkušenosti s nějakou knihovnou, která by byla schopná mi tu optimalizaci (minimalizaci) vyřešit v podobném duchu jako řešitel v excelu pomocí GRG?

Mockrát děkuji
Název: Re:Knihovna pro minimalizaci nelineární funkce jako v Excelu
Přispěvatel: Laxion 28. 08. 2021, 13:56:34
Omlouvám se za další zprávu, překlikl jsem se. Platí příspěvěk nahoře.
Název: Re:Knihovna pro minimalizaci nelineární funkce jako v Excelu
Přispěvatel: A.P.Hacker 28. 08. 2021, 14:15:08
zkusil bych treba tohle https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.optimize.basinhopping.html

btw. ten vyraz by sel zjednodusit, proc uvadite v takovem dlouhem tvaru?
Název: Re:Knihovna pro minimalizaci nelineární funkce jako v Excelu
Přispěvatel: Wrána diskuze 28. 08. 2021, 14:38:55
hele (https://github.com/shivampadmani/generalized-reduced-gradient-method) chlap s tečkou načele má něco :o :o
Název: Re:Knihovna pro minimalizaci nelineární funkce jako v Excelu
Přispěvatel: _Jenda 28. 08. 2021, 14:56:12
To asi nebude konvexní, že? Pro nekonvexní obecné funkce optimum najít nejde, jsou jenom různé heuristiky, které najdou různá lokální optima a z nich vyberou nejlepší. Která konkrétně je nejlepší pro tvůj případ pak ale vyžaduje vyhodnocení se znalostí konkrétního problému, který řešíš.
Název: Re:Knihovna pro minimalizaci nelineární funkce jako v Excelu
Přispěvatel: alex6bbc 30. 08. 2021, 07:16:33
pro funkci F(x1,x2,x3) slozenou z jednotlivych clenu ((x1*math.exp(-a/x2) + x3) - b)**2
lze jednoduse spocitat prvni a druhe parcialni derivace dF/dx1, dF/dx2, dF/dx3 a d^2F/dx1^2 atd.
a pak uz to je jen sada rovnic pro prvni derivace rovne 0 a v minimu musi byt druhe derivace vetsi nez 0.

takze se uloha zmeni na sadu rovnic.