poniedziałek, 12 sierpnia 2019

Dulkiewicz upomina Kuchcińskiego

Lotna inaczej p. Dulkiewicz, znana z tego, że usiłuje zaistnieć (bo o jakiś namacalnych że tak powiem osiągnięciach trudno na razie mówić, chociażby z tego powodu, że ostatecznie dopiero mija pół roku jak się świat dowiedział, że ktoś taki wybitny w ogóle istnieje) poucza marszałka Kuchcińskiego, że zamiast samolotem to powinien rowerem jak ona...

Chciała błysnąć a wyszło jak zwykle dotąd średnio (mówiąc oględnie), bo niby zamiast trwonić grosz publiczny latając ona jeździ rowerem więc wstydź się rozrzutny marszałku z PiSa. No ale kurcze nie swoim rowerem, tylko kupionym za publiczne, do tego cały projekt to modelowy przykład klapy (za cudze pieniądze). Więc zamiast siedzieć cicho (jak Szczurek czy inny Karnowski) przypomniała jaką to klapą/kompromitacją jest słynne MEVO.

Miało być 4000 rowerów jest 1500... O reszcie należy zapomnieć, bo bądźmy szczerzy: w czym leży nie-do-rozwiązania-od-miesięcy problem pt kupić i udostępnić te marne 2500 brakujących bajków, jak nie w braku kasy w NextBike czy jak oni się tam nazywają? Operatorowi oczywiście naliczają za niewywiązanie się z umowy kary, ale skoro on nie ma na rowery, to i na kary nie będzie miał (więc pewnie w stosownym czasie się wszystko się anuluje albo się ogłosi upadłość operatora i będzie po sprawie, i po pieniądzach wpompowanych w Misia pn. MEVO też)...

czwartek, 1 sierpnia 2019

Mevo: koncentracja rowerów na stacjach

29 czerwca był upał i pierwszy raz w życiu zobaczyłem stację MEVO literalnie zawaloną rowerami. Była 13:00. Po dojechaniu do domu sprawdziłem, że rowerów było tam aż 24. To mnie zainspirowało do sprawdzenia jak wygląda koncentracja rowerów na stacjach. Na szybko zmajstrowałem skrypt wypisujący ile jest rowerów na stacjach (rowery), udział w całości zaparkowanych w danym momencie (udzial) oraz udział w całości zaparkowanych w danym momencie w tym konkretnym mieście (ludzial): Dla 29 czerwca 2019, godz 13:00 okazało się że:

stacja;wspolrzedne;miasto;rowery;udzial;ludzial
S11358;18.57196808,54.40258423;Gdańsk;55;6.782;16.566
S11069;18.59038998,54.42794681;Gdańsk;24;2.959;7.229
S10100;18.57092997,54.44534256;Sopot;24;2.959;35.294
S11357;18.63640600,54.38637008;Gdańsk;18;2.219;5.422
S12007;18.53351997,54.49663118;Gdynia;16;1.973;7.843
S11186;18.57639103,54.39859534;Gdańsk;15;1.850;4.518
S10121;18.56255831,54.45392821;Sopot;13;1.603;19.118
S12126;18.47267507,54.54728035;Gdynia;13;1.603;6.373
S12053;18.54832346,54.51633152;Gdynia;13;1.603;6.373
S12054;18.54687652,54.51960321;Gdynia;12;1.480;5.882
S12033;18.56357898,54.48005340;Gdynia;10;1.233;4.902

Czyli na stacji 11358 było 55 rowerów co stanowiło 6,782% wszystkich zaparkowanych w systemie MEVO albo 16,566% zaparkowanych w Gdańsku. Dla Sopotu było nawet jeszcze lepiej bo na stacjach 10100/10121 było 24+13 (37 rowerów) ale było to 35,294 + 19.118, tj. prawie 55% wszystkich zaparkowanych w Sopocie (o godzinie 13:00). Dokładnie było 68 rowerów w 28 miejscach wtedy (27 stacji i jeden luźny bajk). Na 11 stacjach nie było nic a na 10 jeden rower.

Jest taka prosta miara koncentracji, co się nazywa w języku HH-Index, albo po polsku Wskaźnik Herfindahla-Hirschmana. Jest on nawet stosowany w USA do mierzenia koncentracji na rynku. Formuła jest banalnie prosta: dla $N$ wartości $x_i$ ($i=1...N$) sumujących się do 100 (czyli udziałów w całości), HHI liczy się jako: $\sum_{i=1}^N x_i^2$. Łatwo sprawdzić że HHI < 10000. Interpretacja jest taka, że HHI < 1000 wskazuje na słabą koncentrację, 1000 < HHI < 1800 umiarkowaną, a wartości większe od 1800 na dużą. BTW HHI da Sopotu o 13:00 (29/7/2019) wynosiło około 1850...

No to ja policzyłem HHI dla MEVO. Udziały były chwilowe, tj. $x_i = r_i/r_t$, dzie $r_t$ łączna liczba zaparkowanych rowerów na wszystkich stacjach w mieście $M$ (w danym momencie); no a $x_i$ to oczywiście liczba rowerów na stacji $i$. Potem uśredniłem, tj. wszystkie $HHI_i$ z godziny $h$ zsumowałem i podzieliłem przez liczbę pomiarów w tej godzinie (zwykle przez 30, bo pomiar jest co 2 minuty). Policzyłem oddzielnie dla GD/GA/Sopot/Tczew dla dni pracujących oraz dla świąt, sobót i niedziel osobno...

Wyniki dla maj--lipiec na wykresie (obok). Ciekawostkowo koncentracja w GD jest zaskakująco inna niż w GA. Teoretycznie im więcej stacji tym wartość HHI powinna być mniejsza, a tak nie jest: w GD wartość HHI wynosi w szczycie około 500, a w GA tylko 300. Szczyt wypada tak 9--11 zresztą. Można sobie wyobrazić, że użytkownicy jadą do pracy i zostawiając rowery przez biurami ogołacają stacje poza centrum a zapełniają te w rodzaju stacji o numerze 11358 (Gdańsk/Oliva Business Centre). W niedziele i święta do pracy nie jeżdżą to koncentracja jest mniejsza. Ma sens, ale nie w GA gdzie akurat w święta jest większa, wprawdzie chwilowo (w znaczeniu, że szybko rośnie ale potem równie szybko spada), ale jednak. Jakby w GA masowo jeździli gdzieś koło południa, a potem wracali z powrotem prawie że od razu... Mniejsza liczba stacji/rowerów w GA niż GD może powodować że wartość HHI ,,łatwiej'' rośnie...

