Алгоритмы построения пути для беспилотного автомобиля. Лекция Яндекса

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


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

Читать дальше →

Геометрия данных 4. Пространство графа

Особенность координатных систем на точечном базисе (ди- и би-координат) состоит в том, что их можно использовать как в обычном геометрическом пространстве, так и в пространстве графа.



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

Определение системы координат


Задачу построения системы координат (СК) на графе можно сформулировать следующим образом.
Читать дальше →

[Перевод] Структура и случайность простых чисел

Разбросаны ли простые числа по числовой оси подобно рассеянным ветром семенам? Разумеется нет: простота — это не вопрос случайности, а результат элементарной арифметики. Число является простым тогда и только тогда, когда ни одно меньшее положительное целое число кроме единицы не делит его нацело. Но на этом история не заканчивается. Распределение простых чисел выглядит случайным, с неравномерными разрывами и скоплениями, которые выглядят довольно хаотично. Если и существует какая-то схема, то она непостижима. На самом деле, простые числа выглядят достаточно случайными, чтобы можно было сыграть с ними в кости. Создайте список последовательных простых чисел (допустим, начав с 11, 13, 17, 19,... ) и разделите их по модулю 7. Другими словами, разделите каждое простое число на 7 и сохраните только остаток. Результатом будет последовательность целых чисел из множества {1, 2, 3, 4, 5, 6}, которая выглядит почти как результат нескольких бросков правильной кости.

$\begin{align*}
 11 \bmod 7 & \rightarrow 4 \qquad 47 \bmod 7 \rightarrow 5 \\
 13 \bmod 7 & \rightarrow 6 \qquad 53 \bmod 7 \rightarrow 4 \\
 17 \bmod 7 & \rightarrow 3 \qquad 59 \bmod 7 \rightarrow 3 \\
 19 \bmod 7 & \rightarrow 5 \qquad 61 \bmod 7 \rightarrow 5 \\
 23 \bmod 7 & \rightarrow 2 \qquad 67 \bmod 7 \rightarrow 4 \\
 29 \bmod 7 & \rightarrow 1 \qquad 71 \bmod 7 \rightarrow 1 \\
 31 \bmod 7 & \rightarrow 3 \qquad 73 \bmod 7 \rightarrow 3 \\
 37 \bmod 7 & \rightarrow 2 \qquad 79 \bmod 7 \rightarrow 2 \\
 41 \bmod 7 & \rightarrow 6 \qquad 83 \bmod 7 \rightarrow 6 \\
 43 \bmod 7 & \rightarrow 1 \qquad 89 \bmod 7 \rightarrow 5 \\
 \end{align*}$...Далее...

Определение устойчивости систем автоматического управления промышленными роботами

Введение


Необходимым условием работоспособности системы автоматического управления (САУ), является её устойчивость. Под устойчивостью принято понимать свойство системы восстанавливать состояние равновесия, из которого она была выведена под влиянием возмущающих факторов после прекращения их воздействия [1].

Постановка задачи


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

Символьное решение задач нелинейного программирования

Введение

С появлением библиотеки SymPy для решения математических задач появились дополнительные возможности, позволяющие отображать результаты в символьной форме. Подробное описание использования символьных вычислений приведено в публикации [1] под названием «Введение в научный Python» в разделе «Символьные вычисления». Расширение области применения символьных вычислений на решение отдельных задач нелинейного программирования надеюсь будет способствовать популяризации Python в том числе и как альтернатива дорогостоящих математических пакетов.

Постановка задачи

Привести примеры символьных вычислений для безусловного экстремума дифференцируемой нелинейной функции цели с определением достаточных условий существования экстремума по матрице Гессе. Рассмотреть так же задачу условного нелинейного программирования с линейными ограничениями при помощи множетелей Лагранжа. Для того, чтобы определиться с терминологией приведу следующее определение [2]. Задачей нелинейного программирования (задачей НП) называется задача нахождения максимума (минимума) нелинейной функции многих переменных, когда на переменные имеются (не имеются) ограничения типа равенств или неравенств.

Символьное вычисление безусловного экстремума дифференцируемой функции трёх переменных

Несмотря на сложность решаемых задач при символьном решении всё становится простым и наглядным. Рассмотрим листинг первого примера. ...Далее...

