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

Сотрудничество: @tarasov_math
Сайт https://tarasov.expert
Download Telegram
Media is too big
VIEW IN TELEGRAM
#выступление #бизнес
В пятницу делал доклад в закрытом сообществе, но мне любезно разрешили выложить видео. Выкладываю.
3🔥3
Чем ООП опасно при решении оптимизационных задач.
#ооп #mip #история

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

Вспоминается анекдот "Хармса":

Однажды у Ф. М. Достоевского засорилась ноздря. Стал продувать — лопнула перепонка в ухе. Заткнул пробкой — оказалась велика, череп треснул. Связал веревочкой — смотрит, рот не открывается. Тут он проснулся в недоумении, царство ему небесное.

Рецепт от этого следующий. Автор системы должен владеть не только парадигмой ООП, но и другими (ФП в первую очередь конечно). Чтобы уметь осознавать, когда он её использует, а когда нет. Человек в одной парадигме не осознает что он её использует. Мы не особо замечаем воздух, пока не попадем в воду.

А еще лучше когда задачу решают не прогеры, а математики всё таки.

Это меня пригласили экспертом поработать в одном проекте. Смотрю на него и немного грущу. Проект в целом живой, но на анекдот Хармса местами смахивает. И проснуться нельзя ))
👍8🤔2🤨1
Метод Дедала.
#касдев #триз #рецензия #мысль

По мотивам доклада. Осозналась еще одна мысль.

Чтобы проект не провалился - надо собрать все требования. А чтобы он оказался суперуспешен, надо догадаться какие требование лишние. Чтобы потом говорили: а что так можно было?

Яркий пример - Когда инженеры говорили Стиву Джобсу что телефон сделать меньше нельзя, он бросил телефон в аквариум и телефон пустил пузыри. И Стив сказал - если есть пузыри, то есть и свободное место.
Тут прикол в том, что инженеры привыкли работать с существующей номенклатурой и разрабатывать минимум новых деталей, потому что так дешевле. А такая крупная компания как Apple может на это забить и сделать всю цепочку производства с нуля.

Полезное упражнение выключать то или иное требование, даже если очевидно, что оно обязательное.

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

В этом смысле очень полезная книжка "Приключения Алисы" Льюисса Кэррола, это учебник по отключению здравого смысла и изучению ситуации, где старые привычки сбоят.

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

А торкнуло меня после того, как я рассказал девушке, что именно у меня не получается с рублем, то есть сработал метод утенка.
👍10
#математика #фракталы #транзакции #кейс
Есть такой интересный фрактальный эффект - длина береговой линии зависит от масштаба карты. Чем более точная карта, тем больше длина береговой линии и она не сходится к какому-то числу.
Это значит, что не существует параметра "длина береговой линии".

Наткнулся на аналогичную историю в жизни. Заказчик спрашивает, почему у нас грузооборот не сходится. В одном случае 280 миллионов, в другом 336. Оказалась та же история, потому что была разная детализация. В одном случае это грузооборот по дням, а в другом грузооборот по транзакциям.

Если в течении дня по одному типу товара были транзакции и в плюс и в минус, то общее изменение количества товара в день будет меньше общего изменения товара.

Такой вот фокус с, казалось бы, точно определенными параметрами.
👍12😁1
Мне пора делать ООО. В ИП нет ничего плохого, некоторые соискатели и заказчики пугаются так как "не солидно". И ещё иногда бывает нужна корпоративная почта. Вопрос аудитории. Как вы думаете какое название будет лучше?
Anonymous Poll
20%
Солидное и безликое типа AT consulting
21%
Математическое типа ООО бифуркация
59%
Продолжение личного бренда типа TarasovMath
13%
Что-нибудь просто эмоционально заряженное и крутое. Типа барракуда или медоед
👍4😁1🤔1
#кейс #математика #оптимизация #парадокс
Делаем для одного заказчика систему управления цепочками поставок. Можно планировать расстановку по стране складов различных типов и производств, в зависимости от географии расположения клиентов и поставщиков сырья.
До 5 звеньев в цепочках поставок.
Возник интересный запрос - мы планируем как расставить 3 производства, а находится всего одно.

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


Если для простоты рассмотреть случай когда источников сырья всего 3 и они все имеют одинаковый объем, то получается в точности задача Штейнера. Такая точка называется точка Ферма или точка Торичелли.
Если сырье расположено более менее в ряд, то оптимальным решением является установка производства в средней точке сырья.

Вот одна из причин зачем нужна математика в бизнесе - объяснять заказчикам, что это не бага, а фича 😁
👍6
Поучаствовал в круглом столе в NoML, классно получилось. https://t.iss.one/noml_community. Надеюсь запись получится.
#mip #выступление #текучка