W Sopocie i Tczewie jest znacząco mniej rowerów niż w GD/GA więc nic dziwnego że wartość HHI jest też dużo większa. BTW przeciętne dzienne wartości HHI są następujące (GD/GA/Sopot/Tczew): 170/222/1255/1143 (pon-piątek) oraz 93/225/1169/1200 (niedziele-soboty-święta). W Sopocie (poniedziałek--piątek) zmiany HHI są jeszcze inne niż w GD/GA. Amplituda jest mniejsza, a jedyny wyraźny dół jest rano około 5 a nie w godzinach 21--5 jak na przykład w GD. W niedziele i święta jest tradycyjnie jeden szczyt koło południa, a oprócz tego około 19--20 oraz 2--3 rano.

Skrypty i plik CSV z danymi jest tradycyjnie w archiwum GitHub

Na koniec przypomnienie, że prezes obiecał na 18.08 +4000 rowerów w systemie. Na koniec lipca wykazywane jest póki co: +1500 (niektóre w Warszawie albo w Cedrach Wlk.). Z tej puli bajków (numerów bajków?) codziennie pojawia się w pliku locations.js +1350, jeździ zaś mniej, około 1200 (reszta stoi). Na 100 procent wszyscy już wiedzą, że ni-chu-chu nie będzie 4000 rowerów nawet na 31 września, ale media zachowują w tej sprawie zgodne milczenie. Nikt nikogo nie pyta, a zwłaszcza prezesa. Nie ma sprawy...

piątek, 26 lipca 2019

TourDeOst 3/4: Batumi

Rzucony przez moją AlmaMater na odcinek Wschodni po odwiedzeniu Uzbekistanu i Turcji pojechałem do Gruzji (sam).

11.05 Przylot do Kutaisi. Nocleg w hostelu pn Hostel Kutaisi By Kote; w cenie 20 lari jest przywiezienie z lotniska. Na kwaterze późno w nocy Nie kupiłem karty SIM bo się kierowcy spieszyło, a potem się okazało że w sumie to karta nie była potrzebna. Następnego dnia rano spacer po Kutaisi. Wypad z kwatery 11.00. Idę do Czerwonego Mostu piechotą, bo to blisko i z górki. Marszrutka do Batumi stąd nie odjeżdża, ale odjeżdżają marszrutki krótkobieżne. Za pół lari można dojechać do dworca autobusowego (linia numer sześć). Około 13.00 wyjazd do Batumi, gdzie docieram koło 16:00. Od razu falstart. Najpierw wkurwili mnie taksówkarze. Ledwo wysiadłem z marszrutki: Taxi nada? Mówię że nie nada i nawet jestem szczery, bo chcę iść najpierw na obiad. Ale temu namolnemu to mało, pyta raz jeszcze i jeszcze raz. Idę do pobliskiej restauracji Samikitno, którą nota bene znam już z poprzedniej wizyty, i która wygląda zresztą na sieciówkę -- ma też filię o tej samej nazwie w Tbilisi. Na sali jest 2/3 miejsc wolnych, a ja jestem jedynym klientem czekającym na zamówienie, ale kelnerzy w liczbie czterach pilnie wpatrują się w salę i ani myślą podejść. Po 15 minutach wychodzę. Szukam czegoś zamiast Samikitno, ale kończy się na fast foodzie, bo po drodze do hostelu ni cholery nie ma niczego innego. Na szczęście na kwaterze generalnie jest ok (jak na Gruzję), tylko łazienka tradycyjnie dysfunkcjonalna -- taka budka telefoniczna do tego instalacja unikatowa jak to w Gruzji. Jestem jedynym gościem na 3 pokojach. W sezonie 6 ludzi na jeden sedes i prysznic to może być jednak kiepsko.

BTW1: tak w ogóle to Gruzja to niestety kraj fast foodów (jeszcze w Batumi i pewnie w Tbilisi, to coś można znaleźć lepszego, bo tu turystów dużo ale gdzie indziej -- umarł w butach). Cafe (których tutaj test bez liku), to u nich lokal gdzie można kupić chaczapuri, kawę raczej nie, a jak już to na 99% nie ekspresu, tylko albo po turecku albo z torebki (3 w jednym czyli słodzoną od razu). Ciastek/deserów to tam nie będzie na 100%. Ale uwaga: nawet na tej kulinarnej pustyni znaleźliśmy diament: Dona Bakeshop & Cafe (121 Parnavaz Mepe St/Bakumi). Szczerze polecam, Blikle przy nich to horendalnie drogie dziadostwo. W Kutaisi całkiem fajne restauracje są zaś w okolicach białego mostu. Ja byłem w takiej co się nazywa White Stones (BTW od białych kamieni na rzece Rioni.)

BTW2: większość (a na pewno dużo) Gruzinów w pracy to się zwyczajnie opier@dala. Taksówkarze stoją cały dzień na ulicy i ćwiczą wymowę dwóch słów: Taxi nada?. W niezliczonych sklepach towaru i klientów nie uświadczysz (wyjątek: cukiernia Dona) więc personel głównie siedzi i czeka.

13.05 pierwszy dzień roboczy, że tak powiem, tj. spotkanie z władzami miejscowej Batumi State Univ (BSU) i staffem Erasmusa tejże wyznaczone na 14:30. Potem zwiedzanie szkoły, a potem wycieczka po mieście i wreszcie kolacja. Przed spotkaniem na wszelki wypadek poszedłem na obiad w postaci standardowego zestawu chinkali (czyli 5 sztuk) Wieczorem uroczysta kolacja. Strasznie się objadłem... Z ciekawostek na tym BSU studiuje 500 Hindusów (widzieliśmy) -- medycynę.

