Блог о математике и бизнесе Алексея Тарасова
970 subscribers
95 photos
9 videos
2 files
95 links
Пишу о матмоделях и прикладных задачах.

Сотрудничество: @tarasov_math
Сайт https://tarasov.expert
Download Telegram
Раздарил там опять все свои Цели, надо будет новые покупать. Опять видел, как у человека шестерëнки в голове скрипели: "как это, что одна важная часть производства не должна каждый месяц работать"? Она же простаивать будет.
Это к задачке о 4 братьях и ложной оптимизации, ну и Цели Голдратта.
👏45🔥195👍3
#задачка #кейс
Задачка из реальной жизни. О нетривиальном ценообразовании.
Был рейс Сан-Франциско – Лос-Анджелес – Гонолулу забыл уже какой авиакомпании.
Цена билета Лос-Анжелес – Гонолулу стоит скажем 300$, а цена билета Сан-Франциско – Гонолулу 200$.
На плече Лос-Анжелес – Сан-Франциско самолет летал полупустым.
Зачем авиакомпания выставлять более высокую цену на более короткий участок? Это же не логично.

Все подсознательно думают, что цена должна соответствовать себестоимости. Это конечно полная ерунда, цена должна помогать компании заработать больше.
Когда компания выставляет цену у нее есть грустный выбор. Выставив цену повыше, она потеряет «нищебродов», а выставим цену пониже заработает меньше на «богатеях». В идеале бы заняться ценовым разделением клиентов, когда мы «богатеям» продаем дорогие билеты, а «нищебродам» дешевые. Но авиабилеты продаются практически анонимно и это невозможно. Зато можно выставить более дешевую цену на более длинный рейс. Чтобы кому реально надо, мог приехать из Лос-Анжелеса в Сан-Франциско и сэкономить 100$.
👍29👌116🤔3
Я на прошлой неделе давал рекламу. Результаты какие-то непонятные. Кажется много ботов набежало. Давайте-ка я проведу на небольшой опрос.
Третья попытка, простите за спам.
Как вы узнали про мой канал?
Anonymous Poll
24%
стартап дня
25%
стартап века
6%
Pro IT
12%
Digital Finance
6%
Логистика без границ
27%
другое
🤔15🤯86👍2
#кейс
Мои коллеги когда-то делали обследование для одной компании, как оптимизировать ежедневный развоз товаров (снова пресловутая Vehicle Routing Problem). И те на этапе обследования заметили одну штуку, которая сэкономила клиенту кучу денег. Клиент старался загружать машины на 100%. В результате, если машина ломалась, они несли очень большие издержки. Оказалось, что для экономии не обязательно минимизировать парк (и снова привет очевидные, но неверные критерии). А наиболее экономичный вариант оказался при загрузке в 80%. Клиенту тогда продать не удалось, так он получил основную пользу от этого секрета, а сам проект свернул.

Вам я тоже этот секрет его дарю совершенно бесплатно 😊

Эта идея может много к чему прикладываться.

Я как фрилансер слежу, чтобы у меня было свободное время или какие-то проекты, которые я могу подвинуть. Я всегда готов к новому важному проекту. Разумеется, бывают ситуации когда у вас идет какая-то супер тема и вы ею загружены на 100 или даже больше процентов (за счет сна и отдыха). Но всегда надо помнить, что вы автоматически что-то теряете.
Подводя итог напишу, что надо уметь отказываться от лишнего, чтобы у вас было свободное место для нового. И новый год идеально для этого подходит. Подумайте, что вы можете оставить в 2023 году.

Всех с наступающим годом, пусть он будет у всех замечательным!
14👍11👏7🍾6🔥4
#текучка

Про визуализацию данных и про мощные лапищи.

5 лет назад у меня был заказ для клиента. У клиент делал регулярно рутинные операции в Экселе, разбивал товары по ABC сегментам, считал средние и максимальные объемы, строил по этим данным графики. Он сделал заказ всё это автоматизировать. Во-первых, в этой работе было слишком много рутины, и было проще один раз написать программу. Во-вторых, объем данных был уже такой, что все не влазило целиком в одну эксельку, а сам эксель уже дико тормозил.

Проект был короткий, на 2-3 недели. Я им быстренько сделал небольшое вебприложение, в котором сначала все данные загружались, потом обсчитывались результаты. Помнится, там можно было генерить несколько типов отчетов, выбирать периоды и склады, для которых все считалось, можно было открывать вкладки и всю красоту сохранять в файлики, включая изображения.