Зацепила фраза, что в ЦЛП сложно решать задачи с непрерывным временем, так как время приходится бить на короткие отрезки времени. Непрерывная переменная это же благо и задача сильно упрощается. Но при этом далеко не очевидно как правильно собрать мат. модель. Попозже опишу кейс как мы решали задачу перепланирования расписания авиакомпании. Мы там сделали непрерывное время и всё круто работало.
👍6🤔1
#выступление #mip
Подоспела запись встречи NoML, которая произошла на прошлой неделе. Со звуком там сложности, подчистили, слышать можно.
Forwarded from NoML Digest
Запись встречи-дискуссии

▫️ Математическая оптимизация: подходы, технологии, бизнес задачи и тренды. YouTube | Дзен | RuTube (~1 час 55 минут).
👍6🔥1
#текучка #старость
В рамках одной задачи отлично пригодилась идея вистов из преферанса. Это такие модификаторы решения идеально решающую проблему. Есть набор чисел, но его надо по цепочке чуть-чуть подкрутить.

Но есть большое НО.

Никто из сотрудников не играл в преф. В результате идея реализовывалась туго, возникала путаница между разными компонентами программы. Разобрались конечно. Но обидно. Хоть в пиши в вакансиях - желательно умение играть в преферанс.
😁10
Домики для роботов.
#идея #бизнес

Я тут осознал две вещи. Во-первых, из-за развития ИИ в мире будет больше ЦОДов. Обещают, что их количество вырастет в 5 раз за 5 лет и они начнут есть 10 процентов мирового электричества. Дальше будет ещё больше.

Во-вторых, вокруг меня есть отличная экспертиза по постройке ЦОДов. Лучшие в мире здания для ЦОДов, программисты умеющие писать облака. Задач дискретной оптимизации в ЦОДах и облаках очень много, где собственно я эксперт. Есть знакомые владельцы собственных облаков.

Даже в России где высокая процентная ставка, ЦОДы будут плодиться как пирожки. Помимо БЯМ, больших языковых моделей нас ждут предметноориентированные LLM, а дальше агентный искусственный интеллект. Дрон с автономным ИИ дороже денег.

В общем делать ЦОДы сегодня, это как продавать лопаты во время золотой лихорадки. Я думаю как собрать проект, если у кого-то есть желание обсудить давайте познакомимся и обсудим.
👍22
Линейное программирование может больше, чем кажется, ч. 1
#mip #lp #моделирование #кейс

Если мы пишем мат модель какого-нибудь завода, то типичным подходом является разбить время работы каждого станка на временные слоты – сутки или часы. И сделать кучу булевых переменных типа делает ли станок C в час Ч работу Р. Получается куча переменных, а модель записывается естественно. И часто вполне неплохо работает. Проблема возникает, когда размерность задачи получается слишком большая, и задача тормозит. Это может быть из-за большого количества станков, или длительного периода планирования. Еще иногда время работы станка нельзя загрублять даже по часам. Важно чтобы станок работал в какой-то момент ровно 4 часа 37 минут. А по минутам бить не реально. Я часто слышу, что это слабое место для ЦЛП задач.

Люди, вы просто не умеете их готовить!

Что тут можно сделать? Правильно моделировать время.

1. Событийное время. В авиации какие-то разработчики до нас разбивали время на 5-минутки. А мы сделали следующее – для каждого аэропорта разбили время по моментам прилета и вылета самолета. В некоторых аэропортах за сутки было всего 2 или 4 таких момента.
Модель стала посложнее. Время стало зависеть от аэропорта (прямо небольшая теория относительности), но в целом ничего сложного. Для больших аэропортов типа Шереметьево при необходимости мы уменьшали временные промежутки, то есть какие-то моменты прилета/вылета склеивали между собой. Если приходилось сдвигать время, мы эти места запоминали и потом дополнительно учитывали в ограничениях. Таким трюком получилось уменьшить общую размерность задачи раз в 10.

2. Можно сделать интервалы времени с плавающей длиной. Летом для одного завода, где станки должны были работать точное время, мы сделали эпохи. То есть общий период планирования разбили на 50 участков, длина каждого из них это непрерывная переменная. Надо отметить, что слабым местом ЦЛП является целочисленность. А непрерывные переменные задачу не усложняют. В этом смысле время можно и нужно планировать непрерывно.
Далее для каждого станка задали его работу по номеру эпохи. Размерность задачи резко понизилась, но вместо этого появилась нелинейность. Теперь, чтобы узнать сколько было произведено продукции станком в заданную эпоху, надо умножить длину эпохи на флаг работы станка. От нелинейности можно избавиться, задав дополнительные переменные.
Таким образом, мы упрощаем модель в одном месте и усложняем в другом. Если временных интервалов было больше, чем типов работ, то это скорее всего выгодный обмен.
👍11👏1
Задачка по физике.
#физика #задача

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

Со мной спорили, что они остановиться могут любое время, и я стал фотографировать остановившиеся часы.

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

Решение:
В современных часах в стрелках нет противовеса. И в 8 часов 45 минут 45 секунд стрелки тяжелее всего поднимать. Если батарейка садится медленно, то часы останавливаются чаще всего в этот момент.