Następnego dnia zbiórka na 10:00. Najpierw meeting -- prezentacja szkół -- potem godzinny kurs gruzińskiego, obiad i wizyta w delfinarium. Lunch: chaczapuri adjaruli w restauracji na koszt BSU. Wypatrzyłem sklep z rowerami przy tej samej ulicy co mój hostel czyli Puszkina i umówiłem się na czwartek na wypożyczenie bicykla. Sklep prowadzą Ukraińcy zresztą...

Środa -- wykład dla studentów. Powiem bez rewelacji. Było dużo studentów, ale zainteresowanie średnie. Potem było zwiedzanie biblioteki, które dla pań z biblioteki było wielkim wydarzeniem. Panie się nudzą (podobno biblioteka zatrudnia 80 osób nb), bo tej makulatury, to pewnie nikt już nie wypożycza...

Potem lunch za który tym razem zaplaciliśmy po 30 lari. Jak to z Gruzinami --nie do końca żeśmy się dogadali tym bardziej, że były trzy strony: my, Gruzini z BSU i Gruzini z restauracji... Ja np zamówiłem lobio, zestaw takich szprotek smażonych (dla spróbowania) + zestaw surówek i kawę. Jakieś 20 lari za całość. A dostałem pstrąga, ale bez kawy... Za to gruzini z BSU zamówili za nas ale bez mówienia nam o tym ekstra warzywa i sery... W rezultcie połowa zamówienia została na stole:-( Po obiedzie wine-tour-Keda co się okazało wycieczką do tego mostu co 5 lat temu z Elką (google: queen Tamar bridge a konkretnie Mahuntseti Bridge) a po drodze obejrzenie 3 wodospadów i jeszcze jednego łukowatego mostu tyle że znacznie mniejszego. Na koniec wylądowaliśmy w hurtowni wina Adjaran White House z restauracją gdzie za 7 lari wypiłem pół kieliszka wina. Wino faktycznie dobre, ale na mieście to za 7 lari by była butelka, więc atrakcje takie sobie.

Ale jedna z uczestniczek to już w ogóle miała przechlapane, bo jako wegetarianka zamówiłą zupę grzybową i te ich rolady z bakłażana. Dostała zaś tylko zupę (za 30 lari tj 40 parę PLN). Zła była jak licho... I ja się nie dziwię...

Czwartek, ostatni dzień roboczy zapowiada podobnie więc plan jest taki żeby się tego wymiksować PRZED lunchem bo znowu zapłacę 30 lari za obiad, z którego zjem za 10 lari (5 chinkali = 4 lari tak w ogóle) Poza tym odkryłem fajny bar rybny obok rynku rybnego z potrwami z różnych egzotycznych ryb i szczerze je wolę zamiast tych całych chinkali o adżarskim (z płynnym żółtkiem) chaczapuri nie wspomnę... a pstrąga to mogę w Sopocie kupić--nie muszę do batumi jeździć w tym celu.

Poza tym nie chcę mi się jechać w czwartek do Kutaisi, więc wymyśliłem że czwartek-piątek posiedzę w Batumi a piątek/sobotę w Kutaisi.

16.05: Europe day, zakończenie. Dziś pobudka 7.20 i poszedłem na bazar. Kupiłem przyprawy, czurczele i pelamuszi. Pani myślała, że przyszedł jakiś frajer co kupi 2 czurczele i szklankę soli, a nie poważny klient i mnie zlekceważyła, więc jak to wszystko już odsypała do worków co chciałem, to jej się pokićkało i 3x liczyła ile ma być. Wydałem w końcu zaledwie 50 lari a jak położyłem to co kupiłem na wagę: --5kg więc chyba już więcej nic nie kupię bo już mam nadbagaż (a może nie? Coś tam jednak tutaj zostawiłem)

Ten Europe day to takie targi edukacyjne się okazało (pierwszy raz uczestniczyłem w czymś takim). Każdy miał stolik i się prezentował. Generalnie stolików było 5 (1xFRA, 1xLitva, 3xpl) i każdy coś miał tylko Kwidzyn miał wielką figę:-) Ale to w sumie b/z bo ci inni, co coś mieli, to też nic w sumie nie osiągnęli... Ponieważ 5 stołów to by licho wyglądało to Gruzini dostawili jeszcze stoliki z Azerbejdżanu, Niemiec i Hiszpanii oraz stolik neutralny, że tak powiem gdzie było wsio co mieli przysłane pocztą ale nie było delegatów...

Ci Hiszpanie, Niemcy i Azerowie to przypuszczam studenci, którzy tam siedzą i zostali namówieni na przyjście na imprezę: Hiszpanie przynieśli paellę z kartofli + jakąś ciecz w puszce (nie próbowałem), Niemcy kupili miejscowe wypieki, ale z gatunku po 50 tetri od sztuki (wiadomo oszczędni) i tym zapełnili stół a Azerowie mieli najwięcej: kartki w dwóch rodzajach wydrukowane na drukarce kolorowej: jakiś ichni narodowy symbol-budynek a na drugiej mapa Azerbejdżanu z ikonami potraw regionalnych... Czyli wypadłem nie najgorzej na tle:-)

Były przemowy, zdjęcia, bufet, tort, wino, telewizja i w ogóle. Potem miał być lunch, ale wszyscy się wykręcili, że są już po (to akurat była prawda -- pół tortu i tak zostało) a z wycieczki do ogrodu botanicznego też udało mi się wykręcić (już tam byłem zresztą kiedyś). 13:30 KONIEC. Poleciałem szybko do tego sklepu rowerowego i pożyczyłem bicykla. Pojechałem na turecką granicę a potem odbiłem trochę w góry, ale tylko trochę (razem 60 km wyszło). Pożyczyli mi ten rower "okrakiem" od 14:00 czwartek do 14:00 piątek --na dzień za 35 lari.

W piątek pobudka w 7:00 jadę w stronę Poti cykając foty co jakiś czas. Dojeżdżam do skrzyżowania na Kutaisi (za wsią Tskaltsminda) i zawracam. W sumie szkoda, że nie dałem rady do Poti ale i tak wyszło 110km (w obie strony) na mocno średnim bicyklu (polski Kross zresztą) i bez dobrych butów. O 14:00 poszedłem z walizą na stację marszrutek. W Kutaisi nada? -- No konieszno. Jasna strona Gruzji--idziesz na PKS i jedziesz. Żadnego czekania (no różnie to bywa--ale pomiędzy dużymi miastami to raczej tak).