Сейчас вспоминаю и удивляюсь как я умудрился сделать достаточно большую штуку за несколько недель. При этом мне тогда пришлось освоить с нуля язык R и библиотеку приложений shiny для создания веб приложений. Я просто выбрал пару подходящих инструментов, освоил его и быстренько сделал на нем новый проект. Пока я делал проект у меня постоянно в голове крутилась фраза «как мощны у меня лапищи».

Клиент остался доволен, и мы продолжаем с ним работать. Прямо сейчас делаем большой проект, в котором снова будет визуализация данных.

А у вас есть рутинные задачи, которые хочется автоматизировать?
👍17👌108🔥2🤔2
#текучка #отдых
Я на январские праздники буду, как и все, отдыхать. Поеду кататься на лошадках на Алтай.

В таких местах очень хорошо думается. Подбросьте мне интересных задачек из вашей работы, чтобы было о чем подумать в отпуске.

Завтра открываю созвон с 17 до 19. Приходите познакомиться и поболтать. Чат открытый, я буду вести запись и может потом выложу интересные моменты. Ссылку пришлю перед началом (яндекс телемост).

UPD. Если кто-то хочет поговорить не публично, то просто напрямую можно договориться.
🔥13👍106🤔6
#новый_год

Подведу личные итоги 2023 года. Лично у меня он получился очень мощный.

• закрыл стартап
• записался на воллейбол, сначала классику, потом пляжку.
• Похудел на 10 килограмм, думаю это не предел.
• пошел в найм, не понравилось
• реанимировал свою частную практику, 2 месяца полет нормальный
• развелся (с детьми продолжаю заниматься часов по 15 в неделю)

В 2024 буду продолжать делать бизнес практику, по плану будет определенный спад заказов в первой половине года, но думаю пробьюсь.

А как прошел год у вас ?
🤔17👍7🔥52😢1
Трагедия общин.

#математика #теория_игр #парадокс

Трагедия общин очень важный парадокс теории игр, который на мой взгляд должен знать каждый.
Имеется деревня, рядом с которой есть пастбище, где каждый может пасти свой скот.
Каждый член общины может увеличить число своего скота, увеличив свой доход. При этом плодородие пастбища сократится незначительно. Однако, если так сделают все жители деревни, то пастбище станет намного хуже. Уменьшать личный выпас будет при этом все равно невыгодно, так как его личный выигрыш будет меньше потерянного дохода.
Получается, что каждому члену общины выгодно только увеличивать использование пастбища, что приводит в итоге к перевыпасу и порче пастбища.

В теории игр это называется следующими словами равновесие по Нэшу может не совпадать с парето-оптимальным состоянием.

Этот парадокс является фундаментальной проблемой человечества и имеет массу проявлений. Он прямо как черепаха лежит в основе цивилизации.
По сути, речь идет о конфликте частных и общественных интересов.
Большое количество детей в средние века было ровно по этой причине, наделы давали в пропорции людей в семье. Рожать детей было способом увеличивать свой надел и количество работников. Вечный переизбыток населения приводил к регулярному голоду и войнам.
Сейчас пенсии создают противоположную проблему, наличие пенсий делает воспитание детей экономически невыгодным. При этом, однако пенсионный фонд держится не столько на деньгах сколько на рабочей силе, и если детей будет слишком мало, то некому будет обеспечивать стариков.
В Советском Союзе этот парадокс не был особо известен, так как из него довольно очевидно следовала неэффективность социалистического строя.

При этом теория игр, даже именно этот конфликт частного и общего используется как кирпичик для строительства социальных институтов. Например, для обеспечения дисциплины в армии.
Я буду в будущем описывать различные примеры того, как эти парадоксы проявляются в реальной жизни и где можно эффективно применять эти парадоксы и теорию игр в целом.

В заключение процитирую Гомера Симпсона: «За здравствует пиво, источник и решение всех наших проблем!»
👍18😍8🔥76
#новости #невозможное

Люблю решать невозможные вещи. Как говорил мой учитель физики, самые интересные задачи те, которые невозможно решить.
Иногда можно углядеть какие-то нюансы, которые позволяют реализовать даже очевидно невозможную вещь. Одна из таких известных невозможностей - невозможно выиграть в тетрис. Там же просто не предусмотрена победа.
Однако тетрис это программа, а значит в ней есть ошибки. И 21 декабря 2023 года человек таки доиграл до такого момента, когда тетрис сломался.
При этом после 29 уровня фигурки падают с максимальной скоростью, где на кнопки физически невозможно нажимать. А еще там глючный генератор цветов фигурок, из-за чего там есть уровень, в котором все фигурки практически черные.

