пятница, 26 июля 2019 г.

Prometey. Нейронные сети в конструировании


         Многие компании пытались создать сложные генетические алгоритмы, но все потерпели крах. В основном по одной причине, попытке создать сложный алгоритм с большим количеством нелинейных зависимостей. Но для того что бы создать искусственную генетику, необходимо понять как функционирует вполне себе природная.
          Возьмем для примера человека, как мы распознаем лица, буквы, цифры , геометрию ? Это очень сложный вопрос, но на его смог ответить Ян Лекун - французский ученый в области информатики и нейробиологии. Он можно сказать является основателем такого вида нейронных сетей как CNN - convolution neural network, данная нейросеть работает по принципу зрительной коры человеческого мозга, где простые клетки распознают прямые линии под различными углами и передают информацию в более сложные клетки в которых собираются уже более сложные изображения и т. д. пока не складывается полная картинка увиденная человеческим глазом.
     


Если посмотреть на эту же визуализацию с точки зрения математики, то увидим следующее:

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

Без итераций:

1 итерация:

5 итераций:

10 итераций:

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


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



           По своей сути она выполняет следующие функции:
1. Расставляет пилоны согласно расположения архитектурных стен
2. Оценивает их эффективность
3. Пилоны которые показывают плохую эффективность, смещает согласно расположения архитектурных стен
4. Если смещение не возможно, то уменьшает/увеличивает сечение
5. Выполняет п.2-4 столько эпох, сколько запросит пользователь

         Но я еще не сказал самое главное, существует так же параллельная нейросеть, которая отбирает (для обучения первой нейросети) на сервере лучшие сочетания расположения пилонов в самых эффективных схемах. Для этого я создал формат обмена данных "prm", отмотать на 12:00,


         Лучшие схемы отбираются автоматически, пока это схемы перешагнувшие 70% барьер эффективности и отправляются на центральный сервер. Юридическая сторона данного вопроса описана в политике приложения.
        Первые данные для обучения нейросети я предоставил исходя из своего личного опыта, но для того что бы создать действительно альтернативный разум, понадобиться сотни тысяч примеров успешных расчетных схем от десятка тысяч пользователей. В дальнейшем показатели эффективности дополнятся еще двумя показателями, и только при удовлетворении всех трех будет происходить отбор.
         Я много размышлял и пробовал найти изгибающие моменты исходя из советов пользователей на DWG.ru, но способы в указанных направлениях безуспешны, точнее результаты на столько условные, что малоприменимы в реальности. Поэтому в следующей статье я постараюсь показать уже первые результаты работы нейросети в данном направлении, в целом все очень сложно и достигается работой с полиномиальными хешами, суффиксными массивами, абстрактными данными, кластеризацией и многим другим интересным.


3 комментария:

  1. Приветствую!
    Приложение считает только статические нагрузки?
    Считает ли оно сочетание нагрузок?
    Каковы примерные сроки выхода приложения на рынок?

    ОтветитьУдалить
    Ответы
    1. Доброго !
      1. Только статические
      2. Только одну комбинацию
      3. 1 сентября 2019 версия 1.0

      Удалить
    2. Ну, в таком случае конструкторский отдел оно заменить конечно не сможет, но я бы все равно поюзал. Штука должна быть интересная!

      Удалить

Поиск по этому блогу