W sobotę łaziłem 7 godzin po Kutaisi w oczekiwaniu na samolot. W okolicach południa wypatrywałem jakiejś kawiarni, ale na to nie ma szans poza ścisłym centrum, gdzie faktycznie są fajne lokale, konkretnie obok białego mostu jest White Stones -- dobre kawy i naleśniki. Naprzeciwko zachęcająco wygląda z kolei lokal pn (chyba) White Bridge, którego taras wychodzi na rzekę i znajduje się pod mostem (do restauracji schodzi się po kręconych schodach). Tam nic nie zjadłem, bo ile można. Jeszcze tylko drobny stres na koniec--umówiony Gruzin co mnie miał wieźć na lotnisko się nie stawił, ale finalnie dotarłem na czas. Kupiłem nawet na farewell wino w sklepie wolnocłowym i sześciopak Borjomi w puszkach.

Zdjęć i śladów GPX póki co nie ma ale będą...

Połtawa 2019

W Połtawie byłem z kolegą AP w końcu maja. Mówiąc konkretnie 20--24 maja, ale jakoś nie mogłem się zebrać więc raport dopiero teraz...

Odlot z Gdańska 15:10, w Charkowie jesteśmy 18:20. Jedziemy trolejbusem na dworzec autobusowy. Jest autobus do Połtawy, ale za trzy godziny. Idziemy do restauracji gdzie zamawiamy po barszczu ukraińskim i naleśnikach i siedzimy do 21:00. BTW taki barszcz ukraiński to trochę inaczej wygląda niż u nas. Do barszczu obowiązkowo zagrycha w  postaci pieczywa, słoniny i surowego, grubo krojonego czosnku. No i śmietana.

Autobus jedzie aż do Gdyni, a Połtawa to pierwszy przystanek. Jest po północy, taksówek nie ma ale są wszędzie informacje z numerami telefonów. Dzwonimy, przyjeżdża, jedziemy do hostelu.

Następnego dnia, stawiamy się na uniwersytecie. Okazuje się że zamknięty, wynajęty na czas matur jako miejsce do egzaminowania. Przychodzi nasz gospodarz Julia i prowadzi nas do innego budynku na konferencję studencką. Na konferencji jest rektor--siedzimy do obiadu i słuchamy studentów. Po obiedzie wycieczka po Połtawie, potem spotkanie ze kadrą uczelni. Rozmowa po rosyjsku więc coś tam rozumiem, ale wiele rzeczy nie rozumiem.

Po spotkaniu idziemy na kolację. Rekomendują nam lokal gruziński pn. Old Tiflis. Idziemy we trzech, z poznanym tutaj Łotyszem, który także przyjechał na ErasmusMobility. Łotysz okazuje się niezłym balowiczem; dzięki niemu wydajemy kupę kasy na kolację, z której wracamy około 22:00.

W środę zwiedzanie uczelni zaczyna się o 10:00. To zwiedzanie okazuje się najciekawszą częścią pobytu. Dociera do nas, że szkoła wcale nie jest państwowa, co nam się do tej pory wydawało tylko prywatna. To szkoła zawodowa, kształcąca ekonomistów. Studiuje na niej ponad 6000 studentów w tym wielu (kilkuset) z zagranicy, w szczególności z Afryki i z Indii (widzieliśmy). Są też studenci z Turcji, Gruzji i Azerbejdżanu. A propos Gruzji to w mieście żyje ich podobno 1600...

Budynek uczelni jest stary i przez to robi kiepskie wrażenie--jak się chodzi korytarzami, ale to pozory: szkoła jest doskonale wyposażona. Ma wdrożony imponujący system nauczania na odległość. W systemie tym kształcą nawet 300 studentów w trybie pure-distance oraz 3000 w trybie mieszanym (blended jak mawiają w branży DL). W trybie mieszanym studiują na przykład studenci służący w wojsku. Mogą się uczyć a nawet zdawać egzaminy bez opuszczania posterunków na linii frontu z DRL/Rosją. Uczelnia ma też sieć oddziałów zamiejscowych, na potrzeby których możliwe jest organizowanie zajęć w trybie telekonferencji. Mają do tego stosowną infrastrukturę--widzieliśmy. W pełni wyposażone studia do przygotowywania wideo-treści oraz dziesięć kabin dla wykładowców na potrzeby zajęć w trybie telekonferencji. Do tego biblioteka multimedialna z tak na oko 40 stanowiskami dla czytelników.

