Polscy naukowcy twierdzą, że lepiej ładować rzadko i więcej, niż często i mniej
Często i mało, czy rzadko, ale do syta? Gdyby chodziło o dietę, większość specjalistów postawiłaby na odpowiedź 1, ale w przypadku magazynowania energii jest odwrotnie. Okazuje się, że więcej można jej zmieścić ładując rzadko, ale do pełna.Taki przynajmniej wniosek płynie z badań przeprowadzonych przez zespół naukowców IChF PAN.
Doświadczenia dotyczyły co prawda wyidealizowanych, dwuwymiarowych układów sieciowych, ale w końcu zasada to zasada. Dr Anna Maciołek, jedna z autorów pracy opublikowanej w Physical Review opisuje ją tak: Chcieliśmy zbadać, jak zmienia się sposób magazynowania energii w układzie, gdy pompujemy do niego energię w postaci ciepła, innymi słowy – lokalnie go podgrzewamy.
Wiadomo, że ciepło w układach się rozprzestrzenia, dyfunduje. Ale czy na gromadzenie energii ma wpływ sposób jej dostarczania; fachowo mówiąc „geometria podawania”? Czy ma znaczenie, że podajemy dużo energii w krótkim czasie i potem długo nic, i znowu dużo energii, czy też gdy podajemy malutkie porcje tej energii, ale za to jedna po drugiej, niemal bez przerw?
Cykliczne podawanie energii jest bardzo powszechne w naturze. Sami dostarczamy jej sobie w ten sposób, jedząc. Tę samą liczbę kalorii można dostarczyć w jednej lub dwóch dużych porcjach zjadanych w ciągu doby, albo rozbić ją na 5-7 mniejszych posiłków, między którymi są krótsze przerwy. Naukowcy wciąż się spierają, który sposób jest dla organizmu lepszy. Jeśli jednak chodzi o dwuwymiarowe układy sieciowe, to już wiadomo, że pod względem efektywności magazynowania wygrywa metoda „rzadko a dużo”.
Zauważyliśmy, że w zależności od tego, w jakich porcjach i jak często podajemy energię, ilość, jaką układ potrafi zmagazynować, zmienia się. Największa jest wtedy, gdy porcje energii są duże, ale odstępy czasowe między ich podaniem też są długie, wyjaśnia Yirui Zhang, doktorantka w IChF PAN. Co ciekawe, okazuje się, że gdy taki układ magazynujący podzielimy wewnętrznie na swego rodzaju przedziały, czy też komory, to ilość energii możliwej do zmagazynowania w takim podzielonym ‘akumulatorze’ – o ile bylibyśmy go w stanie skonstruować – wzrośnie. Innymi słowy, trzy małe baterie zmagazynują więcej energii niż jedna duża, precyzuje badaczka. Wszystko to przy założeniu, że całkowita ilość wkładanej do układu energii jest taka sama, zmienia się tylko sposób jej dostarczania.
Choć badania prowadzone przez zespół IChF PAN należą do podstawowych i ukazują po prostu fundamentalną zasadę rządzącą magazynowaniem energii w magnetykach, ich potencjalne zastosowania są nie do przecenienia. Wyobraźmy sobie np. możliwość ładowania baterii elektrycznego samochodu nie w kilka godzin, lecz w kilkanaście minut albo znaczące zwiększenie pojemności takich akumulatorów bez zmiany ich objętości, czyli wydłużenie zasięgu auta na jednym ładowaniu. Nowe odkrycie może też w przyszłości zmienić sposoby ładowania baterii różnego typu poprzez ustalenie optymalnej periodyczności dostarczania do nich energii
Komentarze (15)
Szkoda Mojego Czasu, 27 kwietnia 2020, 10:37
"Doświadczenia dotyczyły co prawda wyidealizowanych, dwuwymiarowych układów sieciowych, ale w końcu zasada to zasada."
To były to doświadczenia czy jednak tylko rozważania teoretyczne?
Coraz więcej badań prowadzi sie jako symulacje (to czasem rzeczywisćie działa), coraz więcej jest chaotycznych przekrojówek, a niestety coraz mniej badań fizycznych.
Każdy informatyk WIE, że bubblesort jest najwolniejszy, a quicksort najszybszy. Oczywiście na papierze (ale o tym się studentów nie informuje). Gdy byłem studentem, to udowodniłem organoleptycznie, że bubblesort potrafi być o kilkadziesiąt procent szybszy od quicksortu i to wcale na niespecjalnie złożonych danych.
Niestety, ale różnica między fizykiem teoretykiem, a praktykiem jest jak róznica między kuszą, a czołgiem.
"fachowo mówiąc „geometria podawania”?" Geometria zdaje się kluczować wiele rzeczy.
tempik, 27 kwietnia 2020, 11:07
ale jaki to ma sens? zyskać kilka % pojemności a stracić dziesiątki czy setki % czasu. % pojemności można zrekompensować dokładając ogniw, a czas jest tracony bezpowrotnie(przynajmniej ten dostępny dla człowieka). Jaka jest krzywa ładowania każdej baterii łatwo sprawdzić.
Więc ładując samochód w trasie zawsze będzie lepiej i szybciej ładować pusty akumulator do 50-60%(mimo większej ilości postojów) niż czekać wieki na nabicie ogniw do 100%.
Jajcenty, 27 kwietnia 2020, 12:58
Oj, ale wiesz, że tu jest kupa ludu, która się na tym zna? To zdanie uniosło niejedną brew. To że sortowanie jest wrażliwe na dane to truizm.
W przypadku akumulatorów znaczenie ma liczba cykli. Ja telefon rozładowuję do 30-20%, zwykle to wystarcza by dotrwał do wymiany z innych powodów, niż utrata pojemności.
Szkoda Mojego Czasu, 27 kwietnia 2020, 13:20
To zdanie to jedynie malutki przykład, że teoretyzowanie a praktyka są oddzielone rowem mariańskim. Nic więcej.
PS a czy się zna, tego nie wiem. Dana nieweryfikowalna.
Jajcenty, 27 kwietnia 2020, 14:24
Wybacz, dla mnie to zdanie to klasyczny bezmyślny gminny banał, w dodatku krzywdząco nieprawdziwy. Możemy zacząć od Einsteina, Pauliego - o swoim asystencie powiedział: taki młody a już nieznany - Hawkinga i całego mnóstwa innych. Praktyka lepsza od teorii jest tak samo prawdziwe jak to, że górne zęby są lepsze od dolnych.
Szkoda Mojego Czasu, 27 kwietnia 2020, 15:34
Chlubne wyjątki nie czynią reguły. Krzywdy tez nie ma, bo nie nazwałem teoretyków debilami. Wskazałem jednak, że modelowanie na dość absurdalnym poziomie uproszczenia niewiele znaczy. Co innego modelowanie na modelu złożonym.
W dodatku moglibyśmy rozważać na ile np Einstein był teoretykiem - np dla mnie jego prace mają wysoki wymiar praktyczny, tyle że były modelowane w głowie, bo miał bardzo dużą wyobraźnię. Pamiętam tez wypowiedź Einsteina, że wszystkie jego odkrycia mu sie przyśniły w wizjach. Wynikałoby z tego, że wpierw coś zobaczył w łepetynie, a potem latami to szlifował matematycznie (a żona pucowała na gładko).
peceed, 27 kwietnia 2020, 19:11
(Brzmi jak abstrakt nigeryjskiej pracy magisterskiej z informatyki , ten kto się zetknął z tematem wie o co chodzi)
Manipulując danymi mogę uzyskać prawie każdą wartość speedup z zakresu (10^-20,20)x. Czego to dowodzi?
W praktyce bubblesort może być szybszy dla kilkudziesięciu inwersji tak długo, jak sortowana sekwencja mieści się w cache. Bez tego będzie wielokrotnie wolniejszy.
Zastąpienie "gałązkowych" wywołań quicksortu algorytmem z gorszym O(n) i lepszym C (wygrywa wstawianie) to standardowa procedura. Dla prostych danych typu liczby daje przyspieszenie 30%.
Zgadza się. Wykładowcy zamiast tego używają zakamuflowanych wyrażeń jak złożoność asymptotyczna, stała C i tym podobnych
Proponuję przeczytać sobie "Twardy pancerz" Bieszanowa, jest ładnie opisane jaki wpływ pozbycie się "teoretyków" i zastąpienie ich "praktykami" miało na produkcję czołgów
Szkoda Mojego Czasu, 27 kwietnia 2020, 20:58
Dobrze mówisz choć poważnie upraszczasz. Na bardzo dużych zbiorach (niekaszowalnych) i o dużej złożoności, i całkowicie bez użycia QS można wycisnąć naprawdę wiele.
Mnie nie chodzi o ten konkretny przykład, a o "zadęcie" teoretyków do posiadania racji (bo matematyka jest nieomylna). Ta racja w praktyce często zawodzi.
...i obaj wiemy jak bolszewiki zastąpili inżynierów "praktykami" - takimi w walonkach. To i efekty były walonkowe. :-)
cyjanobakteria, 27 kwietnia 2020, 21:35
Brzmi jak z generatora questów do cyberpunkowych gier planszowych
Co do bubble sorta, pierwszy z brzegu benchmark na danych losowych:
// data var input = []; for (var i = 0; i < 1000; i++) { input[i] = Math.round(Math.random() * 1000000); }
Test case name Result Built-in Sort Built-in Sort x 3,581 ops/sec ±0.61% (23 runs sampled) Naive Quicksort Naive Quicksort x 535 ops/sec ±0.66% (63 runs sampled) Inplace Quicksort Inplace Quicksort x 8,959 ops/sec ±0.45% (66 runs sampled) Heap Sort Heap Sort x 7,333 ops/sec ±0.32% (41 runs sampled) Merge Sort Merge Sort x 587 ops/sec ±0.56% (64 runs sampled) Shell Sort Shell Sort x 6,143 ops/sec ±0.50% (66 runs sampled) Comb Sort Comb Sort x 5,849 ops/sec ±0.31% (66 runs sampled) Insertion Sort Insertion Sort x 2,432 ops/sec ±0.46% (66 runs sampled) Fast QuickSort Fast QuickSort x 9,156 ops/sec ±0.49% (65 runs sampled) mSort mSort x 622 ops/sec ±0.57% (64 runs sampled) Radix Bucket Sort Radix Bucket Sort x 3,280 ops/sec ±0.81% (64 runs sampled) Bubble Sort Bubble Sort x 551 ops/sec ±0.33% (64 runs sampled) Fastest: Fast QuickSort Slowest: Naive Quicksort
peceed, 27 kwietnia 2020, 22:03
Tylko dla mocno uporządkowanych danych, to naprawdę nie ma większego znaczenia. Jest piękna teoria która opisuje minimalną ilość operacji i złożoność sortowania sekwencji o różnym stopniu nieporządku, n*log(n) to tylko górne ograniczenie.
P.S. Gdybym to ja ustalał terminologię, to mielibyśmy pazuchę i dane pazuchowalne
Szkoda Mojego Czasu, 27 kwietnia 2020, 22:13
Zrób mi przysługę, biednemu nigeryjczykowi, i wyjaśnij jak krowie na rowie ten benchmark. Tak łopatologicznie, jakbyś blondynce wyjaśniał.
Taaa, wiesz prof Sędziwy wykładał nam to ograniczenie i to, że QS prawie dobija do granicy efektywności :-) A ja Ci dalej mówię, że granica efektywności odnosi się do obliczenia modelowego, a nie do rzeczywistego sortowania danych wysoce złożonych, w wielkich zbiorach.
ale może wystarczy. Każdy z nas ma na swój sposób rację.
cyjanobakteria, 27 kwietnia 2020, 22:29
Nic nie zamierzam Ci wyjaśniać, bo dobrze to rozumiesz. Po za tym myślałem, że nie lubisz teoretyzować, a praktyków mało interesuje to, że bubble sort jest szybszy niż quick sort na niektórych danych wejściowych.
Szkoda Mojego Czasu, 28 kwietnia 2020, 09:34
Właśnie praktykow to interesuje, bo choć cache są coraz większe, to przyrosty danych i obliczeniowe są jeszcze szybsze. Dlatego mechanizm procka, algorytm wypełniania cachea, delaye na ścieżkach i DNSach, algorytm zdejmowania danych z pamięci masowej ma KLUCZOWE znaczenie w praktyce. Okazuje się , że moment w którym przerwiesz dany loop i zmienisz np metode sortowania daje niebagatelne oszczędności.
I niestety na kazdej maszynie i w stosunku do każdych danych trzeba wykonać próbę, by znależć minimum czasowe, bo teoretycznie tego nie warto obliczać. To oczywiście może stac się nieprawdą, gdy do liczenia użyjemy AI.
konczmy Waść. :-)
Jajcenty, 28 kwietnia 2020, 10:23
Nie wiem co robisz w praktyce, ale mniej więcej od 20 lat w przemyśle króluje paradygmat 'wydajność to problem sprzętowy' . Ze względu na stawki godzinowe w IT nikt nie pozwoli, żeby programista sobie testował najlepsze podejście. Użycie wzorców projektowych to maks na co można sobie pozwolić, a i to tylko w nadziei, że oszczędzi się później na utrzymaniu. Optymalizacja? Jak jest problem to się wynajmuje więcej rdzeni, więcej ramu. Mam wrażenie że dyskutujecie zagadnienia, którymi zajmuje się mniej niż 1000 osób w świecie.
Szkoda Mojego Czasu, 28 kwietnia 2020, 12:16
Bo my takie wyjontkowe som :-) A serio: kiedyś specjalizowałem się w obróbce danych masowych i bezpieczeństwie. Sprzedawałem też megarozwiązania archiwizacyjne od największych, do największych.
Poprzednio nadmieniłem zresztą, że tego nie warto robić jak się pisze algorytm dla pojedynczych zastosowań lub małych danych. To staje się kluczowe, gdy mielisz dane na okrągło (wtedy minuty kumulują się do lat) lub liczą się ułamki sekund (np analiza porównawcza wgranej mapy 3D a skan terenu z radaru w lecącym pocisku ziemia-ziemia).
Problem tak naprawdę istnieje i zepchnięcie go na bok nie zawsze da się nadrobić dokupieniem mocy.