Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: GloGlo 28. 08. 2022, 21:09:05

Název: Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 28. 08. 2022, 21:09:05
Rozumíte někdo mechanismu toho, jak funguje Powell Method - hledání minima/maxima funkce bez použití gradientů? Používám scipy.optimize.minimize ve snaze najít globální maximum mé funkce MyFunction s mnoha proměnnými (500+). (MyFunction je bohužel step function a její derivace je pro jakoukoli hodnotu zero gradient, takže nejde použít metody využívající derivace).

Když to hledání maxima spustím s nějakými náhodnými výchozími hodnotami, třeba to začne na úrovni, kdy moje funkce dá hodnotu -7000000 - tak to většinou udělá celkem rychle progres a najde hodnotu funkce o dost vyšší než ta výchozí hodnota - třeba skončí na -1000000 nebo +500000. Měl jsem zato, že to je tedy maximální hodnota funkce, kterou to dokáže najít a tím jsem měl věc za uzavřenou.

Jenže sem si všimnul, že když si uložím ty koeficienty z toho jakoby nejúspěšnějšího pokusu a spustím hledání znovu s těmito koeficienty jako výchozími hodnotami - tak to v některých případech vrátí výsledek, který je malinko lepší.

Takže jsem si udělal loop, který vypadá takhle:

Kód: [Vybrat]
start = np.random.sample(532)
res = minimize(MyFunction, start, method='Powell')

while True:
   res = minimize(MyFunction, start, method='Powell')
   start = res.x
Takhle se to postupně propracovává k lepšímu a lepšímu výsledku, příklad:

Kód: [Vybrat]
   
      2 1210270.0
      1 1210780.0
      1 1213950.0
    141 1214800.0
      1 1216230.0
      7 1219820.0
      2 1220800.0
      1 1222210.0
      7 1222500.0
      1 1228050.0
      4 1229650.0
     43 1231510.0
     95 1232520.0
     22 1234020.0
     38 1234320.0
      3 1243910.0
     60 1245490.0
     20 1245700.0
     14 1245840.0
      1 1246830.0
      1 1247830.0
    117 1247940.0
     15 1250220.0
     38 1255260.0
     11 1256940.0
     44 1257950.0
     11 1258060.0
    362 1265900.0
     94 1267220.0
      8 1269460.0
    428 1270720.0
    604 1271960.0
     94 1272000.0
      5 1272840.0
    141 1275320.0
      5 1275520.0
    200 1276930.0
Ten druhý sloupeček je aktuální hodnota globálního maxima MyFunction, je vidět, že to hledání funguje. Problém je v tom prvním čísle - to je kolikrát skript spustil minimize() s koeficienty odpovídajícími jedné hodnotě funkce než to našlo vyšší.

Problém je v tom, že jedno to spuštění funkce minimize udělá cca 3-5000 evaluací MyFunction a to na AMD EPYC 7B13 (CPU MHz: 3049.996, BogoMIPS: 6099.99) trvá cca 90-120 sekund. Takže když to bylo aktuálně na hodnotě 1271960, tak trvalo asi 16 hodin než to malinko popostoupilo a našlo vyšší hodnotu.

Máte někdo nápad, jak tohle zrychlit? (Pozn: Už jsem to hodně zrychlil použitím JIT - jedna evaluace MyFunction je teď podle mého odhadu (neměřil jsem) 100x rychlejší než bez JIT - výše uvedeného hodnoty už jsou s JIT)
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 28. 08. 2022, 21:48:23
nikdo ti nezaruci globalni minimum!

ja mel jen cca 5 parametru a derivaci bych mohl pocitat, ale nechtel jsem slozite, takze jsem pouzival nelder-mead simplex, co derivaci nepotrebuje, akorat musis spocitat funkcni hodnotu v pocet_parametru+1 bodech pro kazdy krok.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 28. 08. 2022, 22:01:01
prvni video o powellove metode a bylo to jasne. vzdycky je to problem nalezeni vhodneho startovaciho bodu a smerovych vektoru kam dal pokracovat, nikdy nevis ze jsi spadl jen do lokalniho minima.