Но если долго повозиться и придумать разноообразные трюки, то оказывается можно победить даже тетрис.
https://www.youtube.com/watch?v=GuJ5UuknsHU
16👍4🔥3👎1🤩1
P=NP как форсмажор.

Я и мои коллеги с математической точки зрения занимаемся задачами дискретной оптимизации.
В этой области есть классическая проблема, так называемый класс NP-полных математических задач, про который неизвестно можно ли решать эти задачи быстро (время решения. это какая-то степень от длины входа). Это одна из проблем тысячелетия.

Можно придумать достаточно простые примеры уже на 100 переменных, которые на практике никто не умеет решать. Есть пример Финкельштейна для задачи о ранце.

В бизнесе нам приходится решать задачи, в которых переменных обычно намного больше, миллионы. При этом достаточно часто задачи формально NP-полные. Однако на практике это не приводит к проблемам, так как реальная жизнь проще фундаментальной науки.

И наконец случилось. У моих коллег у клиента оказалась задача, которая реально не может решиться и которая очень похожа на пример Финкельштейна. А контракт уже подписан. По сути получается, что в рамках контракта исполнитель должен решить одну из задач тысячелетия 😂
Попробую помочь выкрутиться из затруднительной ситуации, а в будущем предложил им писать необходимость решения P=NP как форсмажорным обстоятельствам. 😀
😁137👍41
Парадокс заключенного.

#математика #теория_игр #парадокс

Еще один парадокс теории игр, похожий на трагедию общин. В СССР более известный.

В один небольшой городок заехали воры-гастролеры и сразу же произошла кража.
Шериф успел поймать обоих воров до того, как они покинули город, посадил их по отдельным камерам и сделал следующее предложение (каждому по отдельности).

Я знаю, что вы специально приехали сюда чтобы совершить ограбление, больше некому, да и вы не приехали бы сюда просто так. Потому я предлагаю вам следующий вариант: напишите чистосердечное признание. Если вы напишете оба, по закону вы получите 1 год тюрьмы. Если один напишет, а другой нет, то написавшего я освобожу за сделку со следствием, а второго упеку на 5 лет. Если же вы оба не напишете признание, то вам придется отсидеть по 15 суток за бродяжничество, а потом мне придется вас отпустить за отсутствием улик.

Каждый из воров думает. Если напарник напишет признание, то мне выгодней будет написать и сидеть всего 1 год, чем не писать и сидеть целых 5. Если же он не напишет признание, то мне все равно выгодно написать и ничего не сидеть, чем сидеть 15 суток. И пишет чистосердечное признание.

В результате они оба сидят по году, вместо того чтобы отсидеть по 15 суток.

Реальные воры придумывают свои законы (понятия), которые мешают эгоистичному поведению отдельных членов. И это пример социальных институтов (правда внутри специфического сообщества) для борьбы с нежелательными равновесиями по Нэшу.
🔥75👍3👏2
Channel name was changed to «Блог о математике и бизнесе Алексея Тарасова»
#текучка
Я учился в СУНЦ МГУ, бывшая ФМШ-18. Это грубо говоря Хогвартс для математиков. Время от времени встречаю среди коллег и партнёров выпускников той же школы. Очень приятно. Сегодня снова встретил.
👍10🔥5👏3
Где в жизни эти возникают парадоксы заключенного?

#парадокс

Да везде. Накидаю примеров.

Есть военный вариант парадокса – ловушка Фукидида или дилемма безопасности. Мы в нем прямо сейчас живем.

Если есть вопрос сколько вы стоите – то ответ простой, ровно столько сколько стоит самый дешевый сотрудник, который умеет то же самое. Даже если вы собственник, скажем владелец кафе, вы не сможете вынимать из бизнеса больше, чем зарплата наемного директора в аналогичном кафе.

Отсюда привычка считать стоимость услуг «по Марксу» от затрат. Это имеет смысл только если есть еще куча народа которые могут делать тоже, самое и снижать цену. Ниже себестоимости просто не снизишь.

Иногда кстати снижают и ниже себестоимости. Есть эффект Волмарта, у которого все подрядчики в итоге разоряются. Потому что на аукционе каждый раз кто-то умудряется опустить цену ниже себестоимости.

Поэтому Яндекс всегда идет в первую очередь в «красные океаны», рынок такси например. Потому что там всегда найдутся те, кто будет сотрудничать и Яндекс сможет подмять индустрию под себя.

Как приструнить пиратов? Берем на службу одного из главных пиратов, он зная все секреты и слабые места пиратов быстро их всех ловит. Классический принцип разделяй и властвуй.

