Дякую за ідеї!
Додав конвертацію фріхенда в фігуру в роадмап 👍🏻
Про FPS то зараз найбільша проблема для мене. Пробую вирішити...
Так, згладжування ліній працює круто завдяки perfect-freehand (тут є демка цієї ліби)
Також так, редагування кожного об'єкта то зручно. Весь малюнок/скетч — це звичайний JSON (наприклад файл data-structures.okso). Та над об'єктами того JSON-у вже проводити маніпуляції.
Дякую за ідеї!
Конкретних планів зараз немає, але виглядає доволі цікавим написати статтю про імплементацію, корнер-кейси з перформансом (якщо мені ще вдасться їх вирішити), переваги Progressive Web App, як хендлити апдейти в React стейті якщо вони дуже часті і в реал-таймі (наприклад як оновлення стейту компонентів під час руху курсора), та інше...
А зараз, якщо коротко, то технічно проект використовує наступне:
Да да, на rednuht там крутые примеры с генетическим алгоритмом 👍🏻
По поводу парковки машинок без единой аварии. Да, таких геномов в примерах вот здесь trekhleb.dev/...tion/?parking=automatic нет. Как в конце статьи, «наказание» за столкновение (уменьшение значения фитнесс-функции при столкновении) реализовано не было, поэтому при обучении машинки «думают», что аварии — это вполне ОК и даже не пытаются их избегать. Это один из следующих логичных шагов, которые можно заимплементить.
Да, в статье я как-раз упомянул про альтернативное решение использовать нейронную сеть вместо линейного уравнения, чтобы решение лучше адаптировалось к новым условиям парковки. И так же в статье указано, что с линейным уравнением способность к обобщению — малая. Поэтому тут могу только ещё раз подтвердить правоту вашего комментария.
Не согласен с Вами по поводу того, что обучение нейронной сети и генетический алгоритм — это разные истории. Технически, нейронную сеть можно обучить (подобрать нужные коэффициенты) с помощью генетического алгоритма (вместо использования back propagation). Возможно это будет неэффективно и сработает для простых нейронных сетей, но технически — это должно быть возможно.
Единственное что не совсем понятно — как генетический алгоритм подходит под эту задачу?
Генетический алгоритм может подойти к задачам, связанным с оптимизацией. В данном примере с машинами мы пытаемся оптимизировать случайный геном (например, геном 1010011...100) и шаг за шагом, методом «генетически умных» но все-таки «проб и ошибок», пытаемся перейти от случайного генома, к геному, близкому к идеальному для конкретной задачи парковки (например, к геному 11100010...110).
Вариант «перебора вариантов» в реальности нам явно не подойдет... решить задачу ДО того, как ехать
А сенсоры на машине как раз не очень помогут — потому что мы СНАЧАЛА рассчитаем идеальный маршрут алгоритмом — а только потом будем ехать.
Процесс оптимизации случайного генома и преобразования его в близкий к идеальному происходит шаг за шагом, методом «генетически умных» но все-таки «проб и ошибок». Именно этот пошаговый процесс я имею в виду, когда пишу, что генетический алгоритм именно «обучается». Из поколения в поколение происходит симуляция парковки (тысячи раз) и только более-менее успешные в данном поколении машины продолжают свое существование в следующих поколениях, путем «спаривания» и «рождения» более сильный «детей».
Поэтому алгоритм не решаем задачу до того, как ехать и не рассчитывает идеальный маршрут сначала. Он решает ее во время езды тысяч индивидуумов.
А вот уже после «проб и ошибок» (после обучения) тысяч паркующихся индивидуумов мы получим оптимизированный геном. И вот как раз оптимизированный геном должен парковать автомобиль за один раз (без проб и ошибок), с первой попытки, без соударения с соседями. Возможно вы это и имели в виду — не процесс обучения, а процесс применения уже оптимизированного генома к реальной жизни?
В данной имплементации машина не знает, где находится парковочное место. Машина оперирует исключительно показаниями датчиков и ее «мозг» (линейное уравнение) перемещает машину в каком-то из направлений. «Удачное» это направление (близко к парковочному месту) или «неудачное» (далеко от парковочного места) определяет фитнес-функция в конце жизни каждого поколения. Чем ближе машина оказалась к парковочному месту, тем выше фитнес-функция. Далее, производится селекция (спаривание) автомобилей с наилучшими показателями фитнес-функций.
В данной версии симулятора стартовая позиция фиксированная. Эту позицию можно ментально воспринимать как «ок, я довез авто до стартовой парковочной позиции, поровнял задние колёса, а дальше — сама»
Попробуй зажать «SPACE» + «D» в ручном режиме парковки. Там и гидроусилитель будет и поворот колес.
Дуже тішуся, що вдалось зацікавити 😀👍🏻
Спасибо за отзыв, Антон! Да, статья действительно получилась longread-ом. В следующий раз, возможно, есть смысл разбить подобный материал на серию более компактных статей (типа «часть 1/3», «часть 2/3» и т.д."
Точно :D
Это нельзя готовить ⛔️
Радий, що стаття змотивувала! Успіхів із Гітхабом!
На онсайте на одной из 5 сессий (1 час) разбирали детали того, как я выполнил тестовое задание. Тестовое («домашнее») задание было фронт-эндовое, его надо было выполнить после скрининг интервью. Его проверяли до приглашения на онсайт, но на онсайте его нужно было по сути «защитить» и прямо при интервьюерах улучшить/расширить. Остальные же сессии были довольно общими без сильной привязки к фронтенду.
После прохождения всех интервью, приблизительно через 1 неделю пришел оффер со стороны Uber-а и была назначена встреча, на которой обсуждалась детали, в том числе и зарплата.
... дальше — профит
Да, мне кажется в таком случае (когда человек решает свою «задачу-боль») он является своего рода экспертом в этой области и знает потребность «рынка» лучше. Плюс это помогает держать мотивацию в тонусе.
Мне самому интересно!
Дякую за фідбек
Так, я планую додати (feedback.okso.app/feedback) підтримку інших шрифтів також.
Стрілки вже є готов. В Menu > Preferences > Tools є перелік додаткових форм/shapes, серед яких є Прямокутник, Овал та Стрілка.
Локалізацї також в плані, треба буде додати