vylezt z lokalniho minima muze pomoct metoda simulovaneho zihani, ale jistota na globalni minimum neexistuje.

zrychleni jedine snad paralelnim prohledavanim prostoru parametru, tj. paralelne to apoustet s ruznymi startovacimi body a vektory.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 28. 08. 2022, 22:05:18
nikdo ti nezaruci globalni minimum!

ja mel jen cca 5 parametru a derivaci bych mohl pocitat, ale nechtel jsem slozite, takze jsem pouzival nelder-mead simplex, co derivaci nepotrebuje, akorat musis spocitat funkcni hodnotu v pocet_parametru+1 bodech pro kazdy krok.

Derivaci nemusíš počítat ručně, jsou knihovny, který ti ji spočítají - je to hrozně jednoduchý. (Zkoušel sem JAX, funkce grad)
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 28. 08. 2022, 22:11:26
kdyz derivace nejdou, tak bud ten tvuj powell nebo co jsem mel ja simplexovou metodu.
je to podobne.

ale zkus to zkombinovat se simulated annealing, to umoznuje vyhnuti se lokalnimu minimu. pekny priklad je traveling salesman a simulated annealing.

vzdycky jde o to nalezt vhodnou heuristiku jak generovat dalsi body a jak je zhodnotit.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: Quba 28. 08. 2022, 22:19:02
Bez znalosti toho co optimalizuješ se těžko radí.

Zaměřil bych se na snížení počtu proměnných. Nevím jakou úlohu řešíš, ale optimalizace 500 proměnných bude obecně velmi pomalá. Nelze některé z těch proměnných zafixovat na nějaké rozumné hodnotě a až po nalezení blízkosti extrému tyto proměnné uvolnit a dooptimalizovat?

Jsou opravdu všechny parametry na sobě nezávislé? Nedají se některé vyloučit a dopočítat z ostatních?

Nezkoušel jsi nějaký genetický algoritmus? (Nastavení je zdlouhavé, ale mohlo by to fungovat.  Velmi záleží na typu problému.)

Zajištění globálního extrému stejně nemáš zaručeno. Jediná možnost bude náhodně generovat startovací vektor hodnot a zkoušet optimalizaci.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 28. 08. 2022, 22:20:56
https://www.google.com/url?q=https://citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.722.2134%26rep%3Drep1%26type%3Dpdf&sa=U&ved=2ahUKEwisqbmtrer5AhWRtKQKHai0C3wQFnoECAIQAg&usg=AOvVaw11XOdSnSbbcLxnOJfvkIv8
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 28. 08. 2022, 22:25:10
quba radi dobre, snizit pocet parametru.
nebo pokud maji nektere parametry nejake omezeni (obor hodnot), treba 0-1, to taky muze pomoci.

ja bych masivne paralelizoval, spustit na mnoha strojich s ruznymi starty. nebyl by vypocet v C/C++ rychlejsi nez v pythonu?

je open source vedecka knihovna GSL, tam jsou ruzne metody, nebo Linpack, Lapack.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 28. 08. 2022, 23:07:54
ja bych masivne paralelizoval, spustit na mnoha strojich s ruznymi starty. nebyl by vypocet v C/C++ rychlejsi nez v pythonu?

je open source vedecka knihovna GSL, tam jsou ruzne metody, nebo Linpack, Lapack.

Zkoušel sem všechno, co mě napadlo. Různý starty, různý solvery, různý parametry. S tou metodou, kterou aktuálně používám, se to vždycky někde na dlouho zasekne, než to pak pokračuje - ale to kde se to zasekne je asi dost náhodný, nejde o to, že čím by bylo maximum vyšší, tím by se to sekalo víc.

Jinak ten JIT kompiluje Python podobně jako C/C++, jak sem psal, tak mi to zrychlilo evaluaci funkce odhadem asi 100x.