Часы бывают разные, но вот самая маленькая стрелка всегда в районе 45. Если есть и минутная и секундная, то минутная чаще всего тоже в диапазоне 40-50 минут
👍19🔥65❤‍🔥1👏1
Media is too big
VIEW IN TELEGRAM
#выступление #mip

В сообществе NoML @noml_community сделали краткий ролик про круглый стол, который ранее организовывали.
Я, неожиданно для себя, очень бодренький, приятно посмотреть 😄
4👍1
Сферический конь в вакууме.
#история #математика

Есть классический анекдот про математика, которого попросили сделать прогноз скачек лошадей и он сделал первую модель со сферическим конем в вакууме.

Одним из прототипов этого анекдота была реальная история.

Во время командировки в Париж в 1878 году великий русский математик, академик Пафнутий Львович Чебышёв прочитал лекцию «Математические методы кройки одежды».
Естественно, на лекции был аншлаг, пришли лучшие парижские портные и самые знаменитые модницы.

Пафнутий Львович начал выступление со слов: «Примем для простоты, что человеческое тело имеет форму шара…». Дочитывать материал пришлось в полупустой аудитории.

На основе этой лекции он написал работу: «О кройке одежды».

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

А его пример с раскройкой шара из двух кусочков ткани теперь используется при производстве теннисных мячиков.
🔥16👍3
Линейное программирование может больше, чем кажется, ч. 2.
#mip #lp #моделирование #кейс

Уточнение расписания полетов.

В рамках стартапа написал проект подгонки расписания авиакомпании. Очень хорошо легко на линейное программирование.

Есть некоторое уже готовое расписание и в нем есть сложности. Между какими-то рейсами маловат зазор времени. И если по какой-то причине один рейс задержится, то задержится и следующий. Еще может быть, что время вылета или прилета неудобное клиентам или аэропорту. Аэропорт не просто так дает слоты на вылет/прилет, они могут быть заняты или иметь разную цену. Еще есть ночные рейсы, что увеличивает требования к экипажам усложняя составление расписания. Иногда достаточно чуть-чуть подвинуть рейс, чтобы он перестал считаться ночным.
Задача заключается в том, чтобы подвигать расписание рейсов так, чтобы оно стало лучше учетом описанных факторов.

И эта задачка очень просто делается смешано-целочисленным линейным программированием.

Между некоторыми рейсами есть зависимость. Что конец первого рейса должен быть раньше (с некоторым запасом времени) начала второго рейса. Такие пары могут быть из-за того, что это рейсы, которые выполняются одним самолетом или одним экипажем. В общем случае траектория каждого сотрудника может быть своя, и по каким-то причинам бортпроводники остаются в том же самолете, а пилоты пересаживаются. Тут главное, что мы можем все такие зависимости учесть.

Основной набор переменных тут - время вылета каждого рейса. И они все непрерывные, что прекрасно. Время прилета определяется автоматически (вообще если очень хочется, можно еще заниматься менять время рейса, жечь больше топлива, но лететь чуть быстрее, это иногда дает эффект). Зависимости все пишутся в виде t_i <= t_j + c_ij. Где просто вычисляется определенная константа c_ij.

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

Продать только её никому не продали, но это уже другая история :)
👍9😁1
Несколько мелких заметок про Чебышёва, математику и гонки. Я раньше писал, что я вижу математику в мире
#математика #оптимальное_управление

1. Оптимальная тракетория гоночных автомобилей, это многочлены наименее уклоняющиеся от нуля, которые придумал Чебышёв.

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

3. Еще я делал программу для управления станком. Там надо было одновременно ограничивать скорость и ускорение. Когда сформулировали задачу получилась в точности задача скоростного прохождения трассы так, чтобы не слететь с неё на поворотах.
👍22👏1
Поздравляю всех с наступающим новым годом! Желаю всем успеха и удачи в наступающем (20+25)² году . И успевать радоваться жизни в непростое время.

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

За год успел проектировать, где ставить заводы, склады и вокзалы, как оптимизировать работу уже построенных заводов, самолетов, кораблей, как проектировать отдельные здания. Оптимизировал продажу яблок, и билетов на кораблики.
Детские мечты сбываются оптом :)

Ошибки делал, но не математические, а бизнесовые. Учусь составлять договора, выстраивать бизнес процессы в компании и правильно оценивать риски. Но это все проблемы велосипедиста - чем быстрее движешься вперед, тем сильнее дует ветер в лицо. :)
👍227🔥7👏1
Число 2025 с математической точки зрения прикольное. Помимо того что (20+25)² = 2025
это так же 1³+2³+3³+4³+5³+6³+7³+8³+9³ = 2025
и (1+2+3+4+5+6+7+8+9)²= 2025

И еще друг нашел, что 2025 можно составить комбинацией чисел от 1 до 5 : 1*3⁴*5²
👍20🔥3👏1