Из-за парадокса заключенного/общин малоэтажная застройка крутая вещь. Вообще зонирование пространства это в первую очередь борьба с этими парадоксами. В квартире должно быть не слишком много людей, в подъезде должно быть не слишком много квартир, в доме должно быть не слишком много подъездов. На частной территории не слишком много домов. Лучше, чтобы было больше уровней, но на каждом уровне меньше участников. Тогда вся территория будет в достаточной степени чья-то, что качественно все преображает. Людям выгодно вкладываться в уют, люди начинают дружить с соседями, ставить беседки и мангалы и жить гораздо более счастливо.
👍168
#выступление
В эту субботу в 12 часов по Москве, у меня будет эфир с Ксений Кузнецовой о стартапах, эффективном программирования и другом. Приходите послушать и подписывайтесь на блог Ксюши.

Еще хочу добавить, что мир удивительно тесен временами. Я в 1999 году сделал игру мафия в интернете, как раз 25 лет назад на январских праздниках прогал.
Внутри получившейся тусовки были свадьбы и дети, и Ксения одна из таких. Так что я в некотором роде её крестный отец 😄. Её папа Евгений Кузнецов из СУНЦа, победитель олимпиад по информатике. И еще он написал лучший железный алгоритм для обработки jpeg, за который директор Интела ему жал руку и который до сих пор в интелловских процессорах и сидит, как я понимаю.

Ксения уже сама жжет, вместо того чтобы становиться чемпионкой по виндсерфингу пошла таки в ВУЗ, а там будучи студенткой уже несколько лет работает во ФРИИ, помогает продвигать на запад крутые проекты. Я для себя несколько лет назад пришел к выводу, что век программирования проходит и надо заниматься стартапами и бизнесом. И тут я вижу, что юное поколение знает все лучше нас. Причем если для меня понимание того, как устроен бизнес давалось кучей потраченных сил, времени и денег, и все равно это понимание на уровне иностранного языка. А для Ксении эти понятия просто родные. Короче я уверен, что дочка вполне может обогнать папу. Все для этого есть.

В общем подписывайтесь к ней на канал, и давайте вместе перевернем мир.
👍16🔥43
Почему часы тикают тик-так?
#физика #программирование #ооп #мысль

В их механизме есть деталька под названием анкерная вилка, которая управляется мятником и тормозит шестеренку, чтобы часы шли медленно и равномерно. У этой вилки два зубца, один тормозит по ходу движения шестеренки, а другой против хода. В результате хотя они симметричны, звук получается чуть-чуть разный.
Таким образом мы можем кое-что узнать про устройство часов даже не разбирая их.
В программировании это называется протечка абстракций. Это важное понятие, которое сформулировал в своем эссе Джоель Спольский.

Я со своей колокольни скажу, что по этому причине на этапе написания прототипа кода никогда не пользуюсь объектно-ориентированным программированием. Любой код начинается с прототипа, а в стартапе код – это, по сути, очень большой прототип.
Потому что, когда пишешь прототип ты не знаешь, какое в нем место ключевое – что будет скажем тормозить и что надо будет переписывать и ускорять. Легко может оказаться, что весь код надо будет переписать ради эффективной работы одной важной части. Никогда заранее не знаешь, какая фича выстрелит у клиента, и в какую сторону будет развиваться и обобщаться код. То есть по сути дело даже не в ООП, а в том, что заранее неизвестна архитектура кода. В результате любые уровни абстракции навешивать оказывается рано. Все равно протекут и будут только мешаться.

Когда код долго уже работает можно начинать его рефакторить и создавать для часто встречающихся штук классы. Но все равно потом прилетает неожиданно новое требование, из-за которого весь код приходится перелопачивать.
В общем на мой взгляд ООП не дружит со стартапами и прототипами.

Завтра напишу, какой подход к архитектуре кода сложился у нас в команде.
👍113🔥32
Фиче-ориентированное программирование.
#программирование #архитектура

В нашей практике сложился следующий подход, который мы назвали фиче-ориентированным.

У нас есть своя специфика, так как мы в основном мы пишем модели для так называемого солвера целочисленного программирования.

Есть громадный конфиг на сотни фич. Каждый кусок работы представляет собой отдельную фичу, которую можно выключить, и мы получим предыдущую версию кода. Основная часть кода представляет собой большую функцию, в которой идут подряд if-ы, то есть проверки включения тех или иных фич. Понятно, что мы делим функцию на части, но суть от этого не меняется, есть одна большая модель, которая по-разному работает при разных параметрах. Большинство фич независимы друг от друга, как бусы на ожерелье.