S tou paralelizací to je zajímavý, jen zatím nevím, jak to udělat.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: Jakub Štech 28. 08. 2022, 23:27:13
Já na tyhle diskrétní/step function problémy rád používám genetiku, stovky až tisíce parametrů jsou spíš ještě menší genotypy. Je normální nechat vyvíjet hotovou neuronovou síť s tisíci neuronů a statisíci synapsemi (např. systém NEAT). Stačí definovat fitness funkci (což už MyFunction přímo je), funkci pro odvození fenotypu z genotypu (což v případě vektoru argumentů pro MyFunction je no-op), a pak už jen pár funkcí pro vytvoření nové generace z předchozí, jednak výběrem nejlepších jedinců, jednak pohlavní kombinací více jedinců a jednak náhodnými mutacemi, kterými to úspěšně překonává lokální maxima.

S tou paralelizací to je zajímavý, jen zatím nevím, jak to udělat.

Spustit pro každé CPU jádro jednu instanci a sbírat výsledky (třeba do souborů) by mělo stačit, ne?
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 29. 08. 2022, 06:18:17
ppripadne to zkusit na grafice, masivni paralelismus tam jde.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 29. 08. 2022, 07:25:21
 :P
prvni video o powellove metode a bylo to jasne. vzdycky je to problem nalezeni vhodneho startovaciho bodu a smerovych vektoru kam dal pokracovat, nikdy nevis ze jsi spadl jen do lokalniho minima.

vylezt z lokalniho minima muze pomoct metoda simulovaneho zihani, ale jistota na globalni minimum neexistuje.

zrychleni jedine snad paralelnim prohledavanim prostoru parametru, tj. paralelne to apoustet s ruznymi startovacimi body a vektory.

Tohle sem našel na netu. Asi bych to měl nějak zkombinovat s tou scipy.optimize.minimize? Netuším jak.  Chvíli sem si s tím hrál a zkoušel upravovat ty parametry - ale že by to dávalo nějaký zajímavý výsledky samo o sobě, to teda fakt vůbec  :D

Kód: [Vybrat]
def simAnneal(utility_func, initial_params, data, numSteps=100000,
  noise_magnitude=0.00001, cooling_rate=0.999):
 
optimal_params = initial_params
params = initial_params.copy()  # lists are mutable, so .copy()
best_utility = utility = utility_func(initial_params, data)
temperature = 1.0

for i in range(numSteps):
temperature *= cooling_rate
# consider using numpy/scipy for params and noise
new_params = [param+gauss(0, noise_magnitude)
  for param in params]
# explicitly passing multiple parameters
new_utility = utility_func(new_params, data)

if (new_utility > best_utility
or random.random()*temperature > new_utility / best_utility):
params, utility = new_params, new_utility
if new_utility > best_utility:
optimal_params, best_utility = params, utility
# print (best_utility)
return optimal_params
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: Quba 29. 08. 2022, 07:45:18
Já dělám optimalizace fyzikálních úloh, kde jsou parametry vždy omezeny, aby měl výsledek fyzikálně smysl. Jde to i ve tvé úloze?
Mají ty optimalizační parametry nějaký reálný základ, tedy obor hodnot, které mohou nabývat? Nebo jsou hodnoty zcela libovolné.

Asi by bylo vhodné v nalezeném minimu zobrazit 2D řezy té optimalizační funkce. Vybrat dvě proměnné a vykreslit graf v okolí minima. Možná se ukáže, že funkce je "velmi divoká" a v tom případě bude optimalizace dosti obtížná. Asi by stálo za to vygenerovat ty řezy pro všechny proměnné a podívat se které parametry tu "divokost" způsobují a zvážit případně omezení hodnot, které mohou nabývat.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 29. 08. 2022, 10:15:50
jestli ma 500+ parametru tak si na tech rezech vykouka ocicka :-)

tolik parametru by mohly mit nejake obchodni transakce?

nebo muze hledat nejlepsi konformaci molekuly a 500 parametru jsou uhly mezi atomy v molekule a pocita nejjnizsi konformacni energii.

