OR-tools

Niedawno xpil wrzucił zagadkę dotyczącą rozmieszczenia liczb na wierzchołkach dwunastościanu foremnego. Nieco rozochocony zeszłorocznym Advent of Code (który w znacznym stopniu odpuściłem, za wiele srok) stwierdziłem, że „to się zaprogramuje”.

Suma liczb na każdym boku była dość spora, ale istniało ograniczenie w postaci wymogu, że muszą być liczbami pierwszymi, więc może nie będzie tak źle? No bo na ile sposobów można wybrać pięć liczb z nieco ponad trzystu tak, by suma dawała określoną wartość? Otóż niestety na wiele i po wstępnej przymiarce wiedziałem, że brnę w ślepą uliczkę.

Przypomniałem sobie o Z3 solver, które bywa wykorzystywane w CTFach do rozwiązywania zadań i wyglądało trochę na szwajcarski scyzoryk. Tyle, że nie znam tego rozwiązania – nigdy nie znalazłem czasu, by się nauczyć. Ale od czego mamy AI? Porozmawiam z chatem, na pewno pomoże.

Rozmowę zacząłem jednak od problemu ogólnego, trochę licząc, że jest jakiś wyjątkowa właściwość lub algorytm dla tego dwunastościanu. Gdy poprosiłem o kod w Pythonie, ku mojemu zdziwieniu zaproponował rozwiązanie z użyciem nie Z3, tylko OR-tools. Zerknąłem i okazuje się, że Microsoft zrobił Z3, a Google zrobiło coś może mniej uniwersalnego, ale podobno szybszego, przeznaczonego do optymalizacji.

Przyznaję, że OR-tools robi dobre wrażenie. Podobnie jak Z3 nie jest proste i intuicyjne, ale po krótkiej chwili walki z chatGPT udało się złożyć program, który znalazł rozwiązanie. W bardzo krótkim czasie, rzędu kilkunastu sekund. Co ciekawe, algorytm jest niedeterministyczny. Rozwiązania nie podaję, bo jest na stronie z rozwiązaniem zagadki – na oko bardzo podobne. Jeśli komuś zależy to znajdę to co chatGPT zaproponował.

To teraz wypadałoby nauczyć się obu narzędzi, ale raczej nie znajdę na to czasu. Za to przynajmniej będę wiedział, że istnieją i co mniej więcej potrafią.

I ciekawostka. Wiecie co to jest „LUB-przykładowe narzędzia”? Jest to odpowiednik „OR-Tools Examples” w tłumaczeniu na oficjalnej stronie Google. To tak dla ustalenia, gdzie jesteśmy z automatycznymi tłumaczeniami. Chciałem napisać, „z AI”, ale chyba nie było tam wykorzystane – Gemini tłumaczy znacznie lepiej i całkiem sensownie.

Bieganie i rower 2024 – podsumowanie

Pierwszy bieg 14 stycznia, czyli można powiedzieć, że biegam całorocznie. Dla przypomnienia, ostatni bieg w zeszłym roku to 17 grudnia. Niestety, później dłuższa przerwa, bo aż do początku kwietnia. I zmiana trasy. Niestety nowa jest okrążeniem, które łącznie z dobiegiem i „odbiegiem” ma ok. 4,7 km. Co prawda już w lipcu zrobiłem przymiarkę do dwóch okrążeń, co łącznie dało ok. 7,7 km, ale… trochę za dużo, szczególnie w upale. Trochę nieelastycznie, szczególnie w niesprzyjających warunkach. Nie utrzymało się i w sierpniu wróciłem do jednego okrążenia.

Bieganie 38 aktywności, 185 km, 17,5h w ruchu, czyli regres.

Gdybym miał wskazywać na przyczynę spadku to pewnie głównie zmiana trasy. Dłuższe dojście do miejsca w którym biegam kanibalizowało czas na aktywność. Brak elastyczności nie sprzyjały stopniowemu wydłużaniu trasy, co przełożyło się na finalny wynik. Dopiero w grudniu (15 grudnia, ostatni bieg) sprawdziłem inny wariant dobiegu, który pozwala na pewną elastyczność w wydłużaniu trasy. Myślę, że 5 do 5,5km się da wycisnąć z jednym okrążeniem, co pozwoli na dość płynny zakres 5-8 km.

W kwietniu uruchomiłem też rower, głównie komunikacyjnie, na krótkich dystansach. Było kilka dłuższych (ponad 20km) rekreacyjnych, ale rower skończył sezon szybko w tym roku, bo już we wrześniu.

Rower 53 aktywności, 324 km, 22,5h w ruchu. Czyli niedramatyczny, ale jednak regres.