Początkiem szkoły była placówka kształcąca kadry na potrzeby spółdzielczości (cf. PUET. Ten związek ze spółdzielczością jest (chyba) ciągle obecny i ważny, bo widzieliśmy parokrotnie w szkole w różnych miejscach loga COOP. Organizacji, która w Polsce to ja nie wiem czy w ogóle działa. Jedyne COOP jakie widziałem w życiu, to sklepy o tej nazwie w Szwajcarii...

Na potrzeby wewnętrzne szkoła współpracuje z siecią koledżów, czyli szkół średnich (ale to akurat jest wbudowane w system, w tym sensie, że szkoły średnie są w pewnym stopniu częścią szkół wyższych). Z zagranicy zaś rekrutuje studentów głównie poprzez sieć zaufanych pośredników działających na prowizji.

Całość działa, co o tyle jest godne podziwu, że działa można powiedzieć w warunkach przyfrontowych. Z Połtawy do DRL jest niedaleko (na przykład do miejsca gdzie spadł słynny MH-17 400km raptem). Szkoła nawet straciła dwa oddziały--Donieck i Semferopol, które są teraz za granicą.

Po obejrzeniu szkoły pojechaliśmy z kolei na wycieczkę po okolicy--najpierw na miejsce słynnej bitwy z 1709r pomiędzy wojskami Carstwa Moskiewskiego a Królestwem Szwecji. Potem do muzeum piwa i bimbrownictwa. To pierwsze ciekawe to drugie niekoniecznie. Muzeum bitwy jest ciekawe, bo ukazuje ją z szerszej perspektywy, tj. z punktu widzenia Ukrainy (która nie była stroną w bitwie przecież). Pewnie ciut na siłę ale co z tego? Muzeum bimbrownictwa z kolei to typowo komercyjna placówka przy restauracji. Dwa pokoje wypełnione dość przypadkowym sprzętem związanym z produkcją piwa i samogonu.

W czwartek w sumie nie było nic ciekawego. Dość dużo czasu zajęło nam ustalenie jak się wydostać z Połtawy--pojechaliśmy na dworzec kolejowy i kupiliśmy bilety na rano następnego dnia.

Rano w piątek taksówką do dworca. Potem pociągiem do Charkowa, do którego docieramy o 10:00. Tutaj drobna komplikacja: patrol milicji nas zatrzymuje i kontroluje: każą wyjąć wszystko z kieszeni i plecaków. Incydent kończy się na niczym, może myśleli że mamy jakąś kontrbandę i coś tam da się od nas wyciągnąć? Nie wiem... Milicjanci są regulaminowi i uprzejmi wszakże.

Potem zostawiamy bagaż w przechowalni i idziemy na 3 godziny na miasto. Bez sensacji w sumie. O 14:00 zwijamy żagle: metrem dostajemy się na prospekt Gagarina a stąd autobusem na lotnisko. O 18:38 cabin crew take off. Lądujemy sensacyjnie 25 minut przed czasem...

Zdjęć i śladów GPX póki co nie ma ale będą...

wtorek, 16 lipca 2019

MEVO: rozkminianie systemu (odcinek trzy)

Miało nie być o MEVO do września, ale najechałem na stojący w zasadzie w polu rower przed Chwaszczynem. Zrobiłem zdjęcie i się okazało że figuruje on w bazie. Przypomnę, że w poprzednim odcinku trylogii o MEVO założyłem że plik locations.js zawiera informacje nt stacji oraz informacje o luźnych-rowerach-w-dziwnych-miejscach (np w Warszawie), które postanowiłem pomijać. Że przypomnę:

[luźne-rowery] mają dziwną nazwę a w atrybucie bike mają true (albo jeden), a w atrybucie spot mają zero (czyli false). Z tego wychodzi, że te stacje to nie są stacje tylko jakieś luźne rowery pozasystemowe. Taką mam koncepcję...

Znalezisko spod Chwaszczyna podkopało moją wiarę w koncepcję. No bo jeżeli baza zawiera także rowery normalnie eksploatowane, ale nie parkowane na stacjach, to pomijam -- być może istotną -- część ruchu w systemie MEVO. Żeby ustalić w miarę szybko stan rzeczy wymyśliłem, że podsumuję pozycje wszystkich rowerów -- zarówno tych na stacjach i tych luźnych -- i zobaczę co wyjdzie. Konkretnie czy parkowanie poza stacjami to incydent, który można pominąć czy niekoniecznie oraz czy dzikie parkingi się skupiają w pewnych lokalizacjach, a jak się skupiają, to gdzie?

Plik locations.js zawiera zmienną NEXTBIKE_PLACES_DB, która wygląda jakoś tak:

  var NEXTBIKE_PLACES_DB = '[{"places":[
  {"uid":14242676,
   "lat":52.281631111111,
   "lng":21.011891111111,
   "bike":true,
   "name":"Jagiellońska 88A",
   "address":null,
   "spot":false,
   "number":0,
   "bikes":1,
   "booked_bikes":0,
   "bike_racks":0,
   "free_racks":0,
   "special_racks":0,
   "free_special_racks":0,
   "maintenance":false,
   "terminal_type":"","
   bike_list":[{"number":"600262","bike_type":114,
      "lock_types":["frame_lock"],
      "active":true,
      "state":"ok",
      "electric_lock":true,
      "boardcomputer":7551015898,
      "pedelec_battery":62,
      "battery_pack":{"percentage":62}}],
 "bike_numbers":["600262"],
 "bike_types":{"114":1},
 "place_type":"12",
 "rack_locks":false,
 "city":"Gdańsk-Wawa"}]}]';

Pole places zawiera listę elementów, z których każdy to opis miejsca, tj. stacji lub pozycji luźnego roweru (dalej LB od luźnego-bajka). Czy jest to stacja czy rower można wykoncypować na podstawie wartości pola bike (jeżeli true/1 to luźny rower). Są ponadto współrzędne miejsca (lat, lng); numer miejsca (number, lub zero dla LB) liczba rowerów zaparkowanych w miejscu (bikes); lista numerów rowerów w miejscu (bike_numbers); nazwa miejscowości (city). Pole uid to moim zdaniem unique id miejsca. Zatem stacja ma numer, LB nie ma numeru. Każda para współrzędnych ma ten sam uid.

W zasadzie jeżeli bike = true, to bikes=1 ale niekoniecznie i nie potrafię wykoncypować co znaczy taki rekord:

{"uid":14302318,
 "lat":54.350404444444,"lng":18.586652222222,
 "bike":true,
 "name":"BIKE 99170",
  ...
 "bikes":0,
 ...
 city":"Gdańsk"}

Takich wpisów jest circa pięć więc pomijam wyjaśnienie tego fenomenu. Robię skrypt parsujący apiać wszystkie pliki locations.js pobrane w okresie maj--lipiec (ostatni miesiąc niekompletny). Skrypt zapisuje: uid, numer, pozycję, miasto, typ miejsca (stacja albo LB) oraz liczbę powtórzeń (liczba wpisów dotyczących miejsca o współrzędnych lat/lng; każda stacja w tym okresie ma 53 tysiące wpisów. LB ma mniej oczywiście.) Dla czerwca wychodzi 20 tysięcy różnych zarejestrowanych miejsc. Dla całego okresu 60 tysięcy (różnych).

Wyświetlenie 60 tys kropek na mapie nie będzie proste więc wymyśliłem sobie, że rozpocznę od zagregowania liczby ,,parkingów'' do rozsądnej wielkości rzędu kilku tysięcy. W pierwszym podejściu założyłem, że duża liczba miejsc parkowania to rezultat błędów w ustalaniu pozycji GPS i że pozycji będzie mniej jak się zmniejszy dokładność pomiaru. Konkretnie zamiast 8 cyfr spróbować zastosować 4 (tj. przykładowo 54.12345678 obciąć do 54.1234) i zobaczyć co wyjdzie.

Wyszło 40 tysięcy czyli redukcja taka sobie, ale ujawniły się dziwne miejsca koncentracji: w Gdańsku na ul. Pokoleń Lechii/Amber Expo, w Warszawie na ulicy Jagiellońskiej w okolicach numeru 88 oraz w Cedrach Wlk! W Cedrach na ul. Pionierów Żuław 42 (gdzie na Google Maps jest firma UEGZ). Wygląda, że wszystkie wymienione miejsca to stacje, tyle że serwisowe rowerów.

Ponieważ oprócz Warszawy LB sporadycznie są raportowane także, w różnych innych dziwnych miejscach, to wymyśliłem, że będę pomijał miejsca znajdujące się poza prostokątem o współrzędnych wierzchołków równych: 53.8/17.4 (dolny lewy) i 55.0/19.5 (górny prawy).

Na okoliczność LB z Pokoleń Lechii/Amber Expo dodałem warunek, że pomijane są także miejsca znajdujące się wewnątrz prostokąta o współrzędnych wierzchołków równych: 54.387395/18.630779 (górny lewy) i 54.385733,18.635221 (dolny prawy). Cedry zostawiłem w spokoju za to policzyłem kwantyle tych 40 tysięcy miejsc (bez 650 oficjalnych stacji):

kwantyl 25%   50%   75%   90%   95%  100%
------------------------------------------
wpisy     2    9     29  121    246 32760

Dwa wpisy to 4 minuty skoro każdy wpis jest co 2 minuty średnio. 50% miejsc było zajmowanych przez około 20 minut, a 5% wszystkich miejsc to parkingi na 8 godzin i dłużej (w ciągu 2,5 miesiąca przypominam) czyli dalej niewiele. Zamiast kombinować z dokładnością pomiaru można pominąć te miejsca które pojawiają się sporadycznie. Jeżeli za typowe przyjmiemy takie, które występują minimum 250 razy (około 5% największych wartości), to miejsc jest 2232 (w tym 650 stacji). Co ważniejsze udział wpisów dotyczących LB w całości wpisów to 5,6%. Spokojnie można tego nie analizować bo przecież i tak moje szacunki są przybliżone. A pominięcie LB ma tą zaletę że upraszcza rachunki. Na mapie te 5% najczęściej powtarzających się miejsc wygląda następująco:

Zostało osiem miejsc z liczbą wpisów większą od 5000, w tym 5 w Cedrach (gdzie jak już ustaliłem coś serwisują niechybnie). Te 3 duże dzikie parkingi to: Stężyca (2) oraz Sierakowice.

Reasumując: znalezisko spod Chwaszczyna niewiele zmienia. Nie będę uwzględniał w statystykach wykorzystania MEVO rowerów parkowanych poza stacjami.

wtorek, 9 lipca 2019

MEVO po trzech miesiącach


Rowery/dystanse

Rowery na stacjach 10111/12

Obiecuję ostatni wpis n/t Mevo. Następny po wakacjach, czyli po mitycznym 18 sierpnia (czemu mitycznym poniżej).

Obszerny wywiad z prezesem się ukazał 19 maja, ale ja go przeczytałem dopiero przedwczoraj (cały wywiad w repo na githubie, link poniżej). Prezes pisze, że:

26 marca na ulice wyjechały 1224 rowery [...] [Potem] liczba rowerów zaczęła spadać. Trafiały do serwisu, mieliśmy problem z ładowaniem. Zainteresowanie systemem w pierwszych dniach nas zaskoczyło [...] Zwiększyliśmy zatrudnienie do około 40 osób, przenieśliśmy serwis do większej hali w MTG. Codziennie wyjeżdża stąd około 250 rowerów. Przygotowujemy się do obsługi pełnej floty docelowych 4 tysięcy rowerów [...] Kolejne rowery planujemy dostarczać stopniowo, po 100-200-300 tygodniowo. Ostatnią partię dostarczymy 18 sierpnia.

Mój komentarz. Po pierwsze: czy wyjechało 1224 to ja nie wiem -- pewnie tak, ale w kwietniu średnio jeździło niecałe 800, a raczej jeździło 624 a 163 nie jeździło tylko było (wykazywane że są, ale nie przejechały nic). W tym kontekście twierdzenie prezesa, że przyczyną (wielokrotnie podkreślaną) problemów jest nadzwyczajne zainteresowanie rowerami jest cokolwiek niezborne ze stanem przygotowań. System jest sprawny na 800/4000 = 20%, a on jest zaskoczony, że rowerów brakuje. Nie wiem co prezes kończył za szkoły, ale z logiką na bakier jest... No i pytanie pomocnicze: gdyby wyjechało na przykład 2000 rowerów (w sensie wyjechało i jeździło) czyli 250% tego co jeździło (w kwietniu), to dalej byłaby klapa czy jednak nie? A te 2000 to 50% tego co miało jeździć. Albo inaczej po co system na 4000 rowerów skoro miało wystarczyć 1220?

Dwa: zatrudniają 40 ludzi do obsługi około 1000 rowerów (dane za maj). Ile musi być zatrudnionych do obsługi 4000 (czyli o 300% więcej niż mają) i to do 18 sierpnia (w trzy miesiące licząc od daty wywiadu).

Trzy: 250 wyjeżdżających rowerów z MTG to jak rozumiem rowery niesprawne, serwisowane i włączane z powrotem do ruchu. Hmmm... czy to oznacza, że z grubsza jest codziennie 250 serwisowanych (czyli wyłączonych z ruchu)? Że rower się psuje, to normalne więc nie ma w tym nic dziwnego, że są rowery popsute i trzeba je naprawiać. Wychodzi, że tych rowerów jest 250 z 1250 czyli około 20%. Albo i nie, bo dziennikarz nie dopytuje... Ale jeżeli tak, to na 4000 będzie 800 popsutych przy założeniu 20%. No może mniej będzie, bo obciążenie/rower będzie mniejsze, a rowery będą usprawniane pod kątem słabych punktów, ale nawet jak będzie to 10% to dalej jest 400 rowerów do naprawy codziennie czyli o 60% więcej niż teraz (40 ludzi:-) może nie wystarczyć.)