simulovane zihani jen k jakekoliv optimalizacni metode pridava upraveny test na mensi nalezenou hodnotu, simulovane zihani v zavislosti na teplote jen umoznuje prijmout i vysledek, ktery ma vyssi hodnotu objektivni funkce a umoznuje tak vylezt na kopec z lokalniho minima.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 29. 08. 2022, 19:43:01
Já dělám optimalizace fyzikálních úloh, kde jsou parametry vždy omezeny, aby měl výsledek fyzikálně smysl. Jde to i ve tvé úloze?
Mají ty optimalizační parametry nějaký reálný základ, tedy obor hodnot, které mohou nabývat? Nebo jsou hodnoty zcela libovolné.

V podstatě mám nějakejch 15 základních faktorů, kdy každej má určitou základní "sílu", jenže každej z těch faktorů má několik vlastností, který ovlivňujou celkovou sílu toho faktoru - no a jednak nevím, jak velkou váhu/důležitost ty vlastnosti mají a pak hlavně mají x možných hodnot a každá z těch hodnot zase hraje jinou roli, pravděpodobně v tom není nějaká zákonitost nebo jí minimálně neznám. V podstatě je ale teda pravda, že mám základní faktory a zbytek jsou jen koeficienty, kdy se to může pohybovat v určitém rozmezí, třeba 0.0-1.0 - tak sem podle toho zkusil nastavit ty bounds a je pravda, že se to zrychlilo - jedna iterace teď netrvá kolem 90 sekund, ale kolem 60. Nevýhoda tohoto postupu ale je, že to resetovalo současnej stav a začalo optimalizovat od začátku :)) Tím sem jakoby zahodil cca tejden výpočtů.. :)) Takže to spíš spouštím paralelně a sem zvědavej za jak dlouho ten novej thread dohoní ten starej :))
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 29. 08. 2022, 19:59:59
jestli ma 500+ parametru tak si na tech rezech vykouka ocicka :-)

tolik parametru by mohly mit nejake obchodni transakce?

nebo muze hledat nejlepsi konformaci molekuly a 500 parametru jsou uhly mezi atomy v molekule a pocita nejjnizsi konformacni energii.

Haha, ne. Snažím se předpovídat výsledky sportovních zápasů podle určité mé metody, která je zřejmě na světě unikátní, ale otázka je, zda to celý vůbec funguje - klidně můžu dospět k tomu, že to nefunguje a že celej tenhle projekt byl jen ztráta času. (Každopádně maximum mé funkce vyjadřuje celkovou ziskovost tý mý metody - proto čím vyšší hodnota tý funkce, tím líp pro mě :)) Aktuálně sem na cca +0,98 % ziskovosti (proti průměru kurzů sázkovek) To je samozřejmě slabý. Na druhou stranu - sázkovky mají cca 3% marži a tu marži to teda asi o procento překonává, takže celkově ta moje metoda asi o 4% překonává práh pravděpodobnosti. (Další věc je, že mám v zásobě metody, který by měly bejt mnohem lepší než ta moje současná, uvidíme.)
.
simulovane zihani jen k jakekoliv optimalizacni metode pridava upraveny test na mensi nalezenou hodnotu, simulovane zihani v zavislosti na teplote jen umoznuje prijmout i vysledek, ktery ma vyssi hodnotu objektivni funkce a umoznuje tak vylezt na kopec z lokalniho minima.

Moc tomu nerozumím, ale jak to propojit s tím Powellem? Právěže mechanismus Powella neznám a nechce se mi studovat (mám za sebou jen středoškolskou matiku tak bych tomu asi stejně nerozuměl). Nicméně to vypadá, že Powell ty směrový vektory nevybírá náhodně, ale podle nějakýho danýho algoritmu - snadno se to dá ověřit tím, že když to opakovaně spustím se stejnejma parametrama, tak to vždycky dá úplně stejnej výsledek a stejný koeficienty. Takže bych nejspíš musel vzít zdroják Powella a to žíhání teda zapracovat do něj, aby to ty směrový vektory nevybíralo podle algoritmu Powella, ale podle toho žíhání ne? Tím bych teda vytvořil úplně novou metodu, jakýhosi žíhanýho Powella, haha. Každopádně toto určitě dělat nebudu :))
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: mikrom 29. 08. 2022, 20:00:53
V podstatě mám nějakejch 15 základních faktorů,
ale potom nerozumiem ako ziskas z 15 faktorov 500+ premennych ako si pisal vyssie