Z ciekawostek organizacyjnych/technicznych – zacząłem biegać z komunikatami głosowymi, które Strava ma zrobione raczej słabo. I – z różnych względów – rozważam porzucenie Stravy na rzecz FitoTrack. Jeden bieg był w obu systemach naraz i wydaje się, że może być OK. Ale nic nie jest przesądzone.

Niesmart

Przeczytałem wpis o odejściu od smartwatcha i przypomniało mi się, że mam podobnie. Tyle tylko, że nigdy nie miałem smartwatcha. Czego zatem używam do pomiaru czasu? Korzystam albo z zegarka – mam tani kwarcowy ze wskazówkami Casio MQ-24. Plastikowo-gumowy. Mam go od 8 lat, wymieniony pasek i samodzielnie bateria dwa[1] razy. Pasek wymieniony na zastępczy, a bateria samodzielnie, bo oryginalny pasek czy wizyta u zegarmistrza to pewnie połowa ceny nowego zegarka. Albo po prostu coraz częściej do sprawdzania godziny korzystam ze smartfona. W sumie częściej korzystam z tej opcji, bo i datę podaje, i pogodę.

Ale wracając do tematu, o smartwatchu myślałem wielokrotnie. Albo nawet nie o smartwatchu, a smartbandzie. Bardziej pod kątem aktywności fizycznych typu jazda na rowerze czy bieganie. Obecnie po prostu rejestruję je na telefonie. Co oznacza jazdę z telefonem w kieszeni albo plecaku w przypadku roweru. I bieganie z telefonem w garści. Czemu w garści? Dość często zerkam na ekran, by sprawdzić dystans i tempo.

Czemu się nie zdecydowałem na zakup smartwatcha czy smartbanda? Jakieś kulawe te urządzenia są. Po pierwsze, wymagają częstego ładowania. Może nie tak częstego jak telefon, ale w porównaniu z zegarkiem, który działa latami na jednej baterii jest to coś, o czym musiałbym pamiętać. Pewnie do przeżycia, ale trochę zniechęca. Nawiasem, żeby nie zmiana czasu, to zegarka bym nie regulował przez te dwa lata. Zegarki kwarcowe są dokładne.

Po drugie, smartwatche są drogie[2], a smartbandom brakuje funkcjonalności. No bo chciałbym sobie pójść biegać czy to z samym smartwatchem, czy mając smartfona głęboko schowanego i chciałbym, żeby rejestrował trasę (GPS), podawał na bieżąco dane. Oczywiście tętno, saturacja, tego typu rzeczy też powinny być rejestrowane i wyświetlane na bieżąco. Idealnie jakbym brał tylko zegarek, który ma GPS i wszystko poda na bieżąco, a w domu połączy się z siecią i ew. zgra dane.

Po trzecie, ekosystem jest słaby. Popularne – i całkiem niezłe IMHO – Xiaomi Mi bandy nie mają integracji ze Stravą. Istnieją sposoby na jednokierunkową integrację, ale mi się marzy, żeby działo się to na poziomie systemu operacyjnego, a opaska powinna być tylko działającym na bieżąco wyświetlaczem. Czyli chciałbym mieć na niej na bieżąco dane o aktualnym dystansie, tempie itp.

Oczywiście, można zrezygnować z zerkania na ekran i zamiast tego próbować używać powiadomień głosowych. Niestety bardzo słabo konfigurowalnych w Stravie. Można też zrezygnować ze Stravy i korzystać z innego oprogramowania. Być może wtedy będzie wsparcie dla Mi Bandów. Tyle, że nie chce mi się zmieniać przyzwyczajeń. Chociaż przyznaję, że coraz bliższy jestem złamania się i porzucenia Stravy[3]. Może od przyszłego roku, kto wie?

[1] W sumie już trzy, bo właśnie wymieniłem kolejny raz. Z tego co pamiętam ostatnia wymiana była nie na zalecane SR626SW, tylko LR626, która w dodatku trochę już leżała. Wady i zalety kupowania zestawów różnych baterii. Wytrzymała zauważalnie krócej.
[2] No dobrze, zależy jakie. Zakładając, że trzymałbym się uznanych marek i poszedł na lekki kompromis w postaci braku pulsoksymetru, to najniższe modele to 600 zł, więc bez dramatu. Z drugiej strony to więcej, niż cały mój sprzęt do biegania, od początku przygody.
[3] Testowałem w jednym biegu FitoTrack, łącznie ze Stravą. Czyli dwa pomiary naraz. Wrażenia nawet pozytywne, większa konfigurowalność powiadomień głosowych.