Но некоторые фичи оказываются зависимы и приходится разбираться со всевозможными подслучаями, я это называю гиперкуб (10 разных флагов ~ 1024 комбинаций этих флагов). С гиперкубом мы боремся следующими способами. Там, где можно рефакторим фичи, чтобы из нескольких получилась одна. Если это невозможно, а получается куча нетривиальных случаев, то важные делаем, а на неважные пишем сообщение об ошибке Not implemented yet и останавливаем программу.

Такой подход хорошо, работает если вы делаете математическую модель и работаете с солверами. Достаточно гибок и менее громоздок по сравнению с другими вариантами. Хотя хочется его сделать еще менее громоздким.

Бывает, нам надо решать похожие, но разные задачи. Например, планирование расписание работы конкретных людей на месяц, и одновременно стратегическое планирование на год вперед, где нет конкретных людей. Эти задачи как сиамские близнецы, с одной стороны существенно отличаются, с другой стороны куча общего.
1. Отдельно делать модели плохо - получается копипейст код, который потом провоцирует ошибки и который невозможно поддерживать.
2. Делать ООП модель с наследованием тоже совершенно неудобно, по причинам, описанным в предыдущем посте.
3. В результате ничего лучше, как сделать if-ы которые включают ту или иную голову мы не придумали. А с if-ами в целом все норм. Функция получается главная большая, но в целом читабельная, а сам код по общему числу строчек вполне компактный.

Могу еще добавить, что каждая фича имеет свой номер, делается в отдельной ветке гита с тем же номером, так что разработка становится достаточно удобной.
До нас я такой подход видел только в солвере SCIP.
Я не претендую на его универсальность, но для создания моделей и запуска их в солвере лучше мы ничего не нашли. Эта модель если что, у нас формировалась с 2009 года. ООП и функциональщину мы хорошо знаем. Я бы еще хотел поиграться с Julia и на макросах сделать DSL, но в целом это мелочи.
🔥7👍4
DeepMind AI решил 25 из 30 геометрических задач международных школьных олимпиад.
#новости #ии

Многие говорили, что математика будет последним бастионом для искусственного интеллекта. А на практике оказывается одним из первых. А я наоборот всегда понимал, что эти задачи решаются хоть и сложно, но в некоторой степени алгоритмом экономного перебора идей.
Так что все поломано. Я на сам этих задачках всегда и сыпался, не любил в школе геометрию, не знаю как меня потом в геометрию и занесло.

Впрочем олимпиадные задачки обладают важным свойством роднящим их с шахматами и Go. Там очень четко все сформулировано и каждая конкретная ситуация очень компактно описывается. Пространство поиска очень большое, а со всем остальным все легко. Так что DeepMind научился пока решать только задачи в стиле "пойди туда не знаю куда, найди конкретную штуку".
В математике куча задач, где непонятно как их вообще формализовать. Интересно, когда ИИ до таких задач доберется.

https://www.nature.com/articles/s41586-023-06747-5#MOESM1
👍13
Могучие лапищи 2.

#текучка #воронка_продаж

Писал в конце декабря пост про могучие лапищи и накаркал. Прямо на следующий день, 28 декабря с тем же заказчиком закрыли первый этап проекта, стали обсуждать второй этап, где как раз много визуализации и фронтенда. И обнаружилось что вместо пары месяцев сдавать надо 15 января! 🤯 То есть мало того, что у нас фактически две недели вместо 6-8, да еще это новогодние праздники.
Это наш косяк, мы могли заранее уточнить дедлайн второго этапа и спокойненько начать делать еще в начале декабря, но мы дождались окончания первого.

Ну что, сделали и сдали. 🍾

На этот раз я поступил по-другому. Я там тоже сидел прогал какое-то время, но главное нашел крутого фронта (фронтенд разработчика), который нам за 4 дня сделал самые важные компоненты (визуализация данных на карте и всякие диаграммы). При этом хоть и берет довольно конский ценник, но в итоге это оказалось даже не дорого, так как нормальный фронт до этого закладывал на эту работу не меньше 10 дней. Спасибо, Коля.

Помимо работ с фронтендом было еще куча сложных, но со всем разобрались. Удобно работать от ограничений, просто определяли, что реально важно успеть к 15 января, а на что можно забить. Сразу у всех глаза горят.

Подводя итог, в прошлый раз получилось закрыть все самому, теперь как менеджеру. Даже на Алтай скатался на январские праздники 🐴. Следующий уровень не допускать авралов, но так чтобы все-таки глаза у людей горели и работа спорилась.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105👏1