no a jednak nevím, jak velkou váhu/důležitost ty vlastnosti mají a pak hlavně mají x možných hodnot a každá z těch hodnot zase hraje jinou roli, pravděpodobně v tom není nějaká zákonitost nebo jí minimálně neznám.
to by si ale mal skusit najskor analyzovat, aku dolezitost jednotlive faktory maju, lebo takto mi to pripada ze len naslepo spustas nejaku optimalizacnu metodu nad nejakou funkciou o ktorej povahe nemas znalosti.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 29. 08. 2022, 20:22:12
ale potom nerozumiem ako ziskas z 15 faktorov 500+ premennych ako si pisal vyssie


Možná není dobrý, že to nazývám slovem faktor - je to v podstatě objekt a ten má určitý vlastnosti. Každá z vlastností má určitý počet možných hodnot, některý třeba 12, jiný 144 nebo i víc. Takže celkově vzato ten objekt má nějakou sílu, která je daná určitým produktem těch hodnot. No a těch objektů mám 15 :D
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 29. 08. 2022, 21:28:36
Citace
Moc tomu nerozumím, ale jak to propojit s tím Powellem? Právěže mechanismus Powella neznám a nechce se mi studovat (mám za sebou jen středoškolskou matiku tak bych tomu asi stejně nerozuměl). Nicméně to vypadá, že Powell ty směrový vektory nevybírá náhodně, ale podle nějakýho danýho algoritmu - snadno se to dá ověřit tím, že když to opakovaně spustím se stejnejma parametrama, tak to vždycky dá úplně stejnej výsledek a stejný koeficienty. Takže bych nejspíš musel vzít zdroják Powella a to žíhání teda zapracovat do něj, aby to ty směrový vektory nevybíralo podle algoritmu Powella, ale podle toho žíhání ne? Tím bych teda vytvořil úplně novou metodu, jakýhosi žíhanýho Powella, haha. Každopádně toto určitě dělat nebudu :))


zihani a jeho parametr teplota nezasahuje do powellovy nebo jine metody, ktera nalezne vhodny nasledny bod s mensi funkcni hodnotou. ale jen do testu zda se nova iterace vezme, normalne se vezme jen novy bod, ktery ma mensi funkcni hodnotu. zihani ale muze vzit i bod, ktery ma vyssi hodnotu objektivni funkce.

teplota jen urcuje sanci, ze se muze vzit i horsi iterace. a teplota postupne klesa a tak i klesa sance, ze v dalsich iteracich polezeme do kopce.

teplota muze klesat linearne, logaritmicky nebo ji lze obcas i zvysit a ohrat system.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 30. 08. 2022, 00:45:13
zihani a jeho parametr teplota nezasahuje do powellovy nebo jine metody, ktera nalezne vhodny nasledny bod s mensi funkcni hodnotou. ale jen do testu zda se nova iterace vezme, normalne se vezme jen novy bod, ktery ma mensi funkcni hodnotu. zihani ale muze vzit i bod, ktery ma vyssi hodnotu objektivni funkce.

teplota jen urcuje sanci, ze se muze vzit i horsi iterace. a teplota postupne klesa a tak i klesa sance, ze v dalsich iteracich polezeme do kopce.

teplota muze klesat linearne, logaritmicky nebo ji lze obcas i zvysit a ohrat system.

Aha, už rozumím. Takže vzít hodnoty, které mi dal Powell, nechat je projet tím žíháním, a zase poslat do Powella. Takhle to je myšleno, že?

Mně teď nějaký vývojář JAXu poradil, jak tu mojí funkci malinko upravit, aby nebyla derivace zero gradient, takže mi možná nakonec půjde gradient descent, pokud ne, tak to tvoje žíhání zkusím.

Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: tecka 30. 08. 2022, 02:17:35
Právěže mechanismus Powella neznám a nechce se mi studovat
Tak si ho nastuduj. Pokud chceš použít konkrétně Powella, tak bys asi měl vědět proč.