Cztery: jeżeli planują dostarczyć stopniowo po 100--300 tygodniowo a mają do dostarczenia 2800, to dostarczając 100/tydzień przez 3 miesiące dostarczą 2400. He, he... Gorzej że na dziś system wykazuje około i zaledwie 1500 rowerów. Pozostało 2500 do dodania, a tygodni do 18 sierpnia zostało 5. Wychodzi po 500/tydzień, starting from now...

+--------------------------------------------------+
|           |         średnio dzienne              |
| Miesiąc   +--------------------------------------+
|           |     NZB |      ZB | NZB+ZB  | NZB%   |
| ----------+---------+---------+---------+------- +
| kwietnia  |  624.93 |  163.87 |  788.81 | 79.09  |
| maja      |  893.13 |  179.03 | 1072.16 | 83.18  |
| czerwca   | 1094.97 |  172.07 | 1267.03 | 86.45  |
| lipca     | 1089.00 |  248.25 | 1337.25 | 81.58  |
+-----------+---------+---------+---------+--------+

NZB -- rowery ruszające się; ZB -- rowery które nie jeździły, ale były wykazywane. Porównaj też wykresy. Drugi wykres pokazuje dostępność rowerów na stacjach 10111/10112 (Sopot Mickiewicza/Armii Krajowej), które są najbliżej mojego domu. Dostępność liczona jako prosta średnia (liczba rowerów)/(liczba pomiarów)...

Generalnie trend jest OK tylko to ślimacze tempo. Załamanie lipcowe spowodowane jest przypuszczalnie (fatalną) pogodą (lipiec liczony dla tylko dla pierwszych 8 dni). Dane są przypominam tutaj.

poniedziałek, 1 lipca 2019

Mevo w czerwcu 2019

Zestawienie wybranych parametrów pomorskiego roweru miejskiego MEVO (maj--czerwiec 2019). Dystanse i średnie są w kilometrach. Zapis Łącznie x% nach. oznacza łączną długość odcinków z przeciętnym nachylenie x% oraz większym. Odcinki z nachylenie 5% i więcej stanowiły odpowiednio 0,06% (maj) oraz 0,05% (czerwiec) łącznego przejechanego dystansu (ŁPD) a z nachyleniem 3% i więcej odpowiednio 0,72% oraz 0,66% ŁPD. To tyle odnośnie potrzeby instalowania silników elektrycznych w każdym rowerze ponieważ Trójmiasto pełne jest stromych podjazdów. Chyba chodziło o coś innego z tymi silnikami...

Wyszczególnienie Maj Czerwiec Zmiana
Liczba rowerów 1333 1518 13.9%
Łącznie odcinki 235455 330074 40.2%
Dystans łącznie (km) 649904.3 974943.1 50.0%
Średnio na rower/dzień (km) 15.7 21.4 36.3%
Średnio na rower/miesiąc (km) 487.6 642.3 31.7%
Łącznie 5% nach. (km) 393.9 491.5 24.7%
Łącznie 3% nach. (km) 4687.1 6440.4 37.4%
Łącznie 2% nach. (km) 16722.7 23386.0 39.8%

Przypominam, że powyższe policzono w taki oto sposób iż: ze strony https://rowermevo.pl/ co 120 sekund jest pobierany plik locations.js który zawiera listę rowerów zaparkowanych na stacjach w systemie roweru miejskiego Mevo. Długość/szerokość geograficzna stacji jest w pliku locations.js. Wysokość npm. stacji (SRTM) dodałem korzystając z programu gpsprune.

Mapa najczęściej używanych odcinków:

Dane, że tak powiem źródłowe dotyczące ruchu rowerów MEVO maj/czerwiec 2019 są dostępne tutaj.

niedziela, 23 czerwca 2019

Tolerancja w fazie realnej

W PL był realny socjalizm a światowy postęp jest ewidentnie w fazie realnej tolerancji. Chodzącą oznaką tej tolerancji jest Israel Folau australijski rugbysta pochodzenia tongijskiego. Folau nie popełnił żadnego przestępstwa, ale stracił pracę, a teraz nawet nie może zbierać pieniędzy bo narusza. ,,As a company, we are absolutely committed to the fight for equality for LGBTIQ+ people and fostering an environment of inclusivity...''. Ciekawe czemu tego commitmentu nie idzie wpisać do kodeksu karnego skoro to takie ważne?

czwartek, 20 czerwca 2019

Koreańska sałatka z marchwii

Fajną sałatkę z marchwi, co ją pierwszy raz widziałem/próbowałem w Uzbekistanie, miałem okazję znowu spróbować przy okazji wycieczki do Elbląga. Bo w Elblągu jest restauracja uzbecka pn Nafisa (imię żeńskie). Nie było wielkim wyczynem po powrocie z Elbląga ustalenie jak toto się robi.

Sałatka nazywa się koreańska, bo wymyślili ją Koreańczycy. Jak się wpisze do google Морковь по-корейски to przepisów będzie multum (po rosyjsku) łącznie z filmami instruktażowymi. Ja znalazłem po polsku na stronie przepisy-julii.pl:

Składniki: Marchew -- 0,5kg, 1 cebula, olej -- 50g, czosnek -- 4 ząbki, papryka słodka, papryka ostra, pieprz czarny, kolendra mielona, sól -- 1 łyżeczka, cukier -- 1 łyżka, ocet 3% -- 3 łyżki.

Marchew trzeba obrać i zetrzeć na tarce w długie słupki. UWAGA: stosowną tarkę można na Allegro kupić (wpisać tarka/szatkownica słupki). Ja kupiłem prosty model firmy Julienne (numer ASIN: B01LZWFKP0; dostępny na Allegro) krojący na 2mm słupki i się sprawdza, jedyna uwaga to taka, że nie całą marchew da się pociąć no i trzeba uważać na palce. Być może droższe modele byłyby jeszcze lepsze.

Pokroić cebulę i smażyć na oleju do lekkiego zbrązowienia. Cebulę wyrzucić do marchewki. Dodać do octu cukier, sól, przyprawy i zalać marchewkę. Dodać sprasowany czosnek i wymieszać. Wstawić do lodówki na kilka godzin. UWAGA: do mojej sałatki nie dodaję papryki, tylko pieprz, sól i kolendrę.

Przepis nieco inny z ciekawymi komentarzami (dlaczego koreańska) jest tutaj.