Почему DataScientist-ы не используют ошибки первого и второго рода

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


И если ошибка второго рода выражается просто:


$O_2 = 1 - \Pi$


где Π — это полнота;


то вот ошибка первого рода весьма нетривиально выражается через полноту и точность (см.ниже).


Но это лирика. Самый важный вопрос:


Почему в DataScience используют полноту и точность и почти никогда не говорят об ошибках первого и второго рода?

Кто не знает или забыл — прошу под кат.


Дальше читать

Нелинейное программирование средствами Python (Часть 1. Безусловное нелинейное программирование)

Введение

Закончив серию статей по линейному программированию средствами Python [1,2,3,4] логично перейти к рассмотрению задач нелинейного программирования. Следует заметить, что тема эта для нашего ресурса не новая. В публикации [5] рассмотрен алгоритм который заключается в формировании симплекса (simplex) и последующего его деформирования в направлении минимума, посредством трех операций. В публикации не использована функция optimize из модуля scipy. optimize популярной библиотеки для языка python, что не позволяет сделать вывод о сходимости алгоритма. В публикации [6] рассмотрен квази ньютоновский метод для не выпуклой функции, которая имеет непрерывные вторые производные. При этом автор утверждает, что неоспоримое преимущество алгоритма, конечно, состоит в том, что нет необходимости вычислять вторые производные. Публикация [7] содержит описание квадратичной модели без линейных ограничений. Не умоляя безусловную ценность указанных публикаций все они касаются безусловной оптимизации. Поэтому серия публикаций с рассмотрением задач как безусловной, так и условной оптимизации думаю будит не безынтересна читателя.

Постановка задачи нелинейного программирования

Задачей нелинейного программирования (задачей НП) называется задача нахождения максимума (минимума) нелинейной функции многих переменных, когда на переменные имеются (не имеются) ограничения типа равенств или неравенств. В обоих случаях нужно построить такую математическую модель, в которой на каждом этапе преобразования можно получить символьный результат в интерфейсах idle и jupyter-notebook...Далее...

Математическая модель жидкостного тахометра на Python

Введение

В технике явление формирования поверхности вращающейся жидкости в форме близкой к поверхности параболоида вращения используется в основном в сепарирующих центрифугах для разделения суспензий на фракции [1]. Меня заинтересовал так называемый жидкостной тахометр. Принцип работы прибора состоит в контроле за уровнем верхней кромки жидкости во вращающемся цилиндрическом стакане. Уровень жидкости зависит от скорости вращения стакана и может контролироваться простой оптической следящей системой. Рассмотрение математической модели такого прибора имеет не только познавательный, но и практический интерес с учётом её реализации средствами свободно распространяемого языка общего назначения Python.

Теория – просто и кратко

Вектора сил, действующих на частицу жидкости во вращающемся цилиндрическом стакане приведены на следующем рисунке. Рассмотрим сечение поверхности вращения координатной плоскостью ZX и найдём касательную в точке P (x, z) этого сечения. На частицу Q находящуюся в точке P действует сила тяжести mg изображённая в виде вектора PL. Давление жидкости изображено в виде вектора PN направленного нормально к поверхности жидкости. Силы PM и PM’ для установившегося движения равны. Частица жидкости движется по окружности радиуса x её ускорение PM направлено к центру вращения и равно m*w**2 *x. ...Далее...

Геометрия данных 2. Ди- и би-координаты точек и векторов

Статья является продолжением серии о системах координат на точечном базисе. Базис представляет собой вершины симплекса или графа с известными значениями двух взаимных метрических тензоров — дистанционного (ДМТ) и лапласовского (ЛМТ). В первой статье описаны свойства данных тензоров. Здесь покажем, что представляют собой координаты точек.



Дистанционные координаты


Для лапласовского метрического тензора (ЛМТ) координатами, описывающими точку в пространстве, являются дистанционные координаты. Данные координаты представляют собой объединение скалярной единицы и значений отрицательных полудистанций от точки до реперов — вершин базисного симплекса или графа. Для краткости будем именовать их ди-координатами.
Читать дальше →

Как эмпирическое правило «победитель получает все» работает и не работает в разработке

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



Под катом слайды с пояснением.
Читать дальше →


Последние посты