Ale můžu ti předem prozradit, že to je celé nesmysl a přijdeš akorát na to, že favoritem je favorit. Abys vykoumal něco navíc, tak musíš mít informace navíc. A ty nemáš.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: a6b 30. 08. 2022, 06:12:30
Právěže mechanismus Powella neznám a nechce se mi studovat
Tak si ho nastuduj. Pokud chceš použít konkrétně Powella, tak bys asi měl vědět proč.

Ale můžu ti předem prozradit, že to je celé nesmysl a přijdeš akorát na to, že favoritem je favorit. Abys vykoumal něco navíc, tak musíš mít informace navíc. A ty nemáš.

ja bych rekl, ze lepsi by byla analyza hracu podle casu, protoze favoritem se v case stavaji ruzni hraci. multiparametricka optimalizace je podle me vhodnejsi na funkce co se nemeni v case.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 30. 08. 2022, 20:13:22
Právěže mechanismus Powella neznám a nechce se mi studovat
Ale můžu ti předem prozradit, že to je celé nesmysl a přijdeš akorát na to, že favoritem je favorit. Abys vykoumal něco navíc, tak musíš mít informace navíc. A ty nemáš.

No tak samozřejmě, že mám informace navíc! Na tom to je celý postavený. Dám příklad: třeba někdo by měl teorii, že výsledek zápasu záleží na počasí. No tak potom stačí každej zápas a jeho výsledek propojit s datama z nějaký mateorologický databáze a nějak z toho udělat model. (Moje informace se netýkají počasí, ale principiálně to je podobný. Prostě to propojuju s jinou databází.)

A jinak pracuju s datama z free API jedný společnosti, která poskytuje data sázkovým kancelářím. Mají tam třeba i průměr kurzů asi 20 velkých světových sázkovek. Ty mají dohromady průměrnou marži kolem 6,5%. Moje aktuální metoda - když vezmu všechny zápasy dohromady, teď jich je asi 135 tisíc, má celkovou ziskovost na zápas +0,98% (přičemž si myslím, že globální maximum tý mý funkce je kolem 1,5%, ale důkaz pro to v současnosti nemám).  Jedno procento je samozřejmě slabý a nemám šanci na tom zbohatnout - obzvlášť vzhledem k tomu, že český sázkovky mají obecně vzato marži vyšší než těch 6,5% - spíš se pohybuje kolem 8%. Ale na druhou stranu - na to moje jedno procento zisku je nutný se dívat tak, že překonává tu marži 6,5% - takže vlastně to o cca 7,5% překonává práh pravděpodobnosti. To podle mě když už nic jinýho aspoň dokládá, že ty informace, s nimiž pracuju, prostě výsledek ovlivňujou, byť ne nijak zásadně.
Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: Logik 31. 08. 2022, 12:09:25
Jen takovej, možná blbej, nápad:
Zkus pomocí andersona (scipy.optimize.anderson) hledat kořen funkce G, kde je F je tvoje funkce:
G(x) = F(x) - F(scipy.optimize.powell(F, x))

možná to k ničemu nebude, ale mohlo by to urychlit hledání správného minima. Fungovat by to mělo,
pokud platí to, co se mi zdá implicitně tvrdíš, že čím jsi blíže minimu, tím menší zlepšení optimalizace
udělá... a když budeš mít štěstí.... :-)

Pokud to bude fungovat, tak můžeš zkusit v tom vnitřním powellovi omezit počet iterací,
aby to bylo rychlejší...



Název: Re:Jak zrychlit Powell Method (hledání globálního optima funkce)?
Přispěvatel: GloGlo 18. 09. 2022, 12:40:57
Zde je můj sázecí AI projekt - aktuálně se nesnaží docílit co nejvyššího zisku, ale co nejvyšší úspěšnosti predikcí. Co říkáte? :))

http://194.163.128.167:1414/

http://194.163.128.167:1414/history

Current status: 89 games, good predictions: 57 (64.04%), wrong: 32 (35.96%)
Gain: 16670 // Profitability: +18.73% (per game)