poniedziałek, 17 czerwca 2019

MEVO: rozkminianie systemu (odcinek dwa)

Numery stacji w systemie MEVO są pięciocyfrowe i zaczynają się od 10, 11 oraz 12. Takich stacji jest 654 (albo 653 zależy jak liczył). Oprócz tego jest stacja 999993 o współrzędnych w Wawie(52.261177495785/20.968099236488), która zapewne omyłkowo jest wykazywana w zestawie (https://rowermevo.pl/mapa-stacji/). Jak się naciśnie guziczek Pobierz bieżące lokalizacje, to się dostanie plik CSV o nazwie locations_YYYY-MM-DD_HH-MM-SS.csv. Plik ten ma 704 stacje czyli o 50 więcej niż wykazywana na stronie. Te pomijane stacje mają numer zero.

Z tych 654 stacji 363 jest w Gdańsku 55,56%; Gdynia 145 (22,17%); Tczew 28 (4,28%); Sopot 27 (4,13%); Rumia 23 (3,52%); Reda 17 (2,60%); Puck 14 (2,14%); Inni 18 (Władysławowo, Kartuzy, Sierakowice, Somonino, Stężyca, Żukowo.)

Te 50 coś stacji-niestacji wygląda jakoś tak:

uid;number;name;city;latlng;bikes;bike;spot;bikeSpot;terminal;address
13915356;0;BIKE 99127;Tczew;54.08056000 18.79086222;1;1;0;;;

Mają dziwną nazwę a w atrybucie bike mają true (albo jeden) a w atrybucie spot mają zero (czyli false). Z tego wychodzi, że te stacje to nie są stacje tylko jakieś luźne rowery pozasystemowe. Taką mam koncepcję...

niedziela, 2 czerwca 2019

Mevo w maju

Ze strony https://rowermevo.pl/ co 120 sekund jest pobierany plik locations.js który zawiera (jak mniemam) listę rowerów zaparkowanych na stacjach w systemie roweru miejskiego Mevo. Jak rower zmienił stację to znaczy, że ktoś się nim przejechał (lub go przewieziono dla jakiś celów.)

Pobrane dane są dostępne tutaj. Konkretnie plik MEVO_bikes_ROKMIESIĄC.csv to plik CSV, którego każdy wiersz zawiera czas, idRoweru, stanBaterii oraz współrzędne geograficzne. Rejestrowane są tylko przemieszczenia, tj. na przykład jeżeli rower jest wykazywany przez 10 kolejnych pobrań jako zaparkowany w tym samym miejscu, to tylko pierwszy wpis jest zapisywany. Z kolei MEVO_tracks_ROKMIESIĄC.csv zawiera idRoweru, liczbę przemieszczeń oraz kompletny ślad w postaci par współrzędnych.

Plik MEVO_bikes_201905.csv (czyli za maj) zawiera 265 tys wierszy, plik MEVO_tracks_201905.csv zawiera 1550 wierszy (czyli zarejstrowanych rowerów w systemie). Tutaj uwaga: część wpisów/rowerów jest dziwna: są rowery jeżdżące po Warszawie, po Bałtyku a nawet w księstwie Monako. Szczegóły tutaj.

Na podstawie pliku MEVO_tracks_ROKMIESIĄC.csv obliczyłem łączny i średni dystans pokonany przez rowery w maju, pomijając ,,dziwne'' wpisy. Za kryterium dziwności przyjęto punkt znajdujący się na zewnątrz prostokąta 53.8--55.0/17.4--19.5 (długość/szerokość). W ten sposób zostało 1370 rowerów a odpadło 180 ,,dziwnych''. Konkretnie policzyłem poniższym skryptem:

#!/usr/bin/perl
use Geo::Distance;
my $geo = new Geo::Distance;

my $distGrandTotal;
my $distTotal;

while (<>) {  chomp();
  ($bike, $nodes, $track) = split /;/, $_;
  $track =~ s/[ \t]+$//;
  @trkpts =  split / /, $track;

  $distTotal=0;  $skipBike = 0;

  foreach $t (@trkpts) {
     ($lon, $lat) = split /,/, $t;
     if ($lat < 53.8 || $lat > 55.0 || $lon < 17.4 || $lon > 19.5 ) {##
        $skipBike = 1;
        print STDERR "SKIPPED $bike: lat = '$lat' / lon = '$lon'\n";
     } 
     else { 
        if ($latPrev > 54.0 ) {
           $dist = $geo->distance( "meter", $lonPrev, $latPrev => $lon, $lat );
           $distTotal += $dist;
        }
        $lonPrev =  $lon; $latPrev = $lat;
     }
  }

  unless ($skipBike) {
    $mean = $distTotal / 31;
    printf "%s;%.2f;%.2f\n", $bike, $distTotal, $mean;
    $distGrandTotal += $distTotal;
    $validBikes++;
  }
}

$grandMean =  $distGrandTotal / (31 * $validBikes);
print STDERR "Średnio: $grandMean ($validBikes)\n";

Wyniki i analiza

Minimum przejechane 0km, pierwszy kwartyl 12,8km, mediana 17,8km trzeci kwartyl 21,2km. Maksimum 30,7km. Przypominam, że są to średnie dzienne dla 31 dni maja. Oczywiście nie są to wielkości prawdziwe: po pierwsze dystans jest liczony jako proste pomiędzy punktami (rejestrowanymi co 120s); po drugie nie wszystkie przemieszczenia polegają na pedałowaniu--czasami rower jest wieziony. Arbitralnie przyjmijmy że prawdziwa wartość to 200% zarejestrowanej (to chyba dużo mimo wszystko). Dalej załóżmy że gdyby z roweru korzystało się 6 godzin na dobę (można by policzyć ile się korzysta ale tego jeszcze nie zrobiłem)--co dalej nie wydaje się czymś nadmiernie wyśrubowanym (połowa czasu od 8 rano do 20 wieczorem). Wreszcie przyjmijmy 12km/h jako prędkość przemieszczania się (jak na pojazd z silnikiem -- moim zdaniem -- już mniej się nie da). Wychodzi 6 x 12 = 72km. A jest 30km czyli nawet nie połowa...

Rozkład średnich przedstawia histogram poniżej