Русский
Русский
English
Статистика
Реклама

Моделирование

Когерентная суперпозиция глубоко в основе коррупции

21.08.2020 04:07:23 | Автор: admin
Доброго времени суток, дорогие читатели.

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

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


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



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

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

В соответствии с предложенным определением информации Клодом Шенноном прирост информации равен утраченной неопределённости, и в моем случае я столкнулся с тем, что всегда было под носом, но чего я не замечал все эти годы. Разумеется, я не мог просто пройти мимо.

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



Представьте себе такую аналогию: допустим, ваша цель выживать в условиях переменчивой и агрессивной среды, пускай это будет засушливая пустыня. У вас есть с собой смартфон, на котором заранее скачаны карты местности с высокой степенью детализации (в хорошем масштабе). Вас все устраивает и вы пересекаете пустыню от источника воды к источнику, прокладывая маршрут, и все идет хорошо, до тех пор, пока по пути вы не встречаете интересные цветущие кактусы. Вы очень быстро понимаете, что это редкое явление (какая-то абстрактная ценность в рамках модели), и вы хотите это запечатлеть на свой смартфон, но быстро обнаруживаете, что вся память забита картами. Парадокс в том, что многие игроки выбирают удалить карты в высоком разрешении, чтобы поместились фоточки цветущего кактуса. На практике это выражается как в форме технического долга, который может быть не столь очевиден, так и в форме деградации анализа больших данных, когда точность намеренно снижается по той или иной причине (наиболее частой из которых является все тот же технический долг в виде архитектурных ограничений на масштабирование, допустим, трудоемкость реализации кластерного анализа данных или перенос логики на оптимизированные вычислители (GPU/TPU/ASIC'и)).

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

Для того, чтобы лучше осознать происходящее, я решил декомпозировать на элементарные составляющие само понятие стратегии поведения. В некотором смысле стратегию поведения можно интерпретировать как совокупность действий, обобщенных стремлением к определенной цели. Действия определены выбором. Но чем определен выбор? Как правило выбор определен допустимыми возможностями и оценкой этих возможностей, то есть некоторым множеством, из которого мы вольны выбирать. Если рассмотреть более подробно само это множество, то очевидным образом будет понятно, что оно носит потенциальный характер и в некотором смысле теряет неопределенность в момент выбора, когда выбор становится конкретным одним из....


Но если выбор совершается строго в пользу одного из доступных вариантов, то остальные варианты оказываются нереализованным потенциалом, то есть они не осуществляются как часть стратегии поведения, они так и остаются в фазовом пространстве и не входят в состав причинно-следственной цепи выбора и действий, определяющих стратегию. И здесь мы плавно подходим через определение множества к определению алгоритма совершения выбора. Мы не знаем каков сам алгоритм выбора, но мы видим его следствие, как телеметрию действий по отношению к фазовому пространству возможностей. Иными словами, это представимо функциональной логикой F(P) -> D, где P потенциальное множество выбора, F представляет собой логику с учетом контекста (опыта), а D является следствием выбора, который попадает в контекст логики.

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

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

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



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

Но причем тут коррупция?

Дело в том, что коррумпированная составляющая по определению, целью которого был весь вышеизложенный текст, является следствием выбора одними людьми определенных решений, которые ущемляют интересы других людей (множества людей), но выбор не может иметь только одну сторону, выбор это всегда реализация только одного состояния из потенциального множества. Среди множества сторонних наблюдателей всегда найдется тот, относительно которого выбор кем-то был совершен в пользу своих людей (факт кумовства) и будет воспринимается как наглая форма ущемления их прав, так как он автоматически становится не своим (не реализованным потенциалом), но каждый субъект наделен программой поведения, которая формирует то, как он детерминирует потенциальное множество выбора F(P) -> D, и эта программа поведения предполагает, что то, что люди называют кумовством и выбор друзей или супруги в основе своей имеет единую природу, а следовательно выбор совершается исключительно субъективно в рамках своей программы поведения, что в глобальном масштабе рождает такую структуру общества, в которой законодательная база фиксирует положения противоречащие понятию выбора, и, фактически, декларирующие ожидание существования в детерминированном виде когерентной суперпозиции состояний, иными словами справедливость как форму равенства.



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



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

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

Отчасти этим же обуславливается контр-продуктивная форма поведения (помните метафору с пустыней и кактусами), когда карты удаляются, чтобы запечатлеть красивый кактус. Это форма выбора, которая субъективно в рамках ограниченной области видимости сложно организованной социальной структуры приводит к фатальным последствиям для жизненного цикла самой структуры что также является определенной формой коррупции (лат. corruptio подкуп, продажность; порча, разложение; растление).

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

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

Подробнее..

Операционные усилители 10 схем на (почти) все случаи жизни

25.08.2020 20:14:31 | Автор: admin
Всем привет!
В последнее время я по большей части ушел в цифровую и, отчасти, в силовую электронику и схемы на операционных усилителях использую нечасто. В связи с этим, повинуясь неуклонному закону полураспада памяти, мои знания об операционных усилителях стали постепенно тускнеть, и каждый раз, когда все-таки надо было использовать ту или иную схему с их участием, мне приходилось гуглить ее расчет или искать его в книгах. Это оказалось не очень удобно, поэтому я решил написать своего рода шпаргалку, в которой отразил наиболее часто используемые схемы на операционных усилителях, приведя их расчет, а также результаты моделирования в LTSpice.



Введение


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

1. Неинвертирующий усилитель


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


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

$V_{IN}=V_{OUT}\frac{ R2}{R1+R2}$


Из этой формулы легко получается коэффициент усиления неинвертирующего усилителя:

$\mathbf{k= \frac {V_{OUT}}{V_{IN}}=1+\frac {R1}{R2}}$


Рассчитаем и промоделируем неинвертирующий усилитель со следующими параметрами:

  • Операционный усилитель LT1803
  • Коэффициент усиления $k=10$
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала $V_{INmax}=0,1 \text{ B}$
  • Постоянна составляющая входного сигнала $V_{IN=}=0,2 \text{ В}$

Выберем из ряда Е96 $R1=9,53 \text{ кОм}$ и $R1=1,05 \text{ кОм}$. Тогда коэффициент усиления будет равен

$k=1+\frac {R1}{R2}=1+\frac {9,53 \cdot 10^3}{1,05 \cdot 10^3} \approx 10$


Результат моделирования данной схемы приведен на рисунке (картинка кликабельна):


Давайте теперь рассмотрим граничные случаи этого усилителя. Допустим, величина сопротивления резистора $R2=0 \text{ Ом}$. При этом мы получим, что коэффициент усиления будет стремиться к бесконечности. На самом деле, конечно, это хоть и очень большая, но все-таки конечная величина, она обычно приводится в документации на микросхему конкретного операционного усилителя. С другой стороны, величина выходного напряжения реального операционного усилителя даже при бесконечно большом коэффициенте усиления не может быть бесконечно большой: она ограничена напряжением питания микросхемы. На практике она зачастую даже несколько меньше, за исключением некоторых типов усилителей, которые отмечены как rail-to-rail. Но в любом случае не рекомендуется загонять операционные усилители в предельные состояния: это приводит к насыщению их внутренних выходных каскадов, нелинейным искажениям и перегрузкам микросхемы. Поэтому данный предельный случай не несет какой-то практической пользы.
Гораздо больший интерес представляет собой другой предельный случай, когда величина сопротивления $R1=0 \text{ Ом}$. Его мы рассмотрим в следующем разделе.

2. Повторитель


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


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

  • Выходное сопротивление источника сигнала 10 кОм
  • Сопротивление нагрузки 1 кОм
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала $V_{INmax}=0,1 \text{ B}$
  • Постоянна составляющая входного сигнала $V_{IN=}=0,2 \text{ В}$

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


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

3. Инвертирующий усилитель (классическая схема)


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


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

$\frac {V_{IN}-V_{-}}{R1}=\frac {V_--V_{OUT}}{R2}$


Где $V_-$ напряжение на инвертирующем входе операционного усилителя.
Поскольку операционный усилитель, охваченный петлей обратной связи, стремится выровнять напряжения на своих входах, то $V_-=0$, и при заземленном неинвертирующем входе получаем

$\frac {V_{IN}}{R1}=-\frac{V_{OUT}}{R2}$


Отсюда коэффициент усиления инвертирующего усилителя равен

$\mathbf{k=\frac{V_{OUT}}{V_{IN}}=-\frac{R2}{R1}}$


По инвертирующему усилителю можно сделать следующие выводы:

  1. Инвертирующий усилитель инвертирует сигнал. Это значит, что необходимо применение двухполярного питания.
  2. Величина модуля коэффициента усиления инвертирующего усилителя равна отношению резисторов цепи обратной связи. При равенстве номиналов двух резисторов коэффициент усиления равен -1, т.е. инвертирующий усилитель работает просто как инвертор сигнала.
  3. Величина входного сопротивления инвертирующего усилителя равна величине резистора R1. Это важно, потому что при маленьких значениях R1 может сильно нагружаться предыдущий каскад.

Для примера рассчитаем инвертирующий усилитель со следующими параметрами:

  • Операционный усилитель LT1803
  • Коэффициент усиления $k=-10$
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала $V_{INmax}=0,1 \text{ B}$
  • Постоянна составляющая входного сигнала $V_{IN=}=0,2 \text{ В}$

В качестве резисторов в цепи обратной связи выберем резисторы номиналами $R1=10 \text{ кОм}$ и $R2=100 \text{ кОм}$: их отношение как раз равно десяти.
Результаты моделирования усилителя приведены на рисунке (картинка кликабельна).


Как видим, выходной сигнал в 10 раз больше по амплитуде, чем входной, и при этом проинвертирован.
Входное сопротивление данной схемы равно $R1=10\text{ кОм}$. А что будет, если источник сигнала будет иметь значительное выходное сопротивление, допустим, эти же 10 кОм? Результат моделирования этого случая представлен на рисунке ниже (картинка кликабельна).


Амплитуда выходного сигнала просела в два раза по сравнению с предыдущим случаем! Очевидно, что это все из-за того, что выходное сопротивление генератора в этом случае равно входному сопротивлению инвертирующего усилителя. Таким образом, стоит всегда помнить про эту особенность инвертирующего усилителя. Как же быть, если все-таки требуется обеспечить работу источника сигнала с высоким выходным сопротивлением на инвертирующий усилитель? В теории надо увеличивать сопротивление R1. Однако одновременно с эти будет расти и сопротивление R2. Если мы хотим обеспечить входное сопротивление схемы в 500 кОм при коэффициенте усиления 10, резистор R2 должен иметь сопротивление в 5 МОм! Такие большие номиналы сопротивлений применять не рекомендуется: схема будет очень чувствительной к наводкам, пыли и флюсу на печатной плате. Есть ли какие-то выходы из этой ситуации? На самом деле да. Можно, например, использовать буфер-повторитель, который мы рассмотрели в прошлом разделе. А можно еще применить схему с Т-образным мостом в обратной связи, про нее поговорим в следующем разделе.

4. Инвертирующий усилитель с Т-образным мостом в цепи ОС


Схема инвертирующего усилителя с Т-образным мостом в цепи обратной связи приведена на рисунке ниже.


Коэффициент усиления этой схемы равен

$\mathbf{k=\frac {V_{OUT}}{V_{IN}}=-\frac {R2+R3+\frac{R2\cdot R3}{R4}}{R1}}$


Рассчитаем усилитель со следующими параметрами:

  • Операционный усилитель LT1803
  • Коэффициент усиления $k=10$
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала $V_{INmax}=0,1 \text{ B}$
  • Постоянна составляющая входного сигнала $V_{IN=}=0,2 \text{ В}$
  • Входное сопротивление $R=500 \text{ кОм}$

Расчет показывает, что следящие номиналы резисторов должны сформировать усилитель с Т-образным мостом, отвечающий заявленным требованиям:

$R1=499 \text{ кОм}$


$R2=R3=22,6 \text{ кОм}$


$R4=100 \text{ Ом}$


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


Попробуем теперь подключить источник с выходным сопротивлением 10 кОм, как мы это сделали в предыдущем разделе. Получим такую картинку (кликабельно):


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

5. Инвертирующий усилитель в схемах с однополярным питанием


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



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

Расчет этой схемы строится все на том же принципе равенства напряжений на инвертирующем и неинвертирующем входах усилителя. Ток через цепочку резисторов R1-R2 инвертирующего плеча равен

$I_{R1R2}=\frac {V_{OUT}-V_-}{R2}=\frac {V_--V_{IN}}{R1}$


Отсюда напряжения на инвертирующем входе равно

$V_-=\frac{V_{OUT}\cdot R1+V_{IN}\cdot R2}{R1+R2}$


Напряжение на неинвертирующем входе равно

$V_+=V_{REF}\frac{R2}{R1+R2}$


Исходя из принципа равенства напряжения на инвертирующем и неинвертирующем входах получаем

$V_{OUT}\cdot R1+V_{IN}\cdot R2=V_{REF}\cdot R2$


Таким образом, напряжение на выходе операционного усилителя равно

$\mathbf{V_{OUT}=(V_{REF}-V_{IN})\frac{R2}{R1}}$


Отсюда делаем вывод, что для корректной работы напряжения смещения $V_{REF}$ должно быть больше максимального входного напряжения с учетом подаваемого на вход напряжения смещения.
Промоделируем схему инвертирующего усилителя со следующими параметрами:

  • Операционный усилитель LT1803
  • Коэффициент усиления $k=10$
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала $V_{INmax}=0,01 \text{ B}$
  • Постоянна составляющая входного сигнала $V_{IN=}=0,2 \text{ В}$
  • Напряжение источника смещения $V_{REF}=0,22 \text{ В}$

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


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

6. Инвертирующий сумматор


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


Расчет инвертирующего сумматора очень прост и основывается на принципе суперпозиции: суммарный выходной сигнал равен сумме отдельных составляющих:

$V_{OUT1}=-\frac{R4}{R1}V_{IN1}$


$V_{OUT2}=-\frac{R4}{R2}V_{IN2}$


$V_{OUT3}=-\frac{R4}{R3}V_{IN3}$


$\mathbf {V_{OUT}=-\left(\frac{R4}{R1}V_{IN1}+\frac{R4}{R2}V_{IN2}+\frac{R4}{R3}V_{IN3}\right)}$


Рассчитаем и произведем моделирование инвертирующего сумматора со следующими параметрами:

  • Операционный усилитель LT1803
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала 1 $V_{IN1}=0,1\text{ В}$
  • Амплитуда входного сигнала 2 $V_{IN2}=0,2\text{ В}$
  • Амплитуда входного сигнала 3 $V_{IN3}=0,3\text{ В}$
  • Вес сигнала 1 $v_{1}=3 $
  • Вес сигнала 2 $v_{2}=2 $
  • Вес сигнала 3 $v_{3}=1 $

Для обеспечения требуемых весов $v_{1} $, $v_{2} $ и $v_{3} $ выберем сведущие номиналы резисторов из ряда Е96:

$R1=10\text{ кОм}$


$R2=20\text{ кОм}$


$R3=R4=30,1\text{ кОм}$


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


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


Как видим, итоговый сигнал не превышает по амплитуде сигнал $V_{IN3}$, а также имеет в начальной части артефакты, вызванные постепенным появлениями сигналов на входах.
Необходимо также помнить, что инвертирующий сумматор по сути все тот же инвертирующий усилитель, и его входное сопротивление определяется величиной резистора в цепи обратной связи, поэтому его надо аккуратно применять в случаях, если источник сигнала имеет большое выходное сопротивление.

7. Дифференциальный усилитель


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



Для дифференциального усилителя можно записать следующие выражения:

$\frac{V_{OUT}-V_-}{R40}=\frac{V_--V_{IN2}}{R3}$


$V_+=V_{IN1}\frac{R2}{R1+R2}$


$V_+=V_-$


Решая эту систему уравнений, получаем

$V_{OUT}=V_{IN1}\frac{R2}{R1+R2}\frac{R3+R4}{R3}-V_{IN2}\frac{R4}{R3}.$


Если мы примем, что

$\frac{R2}{R1}=\frac{R4}{R3},$


то данное выражение упрощается и преобразуется в

$\mathbf {V_{OUT}=(V_{IN1}-V_{IN 2})\frac{R2}{R1}}.$


Таким образом, коэффициент усиления дифференциального сигнала определяется отношением R2 к R1.
Эта формула (да и сама схема включения дифференциального усилителя) очень похожа на рассмотренный ранее случай инвертирующего усилителя в схеме с однополярным питанием. Действительно, все так и есть: схема инвертирующего усилителя с однополярным питанием и напряжением смещения есть частный случай дифференциального усилителя, просто в ней на один из входов подается не какой-то переменный сигнал, а постоянное напряжение.
Произведем моделирование схемы со следующими параметрами:

  • Операционный усилитель LT1803
  • Коэффициент усиления $k=50$
  • Частота входного сигнала $F=100 \text{ кГц}$
  • Амплитуда входного сигнала 1 $V_{IN1}=0,015 \text{ B}$
  • Амплитуда входного сигнала 2 $V_{IN1}=0,01 \text{ B}$
  • Величина усиливаемого сигнала $\Delta=V_{IN1}-V_{IN2}=0,005 \text{ В}$

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


Как видим, разница между сигналами $V_{IN1}$ и $V_{IN2}$ в 5 мВ оказалась усиленной в 50 раз и стала 250 мВ.
Посмотрим теперь, как дифференциальный усилитель давит синфазную помеху. Для этого подключим к сигналам $V_{IN1}$ и $V_{IN2}$ общий генератор белого шума и произведем моделирование, его результаты представлены на рисунке (картинка кликабельна).


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

8. Источник тока


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


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

$\mathbf {I=V_{REF}\cdot R1}$


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


Величина тока рассчитывается так:

$\mathbf {I=\frac{V_{REF}-V_{+}}{R}=\frac{V_{REF}}{R}\left(1-\frac{R2}{R1+R2}\right)}$


Произведем расчет и моделирование источника тока со следующими параметрами:

  • Операционный усилитель LT1803
  • Величина силы тока $I=10 \text { мА}$
  • Величина сопротивления нагрузки $R_{load}=10 \text { Ом}$

Для обеспечения заданных характеристик подойдут следующие номиналы сопротивлений резисторов:

$R=250 \text{ Ом}$


$R1=R2=1 \text{ кОм}$


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


На рисунке приведено два графика. Верхний график показывает величину тока через сопротивление нагрузки, и она равна 10 мА. Нижний график показывает напряжение на нагрузке, оно равно 100 мВ. Попробуем теперь изменить сопротивление нагрузки: вместо 10 Ом возьмем 100 Ом и промоделируем (изображение кликабельно):


Как мы видим, через нагрузку течет все тот же самый ток в 10 мА: операционный усилитель отработал изменение нагрузки, повысив на ней напряжение, оно теперь стало равным 1 В. Но в реальности операционный усилитель не сможет поднимать напряжение бесконечно: оно ограничено напряжением источника питания (а зачастую еще и несколько меньше него). Что же будет, если задать сопротивление нагрузки слишком высоким? По сути, источник тока перестает работать. На рисунке ниже пример моделирования источника с сопротивление нагрузки в 1 кОм (изображение кликабельно).


Согласно графику, ток через нагрузку теперь уже никакие не 10 мА, а всего лишь 4 мА. При дальнейшем повышении сопротивления нагрузки ток будет все меньше и меньше.
Дополнительно по приведенным схемам источников тока на операционных усилителях надо отметить, что стабильность выходного тока в них зависит от стабильности напряжения $V_{IN}$, в связи с этим оно должно быть хорошо стабилизированным. Существуют более сложные схемы, которые позволяют уйти от этой зависимости, но в рамках данной статьи мы их рассматривать не будем.

9. Интегратор на операционном усилителе


Думаю, что все читатели знакомы с классической схемой интегратора на RC-цепочке:


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


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


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

$\mathbf {f_c=\frac{1}{2\pi R1C1}}$


Тут стоит обратить внимание на один очень важный момент. Надо всегда помнить, что частота среза, рассчитанная выше, верна только для RC-цепочки и не учитывает частотных свойств самого операционного усилителя. Частотными свойствами операционного усилителя можно пренебречь, если мы попадаем в его рабочий диапазон частот, но если мы вдруг выйдем за него, то итоговая частотная характеристика схемы будет совсем не такой, как мы ожидали. Грубо говоря, если у нас RC-цепочка настроена на 1 МГц, а операционный усилитель позволяет работать до 100 МГц все хорошо. Но если у нас цепочка на 10 МГц, а операционный усилитель работает до 1 МГц все плохо.
В качестве примера рассчитаем ФНЧ со следующими параметрами частотой среза АЧХ в 1 МГц. Для такой частоты можно выбрать

  • Частота среза АЧХ $f_c=1 \text { МГц}$
  • Операционный усилитель LT1803 (Максимальная частота 85 МГц)

Для заданной частоты среза АЧХ подойдут следующие номиналы сопротивления и емкости RC-цепочки:

$R1=1,58 \text{ кОм}$


$C1=100 \text{ пФ}$


Результат моделирования приведен на рисунке ниже (изображение кликабельно). На этом рисунке показаны две частотные характеристики: отдельно для RC-цепочки (красная линия) и для всей схемы целиком (RC-цепочка+операционный усилитель, зеленая линия).


Как видно из рисунка, красная и зеленая линии сначала совпадают, а начиная с определенной частоты зеленая идет вниз гораздо круче. Это как раз и объясняется тем, что на частотные свойства схемы начинает оказывать влияние уже сам операционный усилитель.
Ну и поскольку все-таки мы рассматриваем интегратор, то на следующем рисунке (кликабельно) приведена классическая картинка из учебников: интегрирование прямоугольных импульсов. Параметры интегратора те же, какие были в предыдущем моделировании частотной характеристики.



10. Дифференциатор на операционном усилителе


Схема простейшего дифференциатора на RC-цепочке известна ничуть не меньше, чем схема интегратора:


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



Однако и в этом случае более подробно рассмотрим другую схему, состоящую из классического дифференциатора на RC-цепочке и повторителя на операционном усилителе:


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

$\mathbf {f_c=\frac{1}{2\pi R1C1}}$


В случае дифференциатора также нельзя забывать про частотные свойства самого операционного усилителя: здесь они выражены даже более ярко, чем в случае с интегратором. Как мы уже убедились в прошлом разделе, начиная с определенной частоты операционный усилитель работает как фильтр нижних частот, тогда как дифференциатор это фильтр верхних частот. Вместе они будут работать как полосовой фильтр.
В качестве примера рассчитаем ФВЧ с частотой среза АЧХ равной тем же 1 МГц. Для такой частоты можно выбрать все те же номиналы компонентов, которые были в случае ФНЧ:

$R1=1,58 \text{ кОм}$


$C1=100 \text{ пФ}$


Результат моделирования приведен на рисунке ниже (картинка кликабельна). На этом рисунке показаны две частотные характеристики: отдельно для RC-цепочки (красная линия) и для всей схемы целиком (RC-цепочка + операционный усилитель, зеленая линия).


Как видно из рисунка, красная и зеленая линии сначала совпадают, а начиная с определенной частоты, зеленая линия идет резко вниз, тогда как красная линия, отражающая работу непосредственно самой RC-цепочки, горизонтальна.
Работа дифференциатор при подаче на его вход прямоугольных импульсов приведена на рисунке ниже (изображение кликабельно).



Заключение


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

Полезные ссылки
  1. Хоровиц П., Хилл У. Искусство схемотехники: Изд. 2-е. М.: Издательство БИНОМ 2014. 704 с
  2. Картер Б., Манчини Р. Операционные усилители для всех М.: Издательский дом Додэка XXI 2011. 509 с
  3. LT1803


Подробнее..

SimInTech первая среда моделирования в России, импортозамещение, конкуренция с MATLAB

06.10.2020 14:22:26 | Автор: admin

Инженеры по всему миру ведут разработку в среде MATLAB, это их любимый инструмент. А может ли российская IT-индустрия предложить достойную альтернативу дорогому американскому софту?

С этим вопросом я пришла к Вячеславу Петухову, основателю компании 3В Сервис, которая производит отечественную среду моделирования и разработки SimInTech. После попытки продать свою разработку в Америке он вернулся в Россию и делает конкурента MATLAB здесь.

Поговорили о трудностях внедрения сложного IT-продукта на российский рынок, маркетинге на грани, принципах работы SimInTech и её преимуществах перед MATLAB.


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

Фаря:
На чём написана среда SimInTech?

Вячеслав Петухов:
Изначально и сейчас она написана на Паскале.

Серьёзно? Кто-то на нем еще пишет?

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

Если сравнивать с MATLAB, то какие библиотеки SimInTech, по твоему мнению, самые сильные сейчас, какие еще недоработанные, какие планируется доработать?

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

В целом у нас нет ничего неудачного, но есть области, где мы еще не копали. Допустим, в MATLAB есть тулбокс для расчета динамики летательных аппаратов, а у нас нет. Но это не потому, что у нас что-то не хватает, просто мы этим не занимаемся.

А что на счетавтоматической генерации кода? MATLAB этим очень кичится.

Это смешно. Матлабовская кодогенерация это просто смех. Если говорить про наш продукт, то теперь операторы АЭС открывают ноутбук на станции, открывают схему в SimIntech, подключают к стойке, которая управляет реактором, и правят эту схему. Программиста нет.

***

Мне кажется, это очень интересная история, что вы делаете свой сложный российский продукт, но почему у вас такой жесткий маркетинг? Почему в каждую дырку (отверстие) нужно обязательно вставлять MATLAB?

Потому что изначально все наши коммерческие проекты начинались тем, где обкакивался MATLAB. Я считаю, что MATLAB у нас используют все, это стандарт де-факто, они на рынке, все их знают. И вот мы приходим и говорим: У нас есть всё то же самое, только лучше. Но часто возникает проблема, если приходишь с российским продуктом: Это что, импортозамещение? Взяли, денег намыли, теперь нам пытаются впарить это

Вот одна из твоих цитат из ВКонтакте:

И при этом ты говоришь, что по отношению к SimInTech понятие импортозамещение употреблять не стоит. Хотя тут сам на это и намекаешь.

Здесь написано, что ВУЗ заплатил 25000000 . За что? Зачем ВУЗу на 25000000 покупать MATLAB?

А зачем ему SimInTech покупать?

SimInTech не надо покупать. Качай и учи. Передаточные функции, фазочастотный анализ, устойчивость. Это всё можно делать бесплатно. У нас можно качать демоверсию и в ней всё это делать.

И сколько эта демоверсия доступна?

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

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

Это понятно. Но моя задача тебе продать. Как еще я тебе продам, если ты пользуешься MATLAB? Ты позовёшь своих инженеров и скажешь им: Вот пришли ребята, хотят нам предложить аналог MATLAB. А у инженера в матлабе наработана библиотека и куча всего. Он откроет SimInTech и скажет: Ой, да у вас интерфейс не такой, да у вас линии неправильные рисуются и т.д.

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

Наш заказчик к нам придёт, потому что у него проблема с MATLAB. А те, у кого нет проблем с MATLAB, кого всё устраивает, в принципе, не наши заказчики. Они не придут. Мне нужно, чтобы все знали, что SimInTech это то же самое, что MATLAB, но лучше.

То есть ты за счёт MATLAB пиаришься?

Ну да.

***

А зачем ты приходил к конкурентам в Софтлайн (дистрибьюторы MATLAB)?

Я предлагал им гениальную бизнес-идею. Я знаю, что у них где-то порядка 50% прибыли уезжает в Америку. Давайте оставим эти 50% здесь и на эти деньги мы разработаем всё, что угодно.

Чем закончилась ваша встреча?

Их директор сказал: Мне не интересно, у меня и так всё хорошо. Не захотел участвовать в процессе маркетингового сопровождения: уроки, презентации, материалы, учебная литература. Я хотел, чтобы Софтлайн, как он продаёт MATLAB, продавал SimInTech. Деньги, которые сейчас уходят в Америку, можно было бы оставлять у себя и делить с нами.

Очень амбициозно

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

Подробнее..

Томограф для нефтегазовых месторождений, или Пересечение трёхмерной расчётной сетки и плоскости на CUDA

28.12.2020 08:09:56 | Автор: admin
В данной статье приведены описание и алгоритм решения задачи построения рисунка внутренностей месторождения, являющегося результатом пересечения расчётной сетки с плоскостью. А также приведены тайминги построения решения, которые получаются на типичном компьютере геолога-модельера или гидродинамика.
image
Визуализация расчётной сетки и куба


Моделирование месторождений уже упоминалось ранее в предыдущих наших обзорах (http://personeltest.ru/aways/habr.com/ru/company/bashnipineft/blog/512052/). При построении 3D-моделей нефтегазовых месторождений в различных областях в гидродинамике, в геологии, в механике часто используются объёмные расчётные сетки. Также сетки нужны, например, при использовании метода конечных объёмов.

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

Часто пользователю, который работает с моделью, нужно визуально оценить распределение физических свойств внутри модели месторождения. Это можно делать разными способами, например, созданием сечений или наложением масок-фильтров на ячейки сетки.
Реализовать в программе визуализацию слоев (i, j, k) сетки довольно просто и быстро.

image
Визуализация слоев сетки i, j (слайсов)

Однако хотелось бы получать рисунок вдоль произвольной плоскости, при этом иметь возможность двигать и крутить эту плоскость в произвольном направлении с хорошим FPS. Таким образом, модельеру нужен этакий быстрый томограф модели месторождения.
Геометрия угловой точки (corner-point grid) способ задания геометрии расчётных сеток из шестигранников, наиболее часто использующийся в гидродинамическом и геологическом моделировании. Такой формат подразумевает:

Наличие пилларов отрезков, каждый из которых задан двумя точками, а каждая точка тремя координатами (x, y, z). Пиллары могут быть вертикальными, наклонными, но никак не горизонтальными. Пиллары образуют множество размером M x N, но не обязательно с постоянным шагом. Множество пилларов задаётся массивом COORD.

На пиллары накидываются отметки вершин, у которых известна лишь координата z (глубина). Для каждой ячейки нужно по восемь отметок по две на четыре соседних пиллара. Эти отметки точек по сути своей являются углами ячеек, поэтому формат и называется геометрия угловой точки. Множество отметок задается массивом ZCORN. Ячейки не могут пересекаться друг с другом. Соседние ячейки не обязательно стыкуются друг с другом, поэтому даже при полном совпадении вершин граней соседних ячеек эти вершины дублируются.

Кроме этого, задаётся массив нулей и единиц ACTNUM. Нулевое значение в ячейке указывает на то, что она неактивна и её не стоит учитывать в расчётах.

image
Геометрия угловой точки

Входными данными для задачи построения сечения являются:
1) геометрия угловой точки:

  1. размерность сетки;
  2. массив COORD;
  3. массив ZCORN;
  4. массив ACTNUM;

2) коэффициенты общего уравнения секущей плоскости:
$Ax+By+Cz+D=0$

Решение не обязательно должно быть точным, ведь решение будет оцениваться пользователем только визуально. На выходе должны получиться массивы:
  • Упорядоченный массив троек индексов (i, j, k) пересечённых ячеек;
  • Упорядоченный массив координат точек полигонов пересечения ячеек;
  • Упорядоченный массив индексов точек начала нового полигона в массиве координат точек пересечения. В конце массива для удобства должно быть добавлено общее количество точек пересечения.

Такой формат выбран потому, что он удобен и для визуализации через векторные графические движки, и для визуализации через триангуляционные движки.

Хорошо бы, чтобы алгоритм построения пересечения был нетребователен к памяти, так как сами сетки довольно объёмны. Например, большая сетка на 1000х1000х1000 ячеек, построенная на типе данных одинарной точности (float) занимает примерно 30 гигабайт памяти.

Нами был разработан довольно экономный к памяти алгоритм построения пересечения геометрии угловой точки и плоскости:
1. Проход по всем ячейкам и определение факта пересечение плоскости с ячейкой:
a. Подстановка каждой вершины в левую часть уравнения плоскости.
b. Если среди полученных чисел есть хотя бы два с противоположными знаками, то пересечение есть.
c. Если среди полученных чисел есть хотя бы три нуля, то пересечение есть.
d. Запись в массив флагов факта пересечения.

image
Геометрия угловой точки, секущая плоскость, пересечённые ячейки

2. Stream Compaction: из массива флагов собираем индексы ячеек, которые пересекаются с плоскостью. Располагаем их в новом массиве компактно.

3. Для каждой пересекаемой ячейки определяем количество точек пересечения проход по всем вершинам и всем рёбрам ячейки. Складываем значения количества точек пересечения соответственно индексам ячеек в общий массив количества точек пересечения.

4. Prefix sum: префиксная сумма по массиву количества точек пересечения в ячейках. Это позволит определить смещение от начала массива координат точек для каждой ячейки.

5. Поиск и запись точек пересечения в массив координат точек пересечения.

6. Для каждой пересечённой ячейки находим барицентр точек пересечения. Составляем вектора по каждой точке пересечения и барицентру. Сортируем точки пересечения по углу относительно первого вектора, тем самым упорядочиваем точки в полигон.

image
Упорядочивание точек пересечения для одной ячейки в полигон

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

image
Результат пересечения геометрии угловой точки и плоскости

Видно, что каждый шаг алгоритма можно распараллелить.
Была создана реализация алгоритма, распараллеленная на потоки с помощью OpenMP. В такой реализации примерно 87% времени выполнения занимает первый пункт алгоритма проход по всем ячейкам и определение факта пересечения. Время выполнения реализации на OpenMP оказалось слишком большим для комфортной работы с пересечениями в окнах визуализации.
Чтобы ускорить построение пересечения, алгоритм был реализован на CUDA. Сетка должна быть постоянно в видеопамяти, т. к. пересылка её с оперативной памяти занимает слишком много времени, даже если использовать CUDA Streams. В такой реализации примерно 43% времени выполнения занимает первый пункт алгоритма, 20% времени пересылка результатов с видеопамяти в оперативную память. Kernel-функция, используемая в реализации для определения факта пересечения, довольно проста:

Заголовок спойлера
__global__ void checkIntersectCell (const TCOORD* coord,const TZCORN* zcorn,const TACTNUM* actnum,TFLAGS* flags,TIJK I, TIJK J, TIJK K,TPLANE A, TPLANE B, TPLANE C, TPLANE D,const TCOEF* coefX, // предрасчитанные коэффициенты для поиска координат x узловconst TCOEF* coefY // предрасчитанные коэффициенты для поиска координат y узлов){const auto globalIndex = blockDim.x * blockIdx.x + threadIdx.x;if (globalIndex < (I * J * K)){if (actnum[globalIndex]){// globalIndex = K * J * i + K * j + k = K * (J * i + j) + kconst auto k = globalIndex % K;const auto j = (globalIndex / K) % J;const auto i = (globalIndex / K) / J;int_fast8_t signPlus = 0;int_fast8_t signMinus = 0;int_fast8_t signZero = 0;for (size_t p = 0; p < vertexCount; ++p){const auto indexPillar = (J + 1) * (i + p / 4) + (j + (p / 2) % 2);const auto zPillarTop = coord[6 * indexPillar + 2];const auto z = zcorn[(2 * i + p / 4) * 2 * 2 * J * K + (2 * j + (p / 2) % 2) * 2 * K + (2 * k + p % 2)];const auto x = (z - zPillarTop) * coefX[indexPillar] + coord[6 * indexPillar + 0];const auto y = (z - zPillarTop) * coefY[indexPillar] + coord[6 * indexPillar + 1];switch (sign<int_fast8_t>(A * x + B * y + C * z + D)){case -1: ++signMinus; break;case 1: ++signPlus; break;case 0: ++signZero; break;}}flags[globalIndex] = static_cast<TFLAGS>((signMinus > 0 && signPlus > 0) || signZero >= 3);}else{flags[globalIndex] = static_cast<TFLAGS>(0);}}}


Для тестирования был взят случай, который даёт большое количество полигонов пересечения. Сетка в тестах состояла из прямоугольных параллелепипедов, по каждому направлению (x, y и z) сетка располагалась от 0 м до 100 м. Плоскость проходила через центр сетки и имела нормаль (1, 1, 1).

image
Геометрия угловой точки и секущая плоскость для тестирования

Результаты тестирования и замеры времени выполнения представлены ниже. Тестирование проводилось на одном и том же компьютере.

image
Таблица с результатами тестирования и замерами времени выполнения

image
Синяя диаграмма показывает ускорение построения пересечения на OpenMP на 8 потоках относительно OpenMP на 1 потоке. Зелёная диаграмма показывает ускорение построения пересечения на CUDA относительно OpenMP на 8 потоках

Из результатов замеров времени выполнения видно, что, используя реализацию на CUDA, можно добиться практически незамедлительного построения пересечения больших сеток. А учитывая то, что CUDA и OpenGL функционально совместимы, то результат построения можно не пересылать с видеопамяти в оперативную память, что ускорит время решения задачи примерно на 20%.

Также видно, что количество вершин в результате пересечения незначительно отличается. Это происходит в случае, когда плоскость касается угла ячейки. Из-за точности расчётов в результате может засчитаться в пересечение очень маленький треугольник, а может и быть пропущен. Результат различается не только между построением на CPU и GPU, но также и между построением на различных CPU и на различных GPU.
Пересечение геометрии угловой точки и плоскости обычно просматривают в 3D окне.

image
Модель месторождения и секущая плоскость

image
Результат пересечения модели месторождения и плоскости

Заключение: в статье показан пример решения одной из многих задач, возникающих при создании программного обеспечения для процессов моделирования месторождений нефти и газа. Несмотря на огромный парк open-source кодов, решение подобных задач требует мультидисциплинарной подготовки разработчиков, и поэтому представляется интересными развивающими вызовами в области computer science, в которых доля рутинного программирования минимальна, а мозги надо включать на полную. Этим и интересны задачи нашей предметной области, к которым хотелось бы привлечь внимание аудитории и потенциально заинтересованных энтузиастов и разработчиков. В частности, создание построителя пересечения геометрии угловой точки и плоскости являлось задачей на одном из хакатонов, проведённых в 2019 году РН-БашНИПИнефть при участии Уфимского Государственного Авиационного Технического Университета (УГАТУ).

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

P. S. Возможно, поиск пересекаемых ячеек был бы быстрее, если бы применялось K-d дерево. Но реализовать такое решение гораздо сложнее, учитывая, что нужно придумать, как удачно построить само дерево поиска и равномерно распараллелить поиск на потоки. К тому же, если даже теоретически поиск ускорить так, чтобы он вообще не занимал времени (сейчас занимает 87% времени), то производительность на OpenMP реализации вырастет в 7.7 раз, что всё равно медленнее, чем реализация на CUDA.
Подробнее..

Флейты, программист и производство

24.01.2021 16:23:06 | Автор: admin

На объединение данных понятий мне потребовалось 5 лет и миллион рублей.

Я запустил производство флейт Пана Arra Lazur и продолжаю его развивать по настоящее время (2021г), при этом являюсь C++ разработчиком, преимущественно в области 3d моделирования для CAD/САПР (систем автоматизированного проектирования) и геометрических ядер.

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

О панфлейте

Что же такое флейта Пана? Это музыкальный духовой инструмент. Является набором скрепленных между собой трубок различной длины. Музыкант дует на срез (лабиум) с одной стороны, а с другой трубки заткнуты пробками. Полученный внутренний объем трубки (игровой канал) определяет ее ноту.

флейта Пана [0]флейта Пана [0]

Качественное звучание обеспечивается известными техническими аспектами [12], например:

  • Диаметры трубок меняются логарифмически, постепенно от большего к меньшему. Это дает плавность изменения тембра на всем диапазоне звучания.

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

  • Расстояние между игровыми каналами должно быть минимально. Это дает минимальную ширину инструмента и как следствие, увеличивает максимальную скорость игры.

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

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

Методы производства

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

Хранилище бамбуковых трубок на производстве [1]Хранилище бамбуковых трубок на производстве [1]

Более современный подход это вытачивание трубок на токарных станках. Тут основная проблема это очень высокая трудоемкость.

Точение трубок на токарном станке [2]Точение трубок на токарном станке [2]

Массовый и очень дешевый вариант производства это литье пластмасс под давлением [6]. Тут главная проблема это невозможность менять параметры индивидуально под клиента, а также требуется реализация больших партий для амортизации оборудования/пресс-форм.

Литье пластмасс в пресс-формах [6]Литье пластмасс в пресс-формах [6]

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

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

Автоматизация

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

Так достаточно лишь запустить приложение (.ехе) с новыми параметрами, и получить сразу готовую 3д модель для преобразования в траекторию движения режущего инструмента станка с ЧПУ (числовым программным управлением).

Саму флейту описывают порядка 50ти параметров: диаметры, толщины стенок, высота обвязки и т.д. Легкость перегенерации моделей поощряет эксперименты с этими параметрами и позволяет мне, например, измерив длину челюсти/рук и т.д., оптимизировать габариты/изгиб флейты под музыканта.

Пример 3д моделиПример 3д модели

Далее я начал пробовать различные способы изготовления:

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

Фрезерование плоских панфлейтФрезерование плоских панфлейт

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

2) Тогда я решил попробовать фрезеровать сразу изогнутые флейты, где весь инструмент распиливается на отдельные трубки, а каждая трубка на две половинки.

Фрезерование изогнутых панфлейтФрезерование изогнутых панфлейт

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

Неудачный результат фрезерованияНеудачный результат фрезерования

3) А что если попробовать нарезать флейту поперек и затем склеивать полученные куски?
Для этого пришлось дописать функциональность по расчету пересечений 3д объектов и плоскости. Также заиграла новыми красками уже готовая авто-расстановка.

Нарезка панфлейты поперекНарезка панфлейты поперек

При таком подходе оказалось сложно получить точную и аккуратную стыковку слоев между собой. Критичным оказалось еще и отсутствие прочности (древесина легко раскалывается вдоль волокон).

Результаты сборки Результаты сборки

4) Далее решил попробовать наматывать композитные угле- или стеклопластиковые трубки [10], а фрезеровать только деревянную обвязку. На деревянной обвязке с самых краев не лишним будет дополнительный материал, для защиты от разрушения крайних трубок при падении флейты углами на твердые поверхности.

Проектирование карбоновых панфлейтПроектирование карбоновых панфлейт

Суть формовки трубок заключается в намотке стекло-/углеткани на полированные стальные стержни, которые затем напитываются отверждаемым жидким пластиком в вакуумном пакете (метод вакуумной инфузии [11]). Трубки получаются сразу с гладкой внутренней поверхностью, легкие и прочные.

Реквизит для вакуумной инфузииРеквизит для вакуумной инфузии

Фрезеровка плоской части обвязки не отличается от предыдущего способа, но вот фрезеровка изогнутой проблематична. Написал модуль, который нарезает эту часть на кучу небольших деталей, каждая из которых не имеет нависающих частей и может быть отфрезерована за один проход. Теперь уже требуется не просто расставить оптимально в заготовке, но и помнить, где какой кусок, чтобы правильно собрать воедино, так как деталей много и все они похожи друг на друга. Хороший такой пазл получился (:

Результат автоматической расстановкиРезультат автоматической расстановкиРеализация в деревеРеализация в дереве

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

Стеклопластиковые панфлейтыСтеклопластиковые панфлейты

5) Следующий этап это печать трубок на 3d принтере и возврат к изгибу деревянных частей флейты с помощью водяного пара.

Составляющие напечатанных панфлейтСоставляющие напечатанных панфлейт

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

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

Пропаривание: ожидание и реальностьПропаривание: ожидание и реальность

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

Напечатанные панфлейтыНапечатанные панфлейты

6) Пока итоговый вариант это 3d печать флейты целиком с использованием композитных пластиков, дерево-наполненным пластиком для обвязки, угле-наполненным пластиком для трубок и фотополимерным пластиком для вставок с торцов (лабиум).

Проект целиком печатаемой панфлейтыПроект целиком печатаемой панфлейтыВзрыв-схемаВзрыв-схема

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

Сборка трубок с обвязкой и лабиумом Сборка трубок с обвязкой и лабиумом Пример целиком напечатанной панфлейтыПример целиком напечатанной панфлейты

7) Так же хочется отдельно отметить изготовление пробок. Каждая пробка в зависимости от того, для какой ноты она предназначается, имеет свою степень вогнутости дна. Чем меньше длина трубки (чем выше нота), тем сильнее должна быть выпуклость.

3д модель силиконовых пробок3д модель силиконовых пробок

В целом все относительно просто. Изготавливается форма под литье силикона (фрезеровка, печать) и она заполняется силиконом.

Литье силиконаЛитье силикона

Планы, перспективы, потенциал

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

Петли в пробкиПетли в пробки
  • Наматывать карбоновые трубки на отполированные стержни с использованием технологии препрегов (проще, чем вакуумная инфузия), а не печатать их из угле-наполненного пластика [3]. Тогда получиться делать зеркальный внутренний канал.

Карбоновые трубкиКарбоновые трубки
  • Фрезеровать обвязку из ценных пород древесины по уже отработанной технологии с изгибом [4], что просто эстетически красиво и прочнее, чем напечатанный пластик.

Ценные породы древесиныЦенные породы древесины
  • Отливка из латуни лабиума (вставок с торцов) по технологии выжигаемых моделей [5], для долговечного ими удержания заточки.

Литье металлаЛитье металла

Таким образом рендер 3d модели идеальной флейты Пана может выглядеть как-то так:

Проект идеальной панфлейтыПроект идеальной панфлейты

Итого

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

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

P.S.
Фото отчет: https://www.instagram.com/arra.lazur/
Видео материалы: https://www.youtube.com/channel/UCVlFogcnEd2hL9x5DVbyb8Q

Использованные источники:

[0] https://vplate.ru/flejta/pana/

[1] https://sites.google.com/site/radu63353/panflute-shop

[2] https://www.youtube.com/watch?v=CNRBoFL0U28&feature=emb_logo&ab_channel=BradWhite

[3] https://carbonkevlarsupply.com/products/carbon-fiber-tubing-10mm-x-8mm-x-500mm-3k-roll-wrapped-100-carbon-fiber-tube-glos

[4] https://www.youtube.com/watch?app=desktop&v=k4uVozxt6vY&ab_channel=mtmwood

[5] https://lk-casting.ru/izgotovlenie-juvelirnyh-izdelij/

[6] https://3dvision.su/services/lite-plastmass/v-press-formy/

[7] https://woodjig.net/parovaja-gibka/

[8] https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D1%80%D0%B0%D1%81%D0%BA%D1%80%D0%BE%D1%8F

[9] https://prototechasia.com/en/plastic-cnc-machining/questions-cnc-machining

[10] https://www.youtube.com/watch?v=wMJ3b2QhFkk&ab_channel=World4Carp

[11] https://zakbus.ru/vakuumnaya-infuziya/

[12] Флейта Пана: инструмент и техника игры. Денис Климов. Стр 39.

Подробнее..

Моделирование дома в SketchUp и перенос его в Unity 3D

24.01.2021 00:17:21 | Автор: admin

Учебные материалы для школы программирования. Часть7

Spoiler

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

Сегодня, мы создадим здание и перенесем его в Unity. Хочу обратить ваше внимание на то, что для импорта готового здания, необходимо, чтобы SketchUp стоял на том же ПК. Без программы Unity не сможет импортировать модель.

Порядок выполнения

Откроем SketchUp и выберем шаблон Simple Template - Meters.

Выберем инструмент фигуры и нарисуем на земле квадрат по форме дома.

Теперь, выдавим его с помощью инструмента выдавить/вдавить (push/pull).

Сделаем стены. Для этого используем инструмент Сдвиг (Offset).

Повторим операцию ещё раз.

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

Лишние линии убираются инструментом Ластик (Erase).

Выдвигаем стены.

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

Нарисуем на стене квадрат и выделим его.

Нажимая Ctrl+C и Ctrl+V, копируем его по стене, привязывая к линии.

После копирования окон лишнии линии стираем.

С помощью инструмента Вдавить/выдавить вдавливаем окно до состояния "На грани" (On Face).

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

Вырежем дверь похожим образом.

Используем инструмент "Ведёрко" (Paint Bucket) для наложения текстур. Выберем подходящую текстуру и зальём пол с фундаментом.

Аналогично поступим со стенами.

Чтобы наложить текстуру на замкнутый контур, нажмём Shift, чтобы наложить на все плоскости, имеющие такую же текстуру Ctrl.

Текстура на стену легла не идеально. Перейдём в свиток Текстура-Позиция, и перетягивая красный ползунок мы изменим позицию текстуры, а зелёным её размер.

Сейчас текстура этой стены отличается от остальных стен. Используем клик левой кнопки мыши по этой стене с зажатым Alt на инструменте "Ведёрко", чтобы запомнить настройки текстуры на этой стене.

И красим инструментом "Ведёрко" остальные стены.

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

На одном из торцов дома создадим плоскость для крыши.

Попрошу заметить, что мы вышли из группы кликом по пустому месту на экране. Если плоскость маленькая, её можно увеличить инструментом "Растянуть" (Scale).

Рисуем на плоскости очертания крыши. Лишние линии можно стереть.

Инструметом Выдавить/вдавить придаём объем.

Используем "Сдвиг" на крыше, чтобы добавить объёма.

И вдавим плоскость немного внутрь.

Окрасим всё подходящими текстурами и удалим человека. Домик готов для импорта в Unity!

В настройках импорта в Unity надо выставить галочку Generate Colliders, а во вкладке Material Use External Materials.

При этом, импортируются все материалы и создадутся папки.

Теперь, у вас есть своя собственная модель дома, для использования в играх!

Подробнее..

Разбор медицинского случая, в котором пациент потерял 2 зуба что дают технологии

23.03.2021 14:22:27 | Автор: admin
Во время занятий спортом пациент получил сильнейший удар в район верхней челюсти и потерял сознание. Я подозреваю сноуборд и дерево, но это только мои подозрения. Пациента эвакуировали в ближайшую клинику примерно стандартного уровня ОМС, где убрали осколки костей, зашили рану и вообще грамотно оказали помощь. Грамотно это не трогая корни зубов, потому что пациент знал, что скоро вернётся в Москву и пойдёт в нашу клинику. Хирург на месте не обладал ни нужным оборудованием, ни материалами, но принял очень правильные профессиональные решения, за что ему спасибо.

Поскольку многих из вас пугают обычные снимки с увеличением, сверху поста 3D-модель результат фотограмметрии, полученной внутриротовым сканером:

image

Ниже будут фотографии, так что аккуратнее.

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

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

Для начала обратим внимание на то, в каком состоянии пациент поступил.

image

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

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

image

После осмотра полости рта мы провели рентген-диагностику с помощью прицельных снимков и КТ (сделали 3D-снимок). Было подозрение на трещину ещё одного зуба, и, увы, оно подтвердилось.

Трещина корня прямое показание к удалению зуба. Она означает разгерметизацию зуба (в нашем случае сильно ниже уровня десны). Сразу, возможно, ничего не болит, но позже в этом участке неминуемо начнётся воспалительный процесс. Загерметизировать зуб обратно невозможно: доступ при таких трещинах возможен только через кость, то есть сама операция создаст больше проблем, чем трещина. На текущий момент развития науки и техники зуб убирается. Что мы и сделали.

image

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

На соседнем зубе видно штифтово-культевую вкладку из золота. Это один из способов восстановления сильно повреждённого зуба. То есть пациенту ранее установили вкладку на штифте. Материал выбран как биологически инертный, то есть не создающий дополнительных сложностей с отторжением или миграцией в соседние ткани и материалы реставрации. Это хорошая надёжная технология прошлого поколения, и здесь вкладка была установлена очень качественно. Такие вкладки ставят много где по России, включая передовые клиники Москвы. Но мы в своих клиниках крайне редко прибегаем к такому методу лечения, поскольку уже есть композитные материалы и стекловолоконные штифты. Дело в том, что золотую конструкцию довольно сложно перекрыть: она при определённом освещении видна внутри зуба, что создаёт не самый красивый эффект. При обычном коротком разговоре с незнакомым человеком это заметить сложно, но разница в цвете немного напрягает. Доктора же сразу уверенно диагностируют её с первых секунд беседы. Тем не менее у этой золотой вкладки чуть более широкие показания, поэтому она остаётся средством последнего выбора при компромиссном восстановлении зуба: это когда его уже надо бы вырвать, но пациент готов мириться с эстетической проблемой, чтобы не удалять его.

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

image

Дальше я беру 3D-модель ротовой полости пациента и проектирую ему новые зубы. На моделирование уходит примерно 15 минут, очень многое там автоматизировано. Временная конструкция длительного ношения (четырешесть месяцев максимум) делается из полимерного параллелепипеда в ЧПУ-станке с 4-осевой фрезой. Называется эта штука Церек и может встречаться в разных стоматологических клиниках. Если мы говорим про региональные, то чаще это VIP-клиника. Один временный зуб стоит от девяти тысяч рублей (больше, если конструкция сложная или материал хитрее). Наш пациент получил три зуба просто для того, чтобы ходить с ними три дня. Он уже знал, что через три дня ему понадобится высокоэстетичная конструкция длительного ношения, чтобы ходить с ней пять-шесть месяцев до установки коронок на импланты.

image

Обычная клиника может сделать такую временную конструкцию в лаборатории. Как правило, делается слепок зубов (то есть панорамное фото заменяется на введение массы и снятие оттиска), а по нему уже выполняется ручное обтачивание зубов. Я тоже пользуюсь ручной фрезой, но только для докоррекции: иногда нужно чуть-чуть поправить полученную конструкцию. Поскольку клиники обычно редко держат ЧПУ-станки в своих помещениях, выполняется это не в день обращения.

Мой пациент получил зубы примерно за 50 минут после проектирования. В общей сложности он провёл в кабинете около полутора часов: это включая осмотр, аппаратную диагностику, снятие реставрации, проектирование временной конструкции, фрезерование, докоррекцию и установку, а потом инструктаж перед предстоящей операцией.

image

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

Ещё через три дня предстояла технологически сложная операция.

Операция: одномоментная установка имплантов


Поскольку пациент потерял свои зубы недавно, костная ткань в месте травмы не успела уменьшиться. Это важно, потому что костная резорбция не даёт установить импланты сразу. Обычно нужно сначала нарастить кость (на аугментацию уходит два-три месяца минимум), а затем внедрить импланты (поставить винты, на которых будут держаться коронки), которые также будут приживаться некоторое время. И только примерно через год пациент получает новые зубы.

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

Диаметр импланта меньше диаметра лунки, которая остаётся от зуба. Условно, если не заполнить лунку чем-то, то произойдёт коллапсирование тканей. Поэтому мы сразу же добавляем вокруг импланта новую кость, чтобы он, так сказать, соответствовал физиологии нормального зуба (насколько это вообще возможно), то есть новый тонкий зуб был окружён костью. Для этого мы засыпаем туда графт костнозамещающий материал, сделанный из кости быка, откуда химическим путём убрали все белки донора. Графт представляет собой гранулы, которые фактически используются организмом как каркас для создания новой естественной кости в этом месте.

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

Если бы пациенту удалили зубы на месте и он приехал к нам с удалёнными зубами, то потери ткани были бы после стабилизации очень высокими. После удаления зуба через один месяц с вестибулярной стороны ткани коллапсируют примерно на 3040 %. При этом с нёбной стороны незначительно: там хорошее питание. Не факт, что дефицит костной ткани был бы критичным, но это в любом случае означает повышение рисков, что ни нам, ни пациенту не надо. Одномоментная имплантация при возможности оптимальный медицинский выбор.

Подготовка к операции начинается с проектирования имплантов в виртуальной среде:

image

image

Не пугайтесь, это их оси.

Мы использовали это время с пользой: на основании полных данных диагностики у нас уже были точные модели и ротовой полости, и костей, и сосудов, благодаря чему смогли спозиционировать импланты оптимально. Мы выбрали две точки крепления и подготовили все нужные расчёты. Затем создали навигационный шаблон штуку, которая устанавливается в рот во время операции и не позволяет ошибиться даже на полградуса. Обычно шаблон выглядит примерно так (это другой шаблон, для шести имплантов, шаблон этого пациента я не сфотографировал):

image

Точнее, сфотографировали мы его уже во время операции, вот так он применяется:

image

Делается он вот на таком принтере:

image

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

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

Дальше мы планируем операцию: что может потребоваться, какие есть возможные риски, что делать при реализации такого риска (и как его снять) в общем, готовим стратегический план наступления со всеми вариантами. Я слышал, что примерно так же иногда делается обновление критичного медицинского ПО: А что делать, если свет выключат?, А что делать, если оно не встанет до 5:30 утра? и так далее.

Наш принтер самый быстрый на рынке: на шаблон у него уходит около 20 минут.

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

image

Тут нужно пояснить, чем отличается временная конструкция от постоянной и чем отличается высокоэстетичная от обычной церековской. Если бы пациент обратился в обычную региональную клинику технологическим уровнем ниже либо выбирал варианты дешевле, то ему как один из вариантов предложили бы мостовую конструкцию с креплением на сохранившиеся зубы. Очень сильно упрощая, обе наши временные конструкции примерно похожи по принципу на такой аналог, только сделаны из полимеров, которые через два-три года ношения начнут разрушаться бактериями. Срок их ношения максимум шесть месяцев. Их не стоит использовать как постоянные не только поэтому: ещё важны точки опоры и распределение нагрузок. Если мы хотим, чтобы пациент и дальше мог жевать всю оставшуюся жизнь (обычно это больше двух-трёх лет), то нужно ещё установить всё так, чтобы нагрузка приходилась на зуб (или кость под ним) максимально равномерно. Поэтому и нужны импланты.

Высокоэстетичная конструкция отличается от обычной для пациента в первую очередь цветом. Зубы имеют тёмный цвет в нижней части коронки, потом светлеют, а у края становятся почти прозрачными. Может показаться, что это не очень заметно, но зубы временной конструкции из полимера одного цвета, что выделяет их на фотографиях и при разговорах один на один. У нас был случай, когда жена не хотела, чтобы муж знал, что она меняет зубы на импланты, и именно с высокоэстетичной конструкцией она уверенно скрывала это.

Материал церековской конструкции PMMA, он же полиметилметакрилат, он же оргстекло. Сейчас Церек научился делать его с цветовым градиентом: блоки приходят разного цвета и разной прозрачности. Это позволяет им конкурировать с высокоэстетичными конструкциями правильных цветов, но в Россию на январь 2021 года такие блоки пока не поступали в принципе.

Дальше за пациента берётся мой коллега хирург Андрей:

image

image

image

Убрал ненужные остатки, наложил шаблон (фото выше), поставил импланты:

image

Теперь обратите внимание на то, что около них:

image

Около двух металлических винтов видны гранулы графта (той самой доготовленной кости при температуре 450 градусов). Если бы там было три точки крепления, то не было бы места для прорастания мягких тканей, не сформировались бы междесневые сосочки, не было бы естественной эстетики. Взял немного костного трансплантата и десневого трансплантата с бугра за седьмым зубом. Это было нужно для компенсации тканей в других местах, потерянных при травме. На фотографии видно, как он переложил кусочки десны в правильные места.

Дальше швы:

image

И конструкция:

image

Пациент улетел в другой город на следующий день.

Почему пациент смог улететь сразу после операции?



В целом это не лучшая идея, но противопоказаний к этому не было. Болеть у пациента всё перестало ещё после первой помощи. На операции он был под местной анестезией (мы используем препараты артикаинового ряда) и ничего не чувствовал. После операции Андрей прописал ему амоксиклав и нестероидное противовоспалительное + обезболивающее (аналог ибупрофена).

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

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

Шовный материал PTFE мембранный материал типа гортекса, очень чистый, тянучий, эластичный, мягкий, гигиеничный. Вытаскивается одним движением, всё вместе снимали секунд 30 из-под временных коронок.

Следующая контрольная точка полное заживление, это через четыре месяца после вмешательства. Если видим, что кость качественная, есть питание от сосудов от нёба и щеки, сосуды правильно проросли внутрь графта и закрепились, остеокласты прошли через эти сосуды и нарастили вокруг естественную кость человека, то всё в порядке. Обычно обильная васкуляризация заметна на четвёртуюшестую неделю (первичная на вторую неделю). С шестой по восьмую неделю начинается минерализация.

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

image
Навигационный шаблон.

Медицинские рекомендации: как избежать такого случая


Мораль истории: по возможности исключите встречи с деревьями во время активных занятий спортом.
Подробнее..

Конструирование эпидемиологических моделей

09.04.2021 20:23:06 | Автор: admin

Эпидемиология из-за некоторого стечения обстоятельств стала очень популярной за последний год. Интерес к моделированию эпидемий стал возникать у многих и уже всё больше людей знают о вездесущей SIR модели. Но есть ли другие подобные модели? Насколько сложно из вообще создавать и модифицировать? Но обо всём по порядку.

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

Прежде, чем обсуждать, свои разработки хотел рассказать немного о том, что узнал о математическом моделировании эпидемий.

Просто о SIR модели

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

Я понимаю, что медиапространство заполнено всевозможными описаниями данной модели, поэтому я не побоюсь и добавлю ещё одно.

SIR модель. Всю популяцию, которая подвержена эпидемии, разделили на три группы: S (susceptible восприимчивые, то есть здоровые, не заразные, но могут заразиться, так как не имеют иммунитета), I (infected инфицированные, то есть болеют и заразны) и R (recovered выздоровевшие, то есть здоровые, не заразные и не могут заразиться, так как имеют иммунитет). Очевидно, что до начала эпидемии 100 % индивидов находятся в группе S (восприимчивые) и по нулям в остальных группах. Для удобства будем считать, популяция в 100 человек, соответственно S = 100, I = 0, R = 0. В таких условиях эпидемия, конечно, не пойдёт, так как чтобы она началась, должен быть хотя бы один больной. Поэтому рассмотри другую ситуацию: S = 99, I = 1, R = 0. Вот теперь начнётся эпидемия и её моделирование заключается в последовательном высчитывания состояния популяции на следующем шаге.

Дальше чуть сложнее, чтобы понимать сколько людей заразиться на каждом шаге, надо понимать наличие двух вероятностей: вероятность контакта между двумя индивидами и вероятность заразить при контакте инфицированного с восприимчивым (). Часто в модели для воплощения первой вероятности используют просто 1/N (N объём популяции), подразумевая, что в каждый момент времени каждый индивид контактирует с одним случайным индивидом в популяции. А вторая вероятность (), обеспечивает собственно биологический показатель заразности конкретного патогена (со всеми влияющим факторами: температура, наличие маски и т.п.).

Один инфицированный встретит и заразит в конкретный момент времени конкретного восприимчивого с вероятностью:

Тогда всего он заразит восприимчивых индивидов:

А все инфицированные вместе заразят восприимчивых

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

Ещё инфицированные выздоравливают, тоже с какой-то вероятностью (), которую часто рассматривают как число обратное времени болезни. Имеется в виду, что если болезнь длится 10 дней, то больной индивид в конкретный день выздоровеет с вероятностью = 1/10. Получается количество выздоравливающих на каждом шаге будет равно:

Количество инфицированных на втором шаге, помимо того, что увеличится на 0.99* ещё уменьшится на 1*. Количество выздоровевших увеличится на 1*. Относительного полученного состояния будет высчитываться следующий шаг модели.

Таким образом модель формулируется следующими уравнениями:

Модификация SEIR

О SIR модели слышали теперь довольно многие. О существовании других моделей слышало уже меньше людей. Часто всё-таки вспоминают SEIR модель, которую рассматривают как модификацию SIR.

SEIR модель учитывает инкубационный период (E exposed, индивиды болеют, но не заразны и со временем полностью заболеют). В такой модели заражение восприимчивых происходит таким же способом как в модели SIR, но попадают такие особи не в группу I, а в группу E. А из E с определённой вероятностью (, число обратное длительности инкубационного периода) происходит переход уже в I.

Компартментальные модели в целом

Существует ещё много модификаций SIR моделей. Все они, включая саму SIR, являются представителями целого класса моделей, которые называют компартментальными эпидемиологическими моделями. Упоминаемое выше разделение популяции на группы или компартменты (отсеки) как раз и обуславливает такое название моделей.

Сложность компартментальных моделей не ограничена тремя или четырьмя группами. Такие модели могут учитывать самые различные сценарии: введение карантинных мер (SIQR, добавляется группа Q quarantine), потеря иммунитета (SIRS, переход с некоторой вероятностью из R обратно в S), группы риска у восприимчивых (несколько групп S: S1, S2, , каждая из которых со своей вероятностью заражается), различные варианты течения болезни (несколько групп I: I1, I2, , в каждую из которых своя вероятность попадания восприимчивых особей, а также у каждой допустим своя заразность) и т.д. Ограничением здесь является только фантазия исследователя.

Сложные схемы компартментальных моделей часто описывают в виде графа переходов. Вот, например модель для туберкулёза из книги по эпидемиологии:

Схема распространения туберкулёзаСхема распространения туберкулёза

Реализация компартментальных моделей заключается в описании уравнений переходов и последующем расчёте изменений каждого компартмента в течение какого-то периода.

DEMMo (конструктор моделей)

В этом и заключается назначение разрабатываемой мной программы DEMMo. DEMMo Designer of Epidemic Math Models (конструктор эпидемиологических математических моделей). Конструированные модели организуется в объектно-ориентированном виде. Есть класс стадии (аналог компартмента), класс потока (обеспечивает переход индивидов между стадиями) и внешнего потока (прибавление/вычитание индивидов к/из стадии). Подробную инструкцию по использованию программы попытался написать в документации.

Результаты различных моделей, реализованных с использованием программыРезультаты различных моделей, реализованных с использованием программы

Программу писал на python. Интерфейс на PyQt5. Выложил исходный код программы на github (с git работал впервые) и архив с готовой версией для windows на гугл диск. Будем считать, что начинаю бета тестирование программы. Надеюсь, я хоть немного понятно объяснил и для тех, кому интересно, буду очень рад если программу жестоко поэксплуатируют. Вроде бы настроил систему создания отчётов об ошибках. Это мой первый крупный проект после задачек на ряды Фибоначчи и т.п.

Код очень плохо задокументирован, причём часть комментариев на русском, а часть на английском. Знаю, что плохо, каюсь. Надеюсь займусь этим. Если будут какие-то конкретные советы от матёрых программистов, буду очень рад.
Контактная почта: demmo.development@gmail.com

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

Подробнее..

Перевод Как StarCraft II может помочь экологам в изучении жизни на Земле

30.05.2021 18:13:46 | Автор: admin

Вряд ли Лу Барбе осмелится назвать себя заядлым геймером. Он занимается проблемами экологии в Университете Ренна во Франции, проводя большую часть времени среди растений. Но одна игра с самого детства захватила его воображение: StarCraft популярная онлайн-стратегия, в которой игроки накапливают ресурсы и создают армии инопланетных бойцов для ведения войн на внеземных территориях. "Игрок из меня никакой, говорит Барбе, но я понимаю, что происходит в игре".


Несколько лет назад, играя в StarCraft II (последнюю версию игры), Барбе понял, что помимо всех взрывов и лазерных ударов в игре происходит что-то ещё. Он обратил внимание, что события в StarCraft развиваются точно так же, как развивается любая экосистема."В игре имеется среда, говорит Барбе. В игре имеются ресурсы и организмы, конкурирующие друг с другом в этой среде. Всё это очень хорошо подходит под определение экосистемы".

На этом идея Барбе пока и ограничилась. Но в 2019 году DeepMind, дочерняя компания Google Alphabet по исследованию ИИ, выставила интеллектуального агента под названием AlphaStar против лучших в мире игроков в StarCraft II. AlphaStar превзошёл в мастерстве 99,8% геймеров-людей, получив заветное звание гроссмейстера высший ранг в игре и дополнив тем самым список побед ИИ над людьми.

После этого Барбе пришло в голову, что способности AlphaStar могут не ограничиваться управлением действиями инопланетян на выдуманной планете. Если StarCraft функционирует подобно экосистеме, возможно, игровые алгоритмы могли бы помочь исследователям в изучении экологических проблем Земли?

В статье, опубликованной в журнале Trends in Ecology and Evolution в 2020 году, Барбе вместе с другими экологами из Реннского университета и Университета Бригама Янга объясняет, как способность AlphaStar управлять сложной многомерной динамикой StarCraft может применяться для проверки идей о динамике развития экосистем в реальном мире с решением этой задачи традиционные модели пока справиться не могут.

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

Алгоритм AlphaStar, говорит Барбе, возможно, непреднамеренно стал самой сложной экологической моделью из всех существующих.

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

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

"Сложность [большинства] экологических моделей ничтожно мала по сравнению со сложностью некоторых систем искусственного интеллекта, утверждает Бен Эббот, эколог из Университета Бригама Янга и соавтор статьи об AlphaStar. То, что умеем мы, экологи, не идёт ни в какое сравнение с тем, что умеют эти алгоритмы.

Как создавался чемпион

Для исследователей ИИ игра StarCraft II, вышедшая в 2010 году, стала сложным интеллектуальным вызовом. Так же как в шахматах или го, игроки StarCraft управляют различными отрядами, чтобы нападать на противников, но здесь игроки тоже выбирают, где и когда собирать ресурсы, когда создавать новые отряды, какие именно отряды создавать и тому подобное, и всё это в окружении множества посторонних факторов. В шахматах в одной позиции у игрока есть выбор из примерно 35 возможных ходов, в игре Go из 200250. Но в StarCraft II возможных ходов в одной позиции 1026. Кроме того, в отличие от игр, называемых теоретиками игр играми с "полной информацией", где все игроки могут видеть полное игровое пространство, события в StarCraft происходят на огромной карте, которую геймеры могут видеть лишь частично.

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

Чтобы натренировать алгоритм AlphaStar и создать ИИ, который способен брать верх над лучшими игроками в StarCraft II, исследователи DeepMind использовали методы машинного обучения. Они начали с того, что создали лигу интеллектуальных агентов, обученных на основе данных сотен тысяч матчей StarCraft, проведённых между людьми. Затем они заставили членов лиги виртуальных агентов играть друг против друга, отобрали самых сильных из них, внесли в них определённые коррективы и отправили обратно в лигу. Они повторяли этот процесс до тех пор, пока не придали AlphaStar силу джаггернаута, крушащего всё на своём пути. Ориол Виньялс, возглавлявший команду DeepMind создателя AlphaStar, сравнил саму лигу с некой экосистемой, в которой работает процесс естественного отбора. "Создавая лигу AlphaStar, мы черпали вдохновение из литературы об эволюции", рассказывает он.

Поведение медленно растущих терранов, одной из трёх инопланетных рас в StarCraft II, в экосистеме игры один в один напоминает поведение кактусов.Поведение медленно растущих терранов, одной из трёх инопланетных рас в StarCraft II, в экосистеме игры один в один напоминает поведение кактусов.

"Традиционные" исследователи ИИ черпали вдохновение в природе, Барбе же и его коллеги-экологи стали черпать вдохновение в игре. В своей работе, опубликованной в 2020 году, они подробно описывают глубокие параллели между расами терранов, протоссов и зергов в StarCraft, и конкурентными стратегиями, характерными для определённых видов организмов.

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

Барбе полагает, что наблюдение за взаимодействием между агентами AlphaStar в StarCraft может стать способом проверки гипотез об экологических и эволюционных процессах, которые обычные статистические модели смоделировать не в состоянии, например предсказать, как небольшое изменение доступных ресурсов в одном углу карты в StarCraft повлияет на поведение отрядов терранов и зергов, сражающихся в противоположном углу (правда, эту свою идею Барбе на практике ещё не проверял).

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

"Возникает весьма интересная игрушечная модель вы наблюдаете за очень упрощённой системой и можете задавать очень конкретные вопросы, говорит Энн Тессен, специалист по работе с данными из Университета штата Орегон, не имеющий отношения к работе по экологическому смыслу StarCraft. Просто нужно помнить, что вы имеете дело с моделью".

Модные технологии

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

"Проблема, на мой взгляд, заключается в том, что игровая механика, призванная быть как можно более развлекательной, лишь частично отражает реальный физический мир", считает Вернер Раммер, эколог из Технического университета Мюнхена. Раммер утверждает, что делать выводы о способностях AlphaStar вне рамок StarCraft, лишь наблюдая за его игрой, какой бы сложной и замысловатой она ни была, преждевременно.

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

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

Однако ИИ в экологии используется всё ещё недостаточно активно, полагает Николя Лекомт, сотрудник Канадской кафедры полярной и бореальной экологии и эколог Университета Монктона в Канаде, который использует инструменты ИИ для классификации звуков арктических птиц и прогнозирования их миграции.

Экологи, как правило, не имеют навыков программирования, необходимых для обучения алгоритмов искусственного интеллекта, объясняет он. С ним соглашается Эббот, добавляя, что сбор достаточного количества данных для обучения алгоритмов непростая задача. Некоторые данные получить довольно легко, например посредством анализа спутниковых снимков, однако сбор других данных может быть сопряжён с большими трудностями, например сбор образцов почвы.

Отчасти эти проблемы объясняются недостаточным финансированием и нехваткой квалифицированных экологов, говорит Эббот. Ведь экология, отмечает он, это не самая "монетизируемая" область науки.

Такие компании, как Blizzard, создавшая StarCraft, ежегодно тратят сотни миллионов долларов на разработку алгоритмов для своих игр, говорит он. У них просто гораздо больше ресурсов, чем у нас. Но мы, конечно же, считаем, что наши проблемы гораздо важнее их проблем". Хоть это и была шутка, но в ней кроется чистая правда, в конце концов, жизнь на Земле это далеко не игра.

Машинное обучение и искусственный интеллект продолжают всё глубже проникать в самые разные сферы знаний, находя для этого всё более неочевидные и нестандартные пути. Если вам интересны новые подходы к машинному и глубокому обучению, разнообразные эксперименты с моделями, а также лежащие в основе моделей алгоритмы, вы можете обратить внимание на курс "Machine Learning и Deep Learning", партнёром которого является компания NVIDIA.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

То что ясно всем

08.11.2020 14:17:04 | Автор: admin

"То что ясно всем, ещё кто-то должен сказать"

Типа эпиграфа, Google/Яндекс автора не сыскали

При построении модели какого-либо объекта её можно свести к представлению чёрного ящика с несколькими параметрами P(i), влияющими на выход T. Для сложного многомерного объекта это могут быть модели его "сечения" в различных плоскостях/смыслах.

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

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

Здесь следует обратить внимание на то, что существуют объекты, для которых стоимость/сложность/длительность получения каждого выходного значения T очень велики. Далее речь пойдёт именно о таких объектах и их моделях.

Процедура задания каждого нового значения параметра в процессе исследования такого объекта уже не может быть тривиальной (равномерный шаг), она высоко затратна, и должна учитывать, по возможности, всю уже имеющуюся информацию о поведении Т. Каждый выбираемый шаг/значение i-го параметра должен учитывать текущую его корреляцию с поведением Т. Это становится возможно, если на каждом шаге строить предварительную модель объекта заново, и это оправдано, учитывая стоимость/сложность/длительность получения каждого нового значения T.

Сформулирую вытекающий из вышесказанного подход к моделированию неизвестного в общем случае объекта (с описанной выше сложностью): сначала по априорным, физическим и/или уже имеющимся исходным данным строится грубая модель с примерно постоянным (крупным или какой есть) шагом по каждому параметру. Затем на каждом новом шаге вычисления/получения Т создаётся/уточняется модель на основе новой информации, и модель уточняется (пересчитывается) с получением каждого нового значения Т. На каждом шаге по текущей модели определяется оптимальный следующий шаг по каждому параметру. Оптимальный в том смысле, что новое значение Т будет приносить максимум новой информации об объекте на данном этапе знания о нём.

Способ определения оптимального следующего шага будет работать тем лучше, чем точнее будут аппроксимированы зависимости Т от каждого параметра в текущей (промежуточной) модели. Здесь встаёт задача (необходимость) распараллеливания вычислительных процессов. Пока идёт относительно длительное вычисление ответа Т, на основании ранее полученной информации об объекте выполняется вспомогательный процесс - построение/уточнение модели и определение следующего набора параметров для нового расчёта. Причём заранее неизвестно сколько времени будет доступно для этих расчётов - столько, сколько идёт вычисление ответа Т. Чем быстрее работает алгоритм генерации точек, на которых производится интерполяция и аппроксимация по имеющимся точкам и точкам, полученным от текущей (промежуточной) модели, тем лучшего качества/точности достигнет алгоритм выбора оптимального следующего шага. Этот алгоритм работает в цикле - сначала грубо определяется новый набор параметров для вычислений, потом, если не прервали, идёт его уточнение и т.д. до завершения определяющего процесса - вычисления ответа Т. Ему (определяющему процессу) передаётся набор/вектор новых параметров для расчёта, а полученная новая точка Т используется в уточнении модели и новой процедуре выбора следующего шага.

Конечно, доля вычислительных затрат на получение набора значений каждого параметра с заданным шагом (именно этот алгоритм является целью обсуждения настоящей статьи, назову его Z, чтобы отличать от других упоминаемых) обычно намного меньше затрат на остальные расчёты по выбору шага для оценки Т. Но предлагаемый к обсуждению алгоритм демонстрирует предельно малые вычислительные затраты и не влечёт недостатков или сложностей. Разумно его использовать во всех подходящих применениях, это почти ничего не стоит.

На примере простейшей функции одного переменного T(X) покажу алгоритм получения значений параметров (X) для последующей аппроксимации. Напоминаю, что тут речь идёт об относительно мало затратных вычислениях по промежуточной модели и оптимизировать расположение точек на интервале допустимых значений параметров нет необходимости, кроме разве краёв диапазона (см. ниже):

Сначала производится расчёт по модели T(X) на 3-х точках: Xmin, (Xmin + Xmax)/2 и Xmax, т.е. по краям и посередине допустимого интервала (Xmin, Xmax). Далее каждый отрезок делится пополам и вычисляются значения в серединах каждого отрезка и т.д. Следующий анимированный GIF демонстрирует процесс генерации первых 14 значений параметров для одномерного случая.

В среднем плотность точек, генерируемых алгоритмом Z, выше на краях диапазона, как и должно быть для лучшей аппроксимации. "В среднем" понимается с учётом того, что весь вспомогательный процесс подбора следующего шага (и работы алгоритма Z) может быть прерван в любой момент, если завершилось получение новой точки Т. Расчёт нового ответа Т начнётся по тому набору/вектору параметров (новый шаг), который к этому времени успел сделать вспомогательный процесс. Результат незаконченной итерации расчёта нового шага или отбрасывается, или таки завершается, если велико соотношение временных затрат на расчёт Т и завершение расчёта текущей итерации прогноза нового шага.

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

Алгоритм Z несложно масштабируется на двумерную (и более) плоскость, демонстрируя даже снижение средних вычислительных затрат на точку для больших размерностей. Для одномерного случая при достаточно большом количестве точек, получаемых на интервале (Xmin, Xmax), вычислительные затраты стремятся к 3/2 операции сложения (или вычитания, считаем их эквивалентными) на точку. Более простыми операциями присвоения и организации циклов пренебрегаем, ибо цикл и так участвует в самой процедуре аппроксимации.

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

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

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

Надеюсь, вселенная меня не остановит. :)

Подробнее..

Маленькими шагами к красивым решениям

16.05.2021 12:20:18 | Автор: admin

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

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

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

Снаружи для пользователя, внутри для команды разработки

Архитектура системы определяет скорость ее развития. Красивая и правильная архитектура вдохновляет работать и помогает команде разработки.

Вдохновляет простое. К простым и красивым решениям не всегда возможно прийти с первого раза. Ошибка тоже результат.

Если система проста и удобна внутри, то она так же проста и удобна снаружи. У пользователей меньше проблем, а значит и у разработчиков тоже.

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

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

Модель

Объектная модель должна быть понятна не только разработчикам, но и пользователям.

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

При реализации объектной модели клиентам рекомендуется ориентироваться на модель сервер-приложения.

Логика

Упрощайте алгоритмы. Делите сложные части на простые. Не переусердствуйте.

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

Если какая-то часть алгоритма многократно повторяется, то скорее всего она должна быть выделена в отдельный модуль и переиспользоваться. Отдельный модуль отдельный алгоритм.

Алгоритм должен легко читаться: в тексте, в любой нотации моделирования, в коде.

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

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

Нейминг решает

Если назвать бокал стаканом, то назначение "пить" вроде бы не меняется, но что-то все-таки не то.

Имя объекта должно характеризовать его достаточно емко, не вызывать двусмысленности.

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

Имена объектов и методов в конечном счете становится языком команды разработки, заказчика ПО и даже пользователей.

MVP и прототипы

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

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

Рефакторинг

Это придется делать. Это нормально и это важно. Даже для задач, выпущенных в продакшн совсем недавно.

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

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

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

Документация

Документация к системе должна дополнять программный код и хранить знания о причинах принятых архитектурных решений.

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

Выводы

Не усложнять.

Ничего не прятать.

Называть все своими именами.

Не стоять на месте.

Не поддаваться отчаянию, если не получилось.

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

Подробнее..

Синхронные двигатели с постоянными магнитами на роторе управление(синус иили трапеция)

03.02.2021 00:17:16 | Автор: admin

В продолжение темы модельно ориетированного проектирования, публикую очередную статью Калачева Юрия Николаевича, автора книги Моделирование в электроприводе. Инструкция по пониманию.Данный текст еще готовится к публикации в специализированных издания, но читатели хабра увидят его первые.

В зарубежной литературе можно встретить два термина, связанных с этими двигателями:

  1. PMSM(PermanentMagnetSynchronousMotor),что на языке Пушкина означает:синхронный двигательcпостоянными магнитами(СДПМ),и это понятно.

  2. BLDC(BrushLessDirectCurrent),что переводится с языка Шекспира,какБесколлекторный(бесщеточный)ДвигательПостоянногоТока(БДПТ),и это непонятно.Причем здесь постоянный ток?

С этими названиями и у нас,и за рубежом существует немалая путаница.

Например,терминPMSM(СДПМ)может применяться для обозначения двигателя с постоянными магнитами на роторе,независимо от формы его ЭДС,на так же часто его применяют,подразумевая исключительно синусоидальную форму ЭДС двигателя.

ТерминBLDC(БДПТ)может применяться для обозначения двигателя с постоянными магнитами на роторе и трапецеидальной ЭДС,а может вообще обозначать не двигатель,а некий мехатронный узел,включающий в себя:

  • двигатель с постоянными магнитами и трапецеидальной ЭДС

  • датчик положения ротора

  • управляемый по сигналам этого датчика полупроводниковый коммутатор.

Собственно этот мехатронный узел,который может,как и двигатель постоянного тока,управляться постоянным напряжением и породил сам терминBLDC(БДПТ).

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

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

Например,в книге Г.Б.ОнищенкоЭлектрические двигателина стр. 47 вентильнымназывается двигатель соответствующий терминуBLDC(БДПТ),что предполагает трапецеидальную ЭДС,и это понимаемо.

Но двигатели типа5ДВМ сам производитель(ЧЭАЗ)называетвентильными,хотя при этом утверждает,что они имеют синусоидальную ЭДС.

А вот википедия: Вентильный двигатель следует отличать от бесколлекторного двигателя постоянного тока(БДПТ),который имеет трапецеидальное распределение магнитного поля в зазоре....

Ну, ...приехали...

Какой термин,какой форме ЭДС соответствуетнепонятно.

А между прочим,именно эта форма определяет выбор структуры системы управления двигателем.

Как человек занимающийся управлением этими двигателями хочу предложить:

  • во избежание путаницы забыть терминвентильный двигатель

  • термином БДПТ обозначать не двигатель,а исключительно описанный выше мехатронный узел(аналог двигателя постоянного тока)

  • делить синхронные двигатели с постоянными магнитами на роторе (СДПМ)по типу ЭДС на две группы:

    1) с синусоидальной ЭДС(далее,для краткости, -СДПМс)

    2) с трапецеидальной ЭДС(далее,для краткости, -СДПМт)

Управление

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

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

Конструкция двигателей

Ротор синхронных двигателей обоих типов устроен одинаково.Он представляют собой магнит с различным количеством пар полюсов.

А вот конструкция статорных обмоток,которая собственно и определяет форму ЭДС,у разных типов различна(см.Рис1.).

Рисунок 1. Конструкции статорных обмотокРисунок 1. Конструкции статорных обмоток

Статорная обмотка двигателя с трапецеидальной ЭДС проще и технологичнее,за счёт этого цена такого двигателя несколько ниже.

Далее остановимся более подробно на двигателе с трапецеидальной ЭДС(СДПМт)

Двигатель с одной парой полюсов будет выглядеть в разрезе так,как показано на Рис.2.

Рисунок 2. Схема двигател с одной парой полюсов я в разрезеРисунок 2. Схема двигател с одной парой полюсов я в разрезе

На статоре СДПМт намотаны три обмотки(А,В,С),сдвинутые в пространстве на120.Каждая обмотка состоит из двух секций,включённых встречно.Таким образом,при протекании тока в обмотке она создаёт внутри двигателя два полюса(положительный и отрицательный),к которым и притягивается магнитный ротор.Поочередное изменение токов в обмотках переключает полюса обмоток и заставляет ротор двигаться вслед за полем.На этом и основан принцип работы двигателя.

В дальнейшем будем считать нулевым то угловое положение ротора\theta_Rпри котором вектор потока ротора совпадает по направлению с осью фазыА(осью обмоткиА).

Уравнения равновесия статорных обмоток СДПМт в системе АВС

Уравнения равновесия статорных обмоток двигателя при его включении взвездув неподвижных фазных координатахАВСимеют вид(1).

\left \{ \begin{gathered} U_{A\Phi} =\frac{d \Psi_А}{dt} + I_AR_{\Phi} \\U_{B\Phi} =\frac{d \Psi_B}{dt} + I_BR_{\Phi} \\U_{C\Phi} =\frac{d \Psi_C}{dt} + I_CR_{\Phi}\ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(1)}

Здесь:

  • U_{A \Phi},U_{B\Phi},U_{C\Phi} -фазные напряжения

  • \Psi_A,\Psi_B,\Psi_c-потокосцепления фазных обмоток

  • I_A,I_B,I_C-токи фаз

  • R_\Phi- активное сопротивление фазной обмотки.

Поток в обмотке каждой фазы формируется из следующих составляющих:

  • поток,наводимый собственным током фазы

  • поток,наводимый магнитными полями других фазных обмоток

  • поток,наводимый в обмотке магнитами ротора.

Проиллюстрируем это системой(2):

\left \{ \begin{gathered} \Psi_{A} = L_AI_A+L_{AB}I_B+L_{AC}I_C +\Psi_{fA}\\ \Psi_{B} = L_BI_B+L_{AB}I_A+L_{BC}I_C+\Psi_{fB} \\ \Psi_{C} = L_CI_C+L_{AC}I_A+L_{BC}I_B+\Psi_{fC} \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(2)}
  • Где:

    L_{A},L_{B},L_{C} -индуктивность фазных обмоток

    L_{AB},L_{BC},L_{AC} -взаимные индуктивности обмоток

    \Psi_{fA},\Psi_{fB},\Psi_{fC}-потокосцепления, наводимые в обмотках магнитом ротора.

В общем случае все индуктивности системы(2)могут являться переменными функциями угла поворота поля_e.

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

Обозначив
L_\Phi - индуктивность фазной обмотки,

L_{\Phi\Phi} -взаимная индуктивность двух фазных обмоток,
и подставив выражения(2)в систему(1),получим выражение(3):

\left \{ \begin{gathered} U_{A\Phi} =L_\Phi\frac{d I_А}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+\frac{d \Psi_{fA}}{dt} + I_AR_{\Phi} \\ U_{B\Phi} =L_\Phi\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+\frac{d \Psi_{fB}}{dt}+ I_BR_{\Phi}\\ U_{C\Phi} =L_\Phi\frac{d I_C}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+\frac{d \Psi_{fC}}{dt}+ I_СR_{\Phi}\ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(3)}

Заметив,что производные по времени от потокосцеплений магнитов ротора

\left(\frac{d \Psi_{fA}}{dt},\frac{d \Psi_{fB}}{dt},\frac{d \Psi_{fС}}{dt}\right) - есть не что иное,как наводимая магнитами

ротора в этих обмотках ЭДС,систему(3)можно переписать в виде(4).

\left \{ \begin{gathered} U_{A\Phi} =L_\Phi\frac{d I_А}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+E_A + I_AR_{\Phi} \\ U_{B\Phi} =L_\Phi\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+E_B+ I_BR_{\Phi}\\ U_{C\Phi} =L_\Phi\frac{d I_C}{dt}+L_{\Phi\Phi}\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+E_C+ I_СR_{\Phi}\ \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(4)}

Теперь введем понятие единичной функции формы ЭДС.

Единичная функция формы ЭДС-это функция от угла поля(_e), имеющая единичную амплитуду и повторяющая по форме ЭДС. Для фазА,В,Собозначим эти функции: обозначим эти функции E_{1A},E_{1B},E_{1C} .

Используя единичные функции формы,мгновенные ЭДС в фазах можно представить выражением(5):

\left \{ \begin{gathered} E_{A} = \psi_f\omega_eE_{1A}=\psi_fZ_p\omega_RE_{1A} \\ E_{B} = \psi_f\omega_eE_{1B}=\psi_fZ_p\omega_RE_{1B} \\ E_{C} = \psi_f\omega_eE_{1C}=\psi_fZ_p\omega_RE_{1C} \end{gathered} \right. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(5)}
  • Где:

    \psi_f-амплитуда потокосцепления ротора и фазной обмотки

    \omega_e- скорость вращения поля

    \omega_R- скорость вращения ротора

    Z_P- число пар полюсов двигателя.

Зависимости единичных функций формы ЭДС обмоток СДПМт от угла поворота поля представлены На Рис.3.

Рис. 3. Единичные функции форм ЭДСРис. 3. Единичные функции форм ЭДС

Вывод формулы для расчета электромагнитного момента БДПТ

Момент,создаваемый двигателем,является суммой моментов,создаваемых его обмотками.

Посмотрим на уравнение равновесия обмоткиАиз системы(4).

 U_{A\Phi} =L_\Phi\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}+E_A + I_AR_{\Phi}

Умножив обе его части на ток обмотки,получим уравнение для мгновенной электрической мощности обмотки:

 P_{A\Phi} =I_A \left( L_\Phi\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}\right ) + I_A^2R_{\Phi}+I_AE_A

Рассмотрим составляющие этой мощности:

  • I_A \left( L_\Phi\frac{d I_A}{dt}+L_{\Phi\Phi}\frac{d I_B}{dt}+L_{\Phi\Phi}\frac{d I_C}{dt}\right)- реактивная мощность обмотки

  • I_A^2R_{\Phi} - активная мощность, рассеивающаясяв обмотке

  • I_AE_A- мощность,создающая электромагнитный момент.

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

I_AE_A + I_BE_B+I_CE_C = M_{em}\omega_R \Rightarrow M_{em} =\frac{I_AE_A + I_BE_B+I_CE_C}{\omega_R} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(6)}
  • Где:

    M_{em}- электромагнитный момент двигателя

    \omega_R - угловая скорость вращения ротора.

Подставив в формулу(6)значения ЭДС из соотношений(5),получим формулу вычисления электромагнитного момента ротора(7).

M_{em} =\psi_fZ_p \left(I_AE_{1A} + I_BE_{1B}+I_CE_{1C}\right) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(7)}

Коммутация обмоток СДПМт

В соответствии с формулой(7)момент СДПМт пропорционален сумме произведений фазных токов на функции формы соответствующих ЭДС.

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

Для примера рассмотрим на Рис.3участок угловой траектории от /6до /2.На этом участке ЭДС в фазеАимеет максимально отрицательное значение,а в фазеВмаксимально положительное.Следовательно,для получения положительного момента на этом участке угловой траектории надо обеспечить в фазеАотрицательное,а в фазеВположительное значение тока.Для этого фазуАможно подключить на отрицательный,а фазуВна положительный полюса внешнего источника постоянного напряжения(Udc).При этом фазаСне используется(отключена от источникаUdc).

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

Если рассуждать таким образом,то можно составить таблицу коммутаций обмоток,обеспечивающих в зависимости от положения ротора момент нужного знака(Табл. 1).

Таблица1. Закон коммутацииТаблица1. Закон коммутации

Обмотки трёхфазного двигателя можно коммутировать на внешний источник напряжения с помощью трехфазного мостового инвертора.Для этого состояние инвертора надо поставить в зависимость от положения ротора.Обычно это делается с помощью датчика положения ротора(ДПР).Этот датчик имеет три канала.Каждый канал выдает за один оборот двигателя импульс,соответствующий половине периода вращения,при этом импульсы в каналах сдвинуты на120.

Логическая обработка сигналов ДПР позволяет определить-в каком из шести секторов в данный момент находится ротор.

Работа ДПР поясняется Табл. 2.

Таблица 2. Работа ДПР (определение сектора)Таблица 2. Работа ДПР (определение сектора)

Возможная структура системы управления моментом БДПТ

ОпределяющАлгоритм,описанный в Табл.1,предполагает протекание одного и того же тока в двух фазах двигателя при единичном значении функции формы ЭДС в обмотках фаз.Поэтому выражение(7)можно переписать в виде(8).

M_{em} =2 \cdot Z_p\psi_fI_\Phi \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mathbf{(8)}

Где: I_\Phi - значение тока в фазах.

То есть значение момента пропорционально величине тока в обмотках двигателя.

Вытекающая из формулы(8)структура системы управления моментом в приводе с СДПМт изображена на Рис.4.

Рисунок 4. Система управления моментом БДПТРисунок 4. Система управления моментом БДПТ

Данная структура позволяет получить нужный момент,формируя в обмотках двигателя ток необходимой амплитуды,при сохранении алгоритма коммутации(Табл.1).

Эта задача решается с помощью создания на базе трёхфазного мостового инвертора контура тока с ШИМ.

Регулятор тока(ПИ-рег.)формирует сигнал задания напряжения обмоток(U),которое затем реализуется инвертором с ШИМ в соответствии с алгоритмом коммутации(Табл.1).

В качестве сигнала обратной связи в контуре можно использовать трёхфазно-выпрямленные сигналы датчиков тока фаз или сигнал датчика тока в звене постоянного тока инвертора(I_{fb}).

На основе рассмотренного канала управления моментом можно строить внешние контуры управления скоростью и положением.

Однако

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

Кроме этих коммутационных пульсаций в рассматриваемой системе также будут иметь место пульсации момента на частоте ШИМ.

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

Часть модели,а именно-модель цифровой системы управления скоростью приведена ниже,на Рис.5.Регулятор скорости системы(Рег.W)выдает сигнал момента,который отрабатывается структурой,построенной в соответствии с Рис.4.

Рисунок 5. Модель цифровой системы управленияРисунок 5. Модель цифровой системы управления

Для управления был выбран двигатель со следующими параметрами:

  • Rs = 2.875Ом-сопротивление обмотки фазы;

    Ls = 8.5e-3Гниндуктивность фазы;

    F = 0.175Вбпотокосцепление ротора;

    Zp = 4-число пар полюсов;

    Jr = 0.06 нм- момент инерции ротора.

Напряжение в звене постоянного тока привода было принято равным100В.

В контуре тока электропривода использовалась ШИМ с частотой5кГц.

В процессе регулирования происходило ступенчатое увеличение частоты при постоянном моменте сопротивления на валу двигателя(10Нм).

Графики,полученные в процессе работы модели,приведены на Рис.6.

Рисунок 6. Моделирование работы двигателяРисунок 6. Моделирование работы двигателя

На графике момента видны существенные пульсации.

Отметим,что в основном они связаны именно с переходными процессами при коммутации обмоток и имеют соответственно частоту,ушестеренную по отношению к заданной.

Пульсации,связанные с ШИМ,в данном случае,невелики.

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

Несколько спасает то,что их влияние на скорость снижает инерция.

А можно ли векторно управлять СДПМт?

Если очень хочется-то можно.
Однако и здесь не без особенностей.
Математика и структура стандартной векторной системы управления исходит из синусоидальности поля в зазоре.При трапецеидальной ЭДС это условие нарушается,правда не очень сильно(трапеция это же почти синус).

А результатом этогопочтибудут,опять же,пульсации момента.

Вид части модели относящейся к цифровой системе векторного управления в средеSimInTechпоказан на Рис.7.

Рисунок 7. Часть модели векторного управления.Рисунок 7. Часть модели векторного управления.

Ниже на Рис.8показан график работы модели уже рассмотренного ранее СДПМт работающего в рассмотренном ранее режиме,но под управлением векторной системы.

В графике момента мы опять наблюдаем пульсации(хотя по сравнению с предыдущим вариантом они несколько уменьшились).

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

Заметим,что вследствие несинусоидальности ЭДС токи в обмотках двигателя так же будут принципиально несинусоидальными(это так,хотя в масштабе рисунка и не слишком заметно).

Рисунок 8. Работа двигателя при векторном управленииРисунок 8. Работа двигателя при векторном управлении

А можно ли с помощью коммутации обмоток по ДПР управлять двигателем с синусоидальной ЭДС?

С точки зрения автора можноно не нужно.

Наряду с коммутационными пульсациями момента синусоидальность ЭДС(отсутствие плоской вершины трапеции)в данном случае неминуемо вызовет еще и дополнительные пульсации,снижающие качество регулирования даже по сравнению с управляемым по ДПР двигателем СДПМт.

А при векторном управлении двигателем с синусоидальной ЭДС пульсаций момента не будет.

Для подтверждения этого тезиса ниже(Рис.9)приведены графики работы модели двигателя с уже рассмотренными ранее параметрами,но с синусоидальной ЭДС и векторной системой управления скоростью.

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

Рисунок 8. Работа двигателя с синусоидальной ЭДСРисунок 8. Работа двигателя с синусоидальной ЭДС

Итоги

Для синхронников с страпецеидальной ЭДС-коммутация по ДПР.

Так же возможно использование и более сложного векторного алгоритма регулирования,что может дать снижение уровня пульсации момента.

Для синхронников с синусоидальной ЭДСлучший вариант это векторное регулирование.

Это сочетание идеально для построения точного электропривода(что собственно и так было понятно).

Калачёв Ю.Н.

Модели для самостоятельного изучения можно взять здесь.

Предыдущие статьи по теме:

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

Модельно ориентированное проектирование. Построение активного выпрямителя (на основе математической модели)

Список литературы

[1]А.С.ПушкинПолтава.

Подробнее..

Пример модели знаний о требованиях

01.03.2021 12:17:20 | Автор: admin

Зачем нужна модель знаний

За уже несколько десятков лет существования индустрии информационных технологий создана значительная теоретическая база. Множеством ассоциаций и организаций разработаны своды знаний и методологии в различных областях.

Вот некоторые из них:

  • BABOK (A Guide to the Business Analysis Body of Knowledge) - руководство к своду знаний по бизнес-анализу от Международного института IIBA (International Institute of Business Analysis)

  • SWEBOK (Software Engineering Body of Knowledge) - международный стандарт ISO/IEC TR 19759 от 2015 г., в котором описана общепринятая сумма знаний о программной инженерии

  • SEBOK (Systems Engineering Body of Knowledge) - свод знаний в области системной инженерии, разработанный организацией BKCASE, которая контролируется Управляющим советом, состоящим из трех ассоциаций (т.е. Международного совета по системной инженерии, Центра исследований системной инженерии и Компьютерного общества IEEE)

  • BPM CBOK (Guide to the Business Process Management Body of Knowledge) - свод знаний по управлению бизнес-процессами Ассоциации профессионалов управления бизнес-процессами (ABPMP)

  • PMBOK (Project Management Body Of Knowledge) - свод профессиональных знаний по управлению проектами института управления проектами PMI

  • сертификация IREB CPRE (certification in Requirements Engineering) Foundation Level - методология инженерии требований сообщества IREB.

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

На текущий момент существует множество способов представления знаний: семантические сети, фреймы, языки и нотации и др. (Википедия).

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

  • извлечь существенные понятия о концепциях, описанных в своде знаний

  • получить структурированное системное представление о связях между концепциями

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

Что должна включать модель знаний

Cводы знаний и методологии инженерии требований и системного анализа описывают процессы, техники и подходы, применяемые в проектировании и создании информационных систем.

А раз это процессы, то классический подход к такой модели - ответить на основные вопросы:

  • кто? - какие действующие лица с какими наборами компетенций выполняют активности в процессах

  • как? - какие активности, техники и события включают в себя процессы, в какой последовательности выполняются; кроме описания самих активностей важно отразить:

    • ключевые принципы, на которых базируются активности

    • ключевые свойства и аспекты активностей

    • основные ограничения

    • определения и факты, связанные с процессами

  • что? - какие поставляемые результаты и прочие сущности являются результатом активностей или поступают на вход активностей

  • зачем? - какую ценность вносят активности и процессы в общий процесс инженерии требований и системного анализа.

Кроме того, между концептами системы важно отразить связи:

  • структурные - отношение к группе, связь части и общего

  • зависимости - влияние концептов друг на друга или операции, связывающие концепты друг с другом

  • динамические - обозначить последовательность выполнения, направление потока информации

  • обобщение и специализация - связь между абстрактным и конкретным представлением одного концепта, отразить наследование.

Archimate для представления знаний

Для практической реализации модели потребуется простой и удобный в использовании инструмент, который смог бы визуально (в графической форме) представить выявленные концепции, определения и связи.

Далее описана попытка представить методологию инженерии требований сообщества IREB в виде модели знаний в нотации ArchiMate.

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

Некоторые примеры описания модели знаний элементами нотации Archimate:

1. Активности, группы активностей и связи между ними

Цель описания: ответить на вопрос Как? - описать последовательность и структуру выполняемых в процессе активностей, а так же применяемые техники.

С помощью элемента слоя реализации Пакет работ (Work Package) можно отразить активности и техники используемые в процессах.

Связь Композиция (Composition) отражает то, что одна активность является частью более крупной группы активностей. Связь Триггер (Triggering) позволяет отобразить последовательность выполнения активностей.

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

Элемент Ценность (Value) позволяет указать ценность или преимущества использования активности в общем процессе и ответить на вопрос модели Зачем?.

2. Результаты активностей

Цель описания: ответить на вопрос Что? - описать основные ключевые результаты активностей и процессов, информационные потоки.

Результаты активностей описываются элементом Поставляемые результаты (Deliverable).

С помощью связи Реализация (Realization) отражается - какая активность создает поставляемые результаты. Связь Доступ (Access) позволяет показать чтение или запись информации из/в поставляемые результаты. Связь Поток отражает факт передачи информации (без конкретизации сущностей) между активностями или событиям.

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

3. Свойства активностей

Цель описания: отразить основные принципы, свойства, ограничения и аспекты активностей, а так же определения, связанные с ними.

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

С помощью элемента Требование (Requirement) описываются свойства или аспекты, связанные с активностью или поставляемыми результатами процесса. Элемент Принцип (Principle) позволяет описать ключевые принципы, связанные с активностью. Элемент Понятие (Meaning) можно использовать для описания ключевых понятий и определений.

С помощью связи Ассоциация (Association) описанные артефакты связываются с активностями и поставляемыми результатами.

Например, процесс инженерии требований имеет Ключевые аспекты процесса RE (декомпозируются в отдельном представлении) и основывается на девяти ключевых принципах. Принцип 4. Контекст связан с концептом Контекст (само определение дано в описании элемента).

Факторы, каким то образом ограничивающие пространство свойств или оказывающие влияние на свойство отражаются элементом Ограничение (Constraint), а само влияние отражается связью Влияние (Influence).

4. Взаимосвязи между активностями и выполняющими их сущностями: роль или актор являются ответственными или выполняют некоторые активности

Цель описания: ответить на вопрос Кто? - описать наборы компетенций и основных действующих лиц, участвующих в процессах.

Элемент Роль (Business Role) позволяет отразить набор компетенций или зону ответственности, связанных с активностью. Элемент Актор (Business Actor) представляет бизнес-сущность, выполняющую активность. Это может быть как конкретное лицо, так и структурные единицы, например, подразделения.

С помощью связи Назначение (Assignment) устанавливается связь между соответствующим активным элементом и активностью, им выполняемой.

Например, Заинтересованные стороны формируют Потребность в изменениях, запускающую процесс инженерии требований, который выполняет роль Инженер по требованиям, обладающая некоторым набором компетенций (указаны в описании).

5. Структурные связи между сущностями. Обобщение и специализация

С помощью связи Агрегация (Aggregation) однотипные элементы могут быть объединены в группы, организованные в сложные иерархии. На схеме элементы могут отражаться как отдельные элементы, связанные между собой, так и располагаться в границах родительского элемента. Например, в группу ключевых аспектов процесса инженерии требований входит аспект Требование и время, который, в свою очередь, включает аспект Спецификация, ориентированная на риск.

С использованием связи Композиция (Composition) отображаются случаи, когда один элемент является неотъемлемой частью другого (не может существовать без него). Например, активность по обучению пользователей является частью процесса выбора CASE-инструмента.

Отразить связь между абстрактным концептом и его конкретными реализациям позволяет связь Специализация (Specialization). Например, к концепту Модель относятся модели системного контекста, которые в свою очередь могут быть реализованы как DFD-диаграммы или UML-варианты использования.

6. Что еще может Archi

К каждому элементу может быть составлено описание или дано текстовое уточнение.

В состав ArchiMate входит инструмент для просмотра всех связей выбранного элемента. Глубина связей может настраиваться.

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

Заключение

Методология инженерии требований сообщества IREB описана моделью представления знаний в формате ArchiMate. Результат здесь:

Что удалось:

  • в графической форме представить знания об инженерии требований

  • выделить основные концепции, связи между ними и зафиксировать описание ключевых определений

  • реализовать простой и удобный доступ к модели в интернете.

Какие остались вопросы:

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

  • область применения модели - достаточность для описания других областей знаний системного анализа

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

Подробнее..

Перевод Язык моделирования Alloy и приключения с параллельными запросами к базе данных

10.03.2021 16:14:14 | Автор: admin

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



О качестве программного обеспечения и инструментарии


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


  1. Анализ и создание спецификаций
  2. Устранение простых ошибок с использованием системы типов Haskell
  3. Стандартные юнит-тесты и интеграционные тесты
  4. Непрерывная интеграция
  5. Обязательные ревью кода
  6. Тестирование на стендах, проводимое QA инженерами
    (мы используем Octopod для оптимизации процесса разработки и QA)
  7. Тестирование в pre-production среде
  8. Ведение логов и контроль ошибок на этапе эксплуатации

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


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


Чем дальше вы продвигаетесь по цепочке, тем длиннее становятся эти перерывы и тем больше ресурсов уходит на исправление ошибок: чтобы достигнуть этапа QA-тестирования могут потребоваться дни, после чего инженер-тестировщик еще должен будет заняться вашей задачей. А если на этом этапе будет обнаружена ошибка, то не только тестировщикам придется снова провести тесты после исправления ошибки, но и разработчики опять должны будут пройти все предыдущие стадии!


Итак, каков самый ранний этап, на котором мы можем выявить ошибки? Удивительно, но мы можем существенно повысить шансы на выявление ошибок ещё до того, как будет написана первая строка кода!


Alloy выходит на сцену


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


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


Давайте приведем пример. Недавно у нас возникла неприятная проблема со следующим куском кода:


newAuthCode  :: (MonadWhatever m)  => DB.Client  -> DB.SessionId  -> m DB.AuthorizationCodenewAuthCode clid sid = do  let codeData = mkAuthCodeFor clid sid  void $ DB.deleteAllCodes clid sid  void $ DB.insertAuthCode codeData  return code

Здесь реализовывался обработчик HTTP-запроса и предполагалось, что функция будет обращаться к базе данных, удалять все существующие коды авторизации пользователя и записывать новый. По большому счету, код именно это и делал. Однако он также медленно заполнял наши логи сообщениями нарушение требования уникальности (uniqueness constraint violation).


Как это получилось?


Моделирование


Проблема, указанная выше, представляет собой хороший пример задачи для Alloy. Давайте попробуем представить ее, построив модель. Обычно мы начинаем моделирование конкретной проблемы с описания нашего представления об операциях newAuthCode для Alloy. Иными словами, необходимо сначала построить модель операций, затем дополнить ее, построив модель базы данных и привязав поведение базы данных к операциям.


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


Процесс, описанный в приведенном фрагменте кода, имеет две интересующие нас части. Он производит удаление в некоторый момент времени, а затем вставляет новый токен в другой момент времени. Вот одна из моделей Alloy, используемая для описания этого поведения:


open util/time  // Импортируем предопределённые объекты Timesig Operation       // У нас есть операции...  { delete : Time   // ...которые удаляют в какой-то момент времени  , insert : Time   // ...и производят вставку в какой-то другой  }  { lt[delete,insert]  // Удаления происходят до вставок    lt[first,delete]   // По техническим причинам в первый                        // момент времени ничего не происходит  }  run {some Operation} for 4 // Показать произвольный пример модели                             // с <= 4 операциями

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


Если вы хотите проследить этот процесс, скачайте alloy и скопируйте в него приведенный выше фрагмент кода. Затем нажмите 'execute' и 'show', чтобы получить модель следующего вида:



Чтобы Alloy показал другие модели, можно нажать 'next'.


Вот один из таких случайных экземпляров, представленный в виде таблицы отношений (нужно несколько раз нажать 'next и выбрать вид 'Table'):


this/OperationdeleteinsertOperation    Time Time   Operation удаляет в момент Time и   вставляет в момент TimeOperation    Time Time   Operation удаляет в момент Time и   и вставляет в момент Time                                                 ОЙ!

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


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


Проблема найдена!


Давайте её исправим!


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


code <- run $ do  handleJust constraintViolation    (launchPG $ selectCodeForSession clid scope sid    (launchPG . pgWithTransaction $ newAuthCode clid scope sid)

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


Будет ли это работать сейчас?


Давайте быстро построим модель Alloy для нашего исправления, чтобы проверить его корректность:


open util/time // Импортируем Timesig Token {} // Объекты с названием Tokenone sig DBState // База данных с токенами {userToken : Token lone -> Time}    // В БД не более одного токена в каждый момент врвмени    // (т.к. ограничения БД не позволяют хранить больше одного)sig Operation {   delete : Time , insert : Time , select : Time // Наши операции теперь могут выполнять select}{  lt[first,delete]   // Ничего не происходит в первый момент времени                     // по техническим причинам  lt[delete,insert]  // Первой выполняется операция delete  lte[insert,select] // select выполняется после или во время insert'а  no userToken.(insert.prev) // Если вставка сработала (т.е. таблица  => insert = select         // была пустой во время выполнения),                             // получаем значение в тот же самый                              // момент времени (т.е. у нас запрос                             // 'INSERT RETURNING').                             // В противном случае вызываем обработчик                             // исключения, и select выполняется чуть позже}

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


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


fact Trace {                           // Факт Trace описывает поведение системы all t : Time - first | {              // на всех шагах, кроме первого:   some delete.t => no userToken.t       // Если происходит удаление, таблица пуста   some insert.t => some userToken.t     // Если происходит вставка, таблица не пуста   no delete.t and no insert.t           // Если не происходит ни вставок, ни удалений,    => userToken.t = userToken.(t.prev)  // таблица не меняется  }}

То есть мы описываем, как состояние базы данных изменяется в зависимости от некоторых происходящих событий.


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


Давайте примем это за утверждение и попросим Alloy проверить его.


assert selectIsGood {         // То, что мы хотим проверить all s : Operation.select |   // Всегда, когда выполняется select,  some userToken.s            // в базе присутствуем токен}check selectIsGood for 6 // Проверить, что selectIsGood всегда истинно

К сожалению, запуск этой проверки дает нам следующий контрпример:


DBState userToken   DBStateTokenTime                 Token находится в БД в моменты Time и Time              Time                TokenTime   Token в БД в момент Time.                                    Токены есть в таблице только                 моменты Time, Time и Time                 Заменит, что в момент                 Time токенов нет!Operation     deleteinsertselectOperation     TIME Time TimeOperation     Time Time TIME    Таблица пуста в момент Time и     select не работает для Operation!Operation     Time Time Time                                               Это моменты времени, когда                происходят соответствующие действия

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


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


Параллельная обработка легко не дается.


Мои выводы


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


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


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


Где взять Alloy?


Для тех, кто заинтересовался, ниже мы приводим несколько ссылок, чтобы начать работу с Alloy:





P.S. Правильное решение этой проблемы заключается в том, чтобы использовать сериализуемые транзакции и не возиться с параллельной обработкой.

Подробнее..

Дайджест Университета ИТМО системы ИИ, нейросети, анализ данных и МО обсуждаем личный опыт

06.09.2020 12:06:19 | Автор: admin
Это подборка текстовых материалов и тематических подкастов с участием представителей Университета ИТМО студентов, аспирантов, научных сотрудников и преподавателей. Мы делимся личным опытом разработки проектов различного уровня и возможностями для развития.


Скриншот демо-уровня Shadow Samurai TAU Tracker Demo (CES 2019)

Что ждет начинающих ученых в сфере машинного обучения. Андрей Фильченков, к.ф.-м.н., доцент факультета Информационных технологий и программирования и руководитель группы машинного обучения международной научной лаборатории Компьютерные технологии рассказывает, что он с коллегами делал для канала ТВЦ и соц.сети Vk, делится инсайтами о подготовке публикаций и анализе работ коллег по цеху, а еще базовых пререквизитах для старта в сфере машинного обучения. Интервью мы опубликовали в формате подкаста и текстового транскрипта на Хабре.

Мы не стали ждать инвестиций, а начали обеспечивать себя сами. Так поступила компания Statanly Technologies, специализирующихся на решениях в области МО и системах ИИ. Коллектив проекта включает сразу нескольких представителей университета. Редакция ITMO.NEWS взяла интервью у Сергея Федорова, ген.директора фирмы. Он рассказал, чем занимается команда и какие задачи перед собой ставит. Эксперты Statanly Technologies поучаствовали сразу в нескольких программах акселерации, и в этом интервью Сергей поделился промежуточными результатами.

Как определиться со стажировкой. Наши студенты рассказывают, как они подошли к работе в одной из крупнейших IT-компаний сотрудничеству с Huawei, которая помогает развивать технологические стартапы и постепенно расширяет научную кооперацию с университетом. Личным опытом делятся два студента факультета ИТ и программирования, плюс студентка магистратуры Art&Science.


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

VK Hackathon: бить по мячу, как легенды футбола. Наши студенты взяли гран-при этого мероприятия в прошлом году, а еще получили денежный приз и познакомились с потенциальными партнерами. Приложение победителей помогает сравнивать видеозаписи собственных тренировок с тем, как подходят к работе с мячом профессиональные футболисты. Две нейросети анализируют пользовательские видео и соотносят их с эталонным роликом по положению тела (12 точек), вектору движения и траектории полета мяча. В рамках хакатона ребята показали работоспособный прототип, пообщались с коллегами из Sports.ru и наметили планы по дальнейшему развитию проекта.

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


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

Возможности агентного поведенческого моделирования на практике проекты Университета ИТМО. Андрей Карсаков, к.т.н., старший научный сотрудник Национального центра когнитивных разработок, доцент Факультета цифровых трансформаций, рассказал об агентном моделировании на примере проекта реконструкции Конюшенного двора в Петербурге и вокзала Олимпийский парк в Адлере. Помимо этой пары кейсов он поделился комментариями относительно исторической реконструкции процесса развития и застройки Кронштадта в XVIII или XIX веках.

Игра Shadow Samurai: от симулятора бога до перспектив в медицине и автопроме. Андрей Карсаков рассказывает о продуктах TAU Tracker для отслеживания объектов реального мира и захвата движений. Он делится и подробностями о самой игре механике взаимодействия с виртуальным сеттингом, промежуточных достижениях и сложностях, с которыми сталкивалась команда.


В играх невозможно быть просто программистом. Андрей Симонов и Александр Гутриц первые выпускники магистерской программы Технологии и разработки компьютерных игр, о которой Андрей Карсаков рассказывал в нашем подкасте, поделились личным опытом и своими впечатлениями от учебного процесса и старта практической деятельности в гейм-индустрии.



Что еще у нас есть на Хабре:



Подробнее..

Запрограммировано ли старение? Разбираем доказательства

22.02.2021 20:07:34 | Автор: admin

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

"Ничто в биологии не имеет смысла, кроме как в свете эволюции"

Добржанский Феодосий Григорьевич

Для того, чтобы всерьез воспринимать гипотезу о наличии у абсолютного большинства видов некоей генетической программы старения нужны веские основания. Каким образом эволюция привела к тому, что гипотетическая генетическая программа закрепилась (далее просто Программа), какие преимущества она дает? Какую пользу старение может приносить отдельной особи никто так и не придумал, поэтому вся аргументация сторонников Программы сводится к групповому отбору. Групповой отбор - штука спорная, но давайте сделаем вид, что он существует и обратимся к работе Джоша Миттельдорфа, который является одним из сторонников Программы с довольно серьезным научным бэкграундом. Эта работа хороша тем, что она не заявляет голословно, что программа старения полезна для группы организмов, Миттельдорф приводит результаты симуляции, используя хорошо известную и проверенную модель популяционной динамики Лотки-Вольтерры. Давайте посмотрим на динамику численности популяций хищников и их добычи ("не-хищников") в разных сценариях (без старения и когда стареют жертвы):

Моделирование численности популяций нестареющих хищников и жертв.Моделирование численности популяций нестареющих хищников и жертв.

Когда старения нет минимальная и максимальная численность обоих видов разнится на два порядка и довольно долгое время численность популяции находится возле нуля: малейшая флуктуация - и оба вида исчезнут! А теперь взглянем на результаты симуляции, где присутствует старение "не-хищников" и старые особи представляют более легкую добычу:

Моделирование численности популяций хищников и стареющих жертв.Моделирование численности популяций хищников и стареющих жертв.

Мы видим, что в этой симуляции динамика существенно стабилизировалась и есть даже некий намек на сходимость - колебания уменьшаются со временем. Это ли не лучшее доказательство наличия Программы!? Прежде чем ответить на этот вопрос, давайте изучим матчасть. А именно модель Лотки-Вольтерры, которую (с небольшими модификациями) использовал Джош Миттельдорф.

Модель Лотки-Вольтерры

"В сущности, все модели неправильны, но некоторые полезны"

Джордж Бокс

В 1925 году Лотка (и независимо от него в 1926 году Вольтерра) предложил модель взаимодействия двух видов типа хищник жертва, которая с успехом применяется и сейчас во многих задачах. Модель представляют собой простую систему дифференциальных уравнений и во многом похожа на ставшую печально известной в последнее время эпидемиологическую модель SIR (про которую можно почитать, например, тут).

\frac{dx}{dt} = \alpha x - \beta xy \frac{dy}{dt} = \delta xy - \gamma y
  • x численность жертв (травоядных);

  • y численность хищников;

  • скорость роста популяции жертв;

  • вероятность того, что жертва будет съедена хищником при контакте;

  • 1/ имеет смысл среднего времени до голодной смерти хищника;

  • вероятность того, что хищнику хватит еды на дальнейшее размножение.

Оставим пока хищников в покое и рассмотрим уравнение для жертв. Как будет выглядеть динамика их численности при условии, что все хищники куда-то внезапно исчезли (y=0)?

А вот как:

\frac{dx}{dt} = \alpha x => x(t) = Сe^{\alpha t}

То есть численность "не-хищников" по этой модели растет по экспоненте! И действительно, модель Лотки-Вольтерры предполагает что в распоряжении жертв неограниченные ресурсы (например, пища). Однако в реальности все совсем не так.

Логистическая модель роста

Вот как, например, выглядит рост численности популяции инфузорий туфелек (Paramecium):

Совершенно непохоже на экспоненциальный рост, не так ли? Современная наука давно объяснила почему так происходит и разработала простую математическую модель, которая точно описывает кривые роста бактерий, дрожжей, инфузорий и даже млекопитающих. И эта модель - рост по логистической кривой (эта кривая изображена черным на рисунке слева). Логистическая модель основана на факте наличия у среды определенной емкости - того максимального количества особей данного вида, которое среда может вместить и прокормить. Наличие такого предела приводит к тому, что скорость роста популяции замедляется по мере приближения к пределу, а при его достижении рост вообще прекращается.

Чем же обусловлено такое замедление? Существуют, как минимум, две группы факторов: механистические и адаптивные (генетические).

  • К механистическим можно, например, отнести недостаток пространства для размножения. Возьмем, к примеру, паразитическую осу, обитающую в Центральной Америке, которая откладывает яйца (см. рисунок снизу) только на спинках гусениц определенного вида. Очевидно, что максимальный прирост популяции равен количеству гусениц помноженному на количество яиц, которое можно разместить на гусенице. Таким образом ограничивается бесконечный экспоненциальный рост в данном случае. Такая же логика применима и к другим животным: например, существует предел того, сколько гнезд чайки могут разместить в ареале своего обитания, или предел подходящих мест для нереста лососей. Другим чисто механистическим препятствием является голод: если не хватает пищи, то даже если места полно, потомство либо вовсе не родится, либо умрет, не успев продолжить род.

  • Ко второй группе факторов можно отнести генетические адаптации: у мышей, например, в гипоталамусе обнаружили специальные нейроны, которые "отключают" репродуктивную функцию. Скорее всего, такие нейроны есть и у людей, потому что при экстремальной потере жировой массы женщины временно теряют фертильность. Снижение фертильности при голодании наблюдается и у более простых организмов [еще].

Подробнее про логистическую функцию

Логистическая функция является решением следующего дифференциального уравнения:

\frac{dx}{dt} = \frac{(T - x) x}{T}

Давайте поймем в чем физический смысл этого уравнения. Пусть x(t) - это функция роста численности некоей популяции от времени, тогда dx/dt - это скорость роста популяции. Понятно, что скорость роста зависит от того, сколько уже особей существует (просто потому что количество детей зависит от количества родителей). Но еще она зависит от множителя (T - x), где T - это некий предел численности популяции, который может обеспечить среда. Когда x = T, то dx/dt = 0, то скорость роста популяции нулевая независимо от того сколько уже особей есть на данный момент). Когда T намного больше x, то функция похожа на экспоненту, но по мере приближения x к T функция становится все более пологой. Это, кстати, похоже на динамику эпидемий и, действительно, рост числа новых случаев COVID-19 неплохо описывается таким простым дифференциальным уравнением. А все почему? Да потому что даже без ограничительных мер вследствие иммунитета (или смерти) у вируса остается все меньше свободных переносчиков для распространения и поэтому скорость распространения падает.

Давайте попробуем решить это уравнение:

T \int \frac{dx}{(T - x)x} = \int dtT \int \frac{dx}{(T - x)x} = \int (\frac{1}{T - x} + \frac{1}{x}) = -ln|T - x| + ln|x| + C_1ln| \frac{x}{T - x}| = t + C_2 => \frac{x}{T - x} = e^{t+C_2} => x = Ce^t(T - x)

Если мы будем рассматривать только значения x(t) >= 0, то можно избавиться от модуля и после несложных алгебраических манипуляций получим:

x = Ce^t(T - x) => x(1 + Ce^t) = CTe^t => x(t) = \frac{CTe^t}{1 + Ce^t} = \frac{CT}{e^{-t}+C}

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

Итак, чтобы учитывать логистический рост популяции "не-хищников", я переписал первое уравнение Лотки-Вольтерры в следующем виде:

\frac{dx}{dt} = \alpha (1 - \frac{x}{T})x - \beta xy

И вот какую динамику популяций мне удалось получить:

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

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

Но в итоге эти виды, когда это преимущество уже закреплялось в генах достаточно большого количества особей, вымирали из-за голода, вызванного перенаселением, от которого такой вид страдал хотя бы один раз в течение миллионов лет эволюции. А избежали вымирания только те виды, в которых групповой отбор закрепил достаточное количество дублирующих механизмов старения, и те, которые научились пережидать голодные времена в виде спор или затаившихся яиц как нестареющая гидра. http://personeltest.ru/aways/habr.com/ru/post/405101/

Но спасает ли старение от перенаселения? Давайте рассмотрим простейший пример: пусть у нас есть бактерия, которая умирает от старения через 2 деления. Похожим образом стареют пекарские дрожжи Saccharomyces cerevisiae: от материнской клетки отпочковывается дочерняя клетка, которой достаются самые хорошие органеллы, а все плохие органеллы и клеточный мусор остаются в материнской клетке, которая через несколько десятков таких делений умирает. У дрожжей есть еще хронологическое старение, но это отдельная история.

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

  1. 1 бактерия

  2. 2 бактерии

  3. 4 бактерии - 1 умершая от старости = 3

  4. 6 бактерий - 1 умершая от старости = 5

  5. 10 бактерий - 2 умерших от старости = 8

  6. 16 бактерий - 3 умерших от старости = 13

  7. ...

Светлые кружочки - молодые бактерии, наполовину черные - старые, полностью черные - мертвыеСветлые кружочки - молодые бактерии, наполовину черные - старые, полностью черные - мертвые

1 2 3 5 8 13... Да это же последовательность чисел Фибоначчи (каждое число равно сумме двух предыдущих)! Но это в свою очередь означает, что старение никак не ограничивает экспоненциальный рост популяции, потому что последовательность Фибоначчи растет по экспоненте. Поэтому эволюция никак не могла прийти к программе старения с этой целью, но она вполне могла прийти к механизмам ограничения размножения, что ученые и обнаружили у мышей.

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

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

Подытожим:

  1. Гипотетическая программа старения вредит индивидуальному отбору и НЕ дает никаких ощутимых преимуществ при групповом отборе (который до сих пор не является общепризнанным).

  2. Гипотеза запрограммированного старения нарушает принцип бритвы Оккама: постулируется новая сущность без надобности (см. пункт 1).

  3. До сих пор не найдено ни намека на генетическую программу старения у млекопитающих хотя другие генетические программы давно найдены (например, вышеупомянутая программа отключения фертильности)

  4. Самое главное: не существует примеров взломов "программы старения" внутри одного вида. Если есть программа, значит, чисто статистически должны быть особи, у которых она ломается со временем. Например, у каждой клеточки нашего организма есть программа самоубийства (апоптоза), но она с завидной регулярностью ломается, что служит одним из механизмов патогенеза онкологических заболеваний. Где среди 7 миллиардов людей нестареющие мутанты с отключенной программой старения!? Ведь ожидаемая продолжительность жизни таких людей должна составлять как минимум сотни лет.

С эволюционной точки зрения старение по-прежнему лучше всего описывается различными модификациями гипотезы Медавара, которая сводится к тому, что в дикой природе смертность от старения у большинства видов пренебрежимо мала в сравнении со смертностью от внешних причин (болезни, хищники и т. п.) и поэтому мутации, которые увеличивают максимальную продолжительность жизни в популяции не закрепляются. Однако те виды, которые не испытывают такого давления среды (очень крупные животные или живущие в защищенной от хищников среде), живут гораздо дольше. Дальнейшим развитием идеи Медавара является гипотеза антагонистической плейотропии, которая утверждает, что в условиях дикой природы эволюция закрепит те варианты генов, которые могут снижать максимальную продолжительность жизни, но увеличивают вероятность репродуктивного успеха в молодости. Гипотеза Медавара была не единожды проверена экспериментально:

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

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

Подробнее..

Перевод Сломанный алгоритм, отравивший американскую транспортную систему

14.09.2020 14:13:59 | Автор: admin

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




В ноябре 2011 года проектная организация мостов Луисвилля и Южной Индианы через реку Огайо опубликовала документ на 595 страниц, который должен был поставить финальную точку в споре по поводу шоссе, длившемся несколько десятилетий. Проект, мягко говоря, оказался противоречивым.

В то время, как множество городов по всем США пытались понять, нужны ли им городские шоссе в деловых районах, Луисвилл принялся за их строительство с удвоенной силой. Он не только хотел оставить печально известную спагетти-развязку им. Кеннеди, где узлом завязываются шоссе 64, 65 и 71 он хотел её надстроить. Политический альянс, продвигающий этот проект, пытался расширить шоссе I-64, чтобы удвоить количество полос, а также построить новый мост недалеко оттуда, вниз по течению. Это удвоило бы количество полос пересекающих реку, с 6 до 12, всего за $2,5 млрд.


Спагетти-развязка в Луисвилле

Но чтобы получить разрешение на использование федерального бюджета на это недешёвое предложение, сторонникам проекта нужно было предоставить свидетельства того, что Луисвиллю требуется это расширение. Они воспользовались юридически дозволенной в индустрии практикой под названием моделирование запросов на перемещения (Travel Demand Modeling, TDM), и наняли инженерную фирму, которая должна была предсказать, как будет выглядеть тамошний трафик через 20 лет то есть, к 2030 году. Фирма пришла к выводу, что количество поездок увеличится на 29%. Последствия были очевидны: если ничего не делать, пробки только усилятся. В итоге проект получил финансирование и был запущен.

Но в двух последовавших исследованиях, финансируемых тем же самым проектом, были сделаны совсем другие выводы.

Через два года инженерная фирма CDM Smith изучила, насколько на самом деле изменилось движение по дорогам, пока проект пытался получить одобрение. Обнаружилось, что с 2010 по 2013 года трафик через реку упал на 0,9%.

Другое исследование, по заказу потенциальных акционеров, вызвало больше вопросов, чем ответов. В заключении было указано, что к 2030 году количество поездок через реку составит 132 000, на 15% меньше, чем предсказывалось в SDEIS [проектный документ, оценивающий влияние строительства на окружающую среду / прим. перев.]. Что ещё хуже, по 12 полосам, которые в сумме будут пересекать реку, в день проедут на 4000 меньше машин, чем по одному только мосту I-65 в 2007 году. Это опровергало аргументацию о том, что Луисвиллю необходимы эти новые мосты.

Аарон Ренн, исследователь в области стратегии развития городов, часто критиковавший проект мостов через реку Огайо, подробно документировал всю эту возню. Каким бы безумным не казался этот проект, писал он в 2013 году, когда вышло исследование для потенциальных акционеров, ему всё время удаётся найти способы продемонстрировать, что он ещё безумнее, чем я думал.

Сегодня проект закончен, и жители Луисвилля сами могут увидеть, какое из предсказаний оказалось более точным. В 2018 году в исследовании, проведённом по окончанию строительство, было показано, что с 2013 по 2018 года количество переездов через реку упало на 2%. В итоге Vox и другие назвали проект пустой забавой эпических масштабов.

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

Недавно я спросил Ренна, насколько эти изначальные красивые предсказания о росте трафика на двузначные проценты реально повлияли на то, что проект был действительно реализован.

Думаю, что повлияли очень сильно, сказал Ренн. Не думаю, что они получили бы разрешение на реализацию проекта без всех этих предсказаний о трафике, утверждавших, что он значительно увеличится. Если увеличения трафика не будет, как оправдать строительство двух мостов?

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

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

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

Your browser does not support HTML5 video.


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

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

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

Это фундаментальная проблема моделирования поездок и метода его использования, сказала Бет Осборн, директор некоммерческой организации Перевозки для Америки. Мы думаем, что модель даёт нам готовый ответ. Это безответственно. Ничто не может дать нам ответ. Ответ нам даём только мы сами.

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

В рамках исследования трафика в городском округе Детройта, как назвали эту работу, было проведено 39 000 интервью с местными жителями и 7200 интервью с водителями грузовиков и таксистами (что характерно для того времени, общественный транспорт вообще не учитывали). Используя компьютер IBM 407, работающий с перфокартами, для частичной автоматизации процесса, исследователи провели экстраполяцию недавних тенденций, и предсказали будущие схемы путешествий, чтобы создать сеть быстрых дорог, которые пригодятся Детройту не только в 1955 году, когда было опубликовано исследование, но и в 1980-м.

Это был инновационный подход к планированию перевозок, и он, учитывая технологии и мышление того времени, был невероятно передовым. Другие города, включая Чикаго, Сан-Хуан и Вашингтон, О.К., вскоре тоже его приняли. Не прошло много времени, как этот подход начали экспортировать и в другие страны, и он стал распространённым инструментом для планирования перевозок во всём мире.

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

Возьмём, к примеру, закономерности роста населения и использования земли, входные данные первого шага четырёхэтапной модели. Это две самых важных переменных в любой TDM, поскольку чем больше людей живёт в данной области, тем больше поездок они совершат, а то, где они живут и где работают, будет определять маршруты поездок. И оба этих фактора в Детройте радикально поменялись. В 1950-х Детройт испытывал внезапный и беспрецедентный рост. В 1950-м, на пике населения, его численность достигала 1,8 млн человек, как утверждает историк Томас Сегрю в книге "Истоки городского кризиса: расы и неравенство в послевоенном Детройте". К 1970 из города уехала почти пятая часть жителей, в частности, из-за бегства белых людей в пригороды. Многие предприятия тоже перенесли свои штаб-квартиры или производства за пределы города, что кардинально изменило схемы передвижения. Планировщику из 1955 года вряд ли удалось бы предсказать что-то подобное.

Критики типичного подхода к моделированию отмечают и менее очевидную проблему модель не совпадает с реальным поведением людей. Допустим, вы живёте в Пасадене, а ваш друг из Калвер-сити приглашает вас на ужин в шесть вечера в рабочий день. Поедете ли вы туда? Или вы скажете, что он с ума сошёл, если считает, что вы поедете через весь Лос-Анджелес по пробкам? Скорее всего, последнее или же такого приглашения изначально бы не было, исходя из банальных приличий и поездка не состоялась бы.

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

Эксперты называют это фиксированным спросом на поездки, что, по сути, оксюморон поскольку спрос на поездки не фиксирован почти по определению. Мы всегда решаем, стоит нам ехать, или нет, перед тем, как поехать. И один из главных факторов в принятии этого решения сколько эта поездка займёт времени. TDM работает, исходя из противоположных предположений если люди захотят куда-то поехать, они поедут. И потом уже подсчитают, сколько времени у них на это ушло.

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

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

Обратная сторона проблемы фиксированного спроса на поездки столь же вредна. Допустим, в Лос-Анджелесе каким-то образом удвоили количество полос на шоссе 110 и 10, соединяющих Пасадену и Калвер-Сити. Теперь поездка на ужин к другу уже не кажется такой плохой идеей. Вот только так же подумают десятки тысяч других людей. Они тоже начнут совершать поездки, которых раньше не совершали. В долгосрочной перспективе они могут переехать подальше, туда, где дома дешевле, поскольку скорость в поездках на работу будет выше, что означает, что они будут сидеть за рулём дольше. В итоге все эти новые полосы заполнятся, и трафик станет таким же плохим.

Это явление называется вынужденным спросом, и это не просто мысленный эксперимент. Ровно это и произошло практически в каждом случае, когда города строили новые шоссе или расширяли старые.

Недавний опыт с автострадами в крупных городах США говорит о том, что пробки будут вечными, писал экономист Энтони Даунс в своей работе 1962 года "Закон пробок на автостраде в час пик". Как видно, вне зависимости от того, сколько новых сверхдорог, соединяющих пригороды с деловым районом, мы построим, ездящие на машинах люди всё равно будут медленно ползти во время утреннего и вечернего часа пик.

Эксперты уже много поколений знают про вынужденный спрос, но мы всё равно продолжаем добавлять новые автострады, подобно Сизифу безуспешно пытаясь выйти из ситуации с пробками в час пик. Чтобы как следует осознать абсурдность попыток решить эту задачу, достаточно взглянуть на проект автострады в Кэйти, Техас, обошедшийся в $2,8 млрд. Он должен был уменьшить время на проезд на работу и с работы по 23-полосному шоссе, самому широкому в мире. Предсказуемо, пробки там лишь усилились, а время в пути увеличилось.

Your browser does not support HTML5 video.


В работе 2011 года "Фундаментальный закон дорожных заторов" сделан вывод, что увеличение количества дорог или общественного транспорта вряд ли ослабит заторы, поскольку как только добавляются новые полосы дороги, пропорционально увеличиваются и расстояния поездок. Чем больше шоссе и дорог мы строим, тем больше ездим. Обратное тоже верно: в редких случаях, когда шоссе временно закрываются, как это было с Аляскинским виадуком в Сиэтле, трафик не сильно ухудшается. А TDM это полностью игнорируют.

Хорошо известно, что четырёхэтапная парадигма, разработанная 50-60 лет назад, представляет собой просто удобную формулу для вычислений, и не учитывает поведенческие факторы, писал планировщик и консультант перевозок Дэвид Т. Хартген в 2013, и не отражает процесс принятия решений путешественником.

Доказательство можно найти на шоссе. В своём знаковом исследовании прогнозов трафика в 14 странах и на пяти континентах от 2007 года, профессор Бент Фливбьорг из Оксфордского университета обнаружил, что половина прогнозов о будущем трафике ошибается более, чем на 20% и это происходит повсеместно. В исследовании от 2006 года, проведённом в рамках Национальной совместной программы шоссейных исследований, было обнаружено, что в 15 проектах строительства платных дорог реальный трафик в среднем оказался на 35% ниже предсказанного. В ещё одном исследовании было обнаружено, что эта ошибка в среднем составляет 42%.

Думаю, что в целом наличие проблем с точностью общепризнано, сказал Фред Джонс, главный менеджер проектов в компании-планировщике Michael Baker International. Иногда на порядок, от 30% до 50%.

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

Непонятно даже, считают ли градостроители или фирмы, использующие эти модели, что такая неточность это плохо. Они утверждают, что их просят совершить невозможное и предсказать будущее естественно, что там будут неточности. Это как строить маршрут на картах Google. Если мы говорим о 20-минутной поездке, карты смогут с неплохой точностью предсказать её длительность. Если это поездка часов на 8, то оценка длительности будет просто догадкой, поскольку даже Google не умеет предсказывать будущее, и узнать, будет ли авария на I-95 на выезде из О.К., когда вы доберётесь туда через пять часов. Выполненное по государственным стандартам предсказание на 20 лет вперёд, как говорит профессор Чаньюнг Ли из Южно-Флоридского университета, примерно из той же серии.

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

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

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

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

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

Когда я спросил Ренна, пристально наблюдавшего за проектом в Луисвилле, как можно лучше спроектировать строительство большого транспортного проекта, он сказал, что не уверен. Есть идея, что мы должны избавиться от политики в этом процессе, свести политические решения к объективным критериям. Думаю, что многие из наших споров идут из-за соперничества систем ценности в наших представлениях о том, что будет хорошо для людей.

Тут опять проект из Луисвилля служит хорошим примером. Составлявшие SDEIS инженеры оценили, что к 2030 году население города с пригородом вырастет на 15%. Предсказание выглядит надёжным Ренн сказал, что с 2007 по 2020 население в этих округах выросло на 7,85%. Однако в SDEIS предсказано, что практически всё это увеличение придётся на пригороды и окраины города. Из-за этого предположения, и предсказанного роста занятости на 42%, в SDEIS указано 52% увеличение времени поездок и 161% увеличение времени, потерянного в пробках в текущей инфраструктуре. Эти оценки стали критическими для принятия проекта строительства двух мостов.

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

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

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

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

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

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

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

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

Редактирование параметрической сборки 3D моделей при помощи таблиц nanoCAD

22.01.2021 14:05:41 | Автор: admin

На прошлой неделе мы познакомились с инструментами, которые позволяют задавать и редактировать параметрические зависимости взаимного расположения 3D-тел, а также рассмотрели инструменты, которые позволяют найти перекрытия (коллизии) сопрягаемых 3D-тел.

В этой части статьи мы изучим прием, который позволяет упростить редактирование параметров параметрической сборки, при помощи таблиц nanoCAD.

Читать далее

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

Выходом из этих проблем становятся таблицы nanoCAD. В таблицу можно вывести только интересующие нас параметры, а режим быстрого редактирования таблицы позволяет изменять параметры без вызова дополнительных окон.

Создайте таблицу nanoCAD. Для этого вызовите команду таблица или в ленточном интерфейсе команду Таблица nanoCAD (рис. 1): Оформление Таблицы Таблица nanoCAD, либо выберите соответствующую иконку на панели Таблицы, либо в выпадающем меню укажите Черчение Таблицы Таблица nanoCAD.

Рис. 1. Вызов команды вставки таблицы nanoCAD в ленточном интерфейсе и на панели 3D Рис. 1. Вызов команды вставки таблицы nanoCAD в ленточном интерфейсе и на панели 3D Рис. 1.Рис. 1.

Появится окно создания таблицы (рис. 2). Выберите пункт Нестандартная, укажите мышью размер таблицы (1х1) и нажмите кнопку ОК.

Рис. 2. Окно создания таблицы nanoCADРис. 2. Окно создания таблицы nanoCAD

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

Создайте три раздела отчетов, для чего три раза выберите в выпадающем меню Разделы Вставить раздел отчета (рис. 3).

Рис. 3. Создание раздела отчета в таблице nanoCADРис. 3. Создание раздела отчета в таблице nanoCAD

Выберите курсором ячейку А2 и вставьте раздел данных (рис. 4).

Рис. 4. Создание раздела данных в таблице nanoCAD после ячейки А2Рис. 4. Создание раздела данных в таблице nanoCAD после ячейки А2

Далее укажите курсором ячейку А4 и снова вставьте раздел данных (рис. 5).

Рис. 5. Создание раздела данных в таблице nanoCAD после ячейки А4Рис. 5. Создание раздела данных в таблице nanoCAD после ячейки А4

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

Рис. 6. Итоговая структура разделов таблицыРис. 6. Итоговая структура разделов таблицы

Рядом с ячейкой А2 нажмите кнопку со значком фильтра (рис. 7).

Рис. 7. Кнопка настройки фильтра объектов раздела отчета ячейки А2Рис. 7. Кнопка настройки фильтра объектов раздела отчета ячейки А2

Появится окно быстрого выбора. Нажмите кнопку выбора объектов из набора (рис. 8).

Рис. 8. Режим выбора объектов для фильтрации из набораРис. 8. Режим выбора объектов для фильтрации из набора

На редактируемом эскизе укажите курсором размерный параметр, который задает внутренний радиус стакана (рис. 9) и нажмите Enter. В окне быстрого выбора нажмите кнопку ОК.

Рис. 9. Выбор объекта для формирования отчета по геометрическому размеру подшипникового стаканаРис. 9. Выбор объекта для формирования отчета по геометрическому размеру подшипникового стакана

Закройте окно редактора таблицы и откройте на редактирование эскиз крышки стакана. Снова откройте окно редактора таблицы и у ячейки А5 нажмите кнопку фильтра объектов (рис. 10).

Рис. 10. Кнопка настройки фильтра объектов раздела отчета ячейки А5Рис. 10. Кнопка настройки фильтра объектов раздела отчета ячейки А5

Нажмите кнопку выбора объектов из набора. На редактируемом эскизе укажите курсором размерный параметр, который задает длину заплечика стакана (рис. 11), нажмите Enter, в окне быстрого выбора нажмите кнопку ОК.

Рис. 11. Выбор объекта для формирования отчета по геометрическому размеру крышки стаканаРис. 11. Выбор объекта для формирования отчета по геометрическому размеру крышки стакана

Закройте окно редактора таблицы и завершите редактирование эскиза. Снова откройте окно редактора таблицы и рядом с ячейкой А8 нажмите кнопку фильтра объектов, а затем в окне быстрого выбора нажмите кнопку выбора объектов из набора. Укажите курсором подшипник (рис. 12), нажмите Enter, в окне быстрого выбора нажмите кнопку ОК.

Рис. 12. Выбор объекта для формирования отчета по геометрическому размеру подшипникаРис. 12. Выбор объекта для формирования отчета по геометрическому размеру подшипника

Таким образом в одной таблице сформировались три раздела отчетов по параметрам деталей сборки. Отчеты таблиц nanoCAD имеют двустороннюю связь с параметрами, которые отображаются в отчете, поэтому есть возможность изменять свойства объектов изнутри таблицы nanoCAD. Чтобы сформировать данные по отчетам, необходимо в ячейках шаблона отчета указать геометрические свойства ранее выбранных объектов.

Наведите курсор на ячейку А2 и зажмите правую кнопку мыши, а затем, не отпуская кнопку, переместите курсор вверх от ячейки. Вслед за движением курсора появится линия, которая сигнализирует о том, что активируется одна из команд редактирования таблицы (рис. 13). Отпустите правую кнопку. Откроется окно построителя выражений (рис.14): движение курсора вверх над ячейкой вызывает открытие именно этого окна.

Рис. 13. Быстрая активация команды вызова окна построителя выражений для ячейки А2Рис. 13. Быстрая активация команды вызова окна построителя выражений для ячейки А2

Такой способ вызова команд редактирования таблицы является одним из самых быстрых. В то же время существует возможность вызывать эти команды с помощью интерфейсных кнопок окна редактора.

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

Рис. 14. Окно построителя выраженийРис. 14. Окно построителя выражений

Введите в верхнем поле слово Значение. В среднем поле будет осуществлен поиск выражения, которое содержит имя искомого свойства (рис. 15). Дважды щелкните левой кнопкой мыши по выражению Object.Value. Нажмите кнопку ОК.

Рис. 15. Поиск выражения по имени свойства параметрического размераРис. 15. Поиск выражения по имени свойства параметрического размера

То же самое проделайте для шаблона отчета в ячейке А5. А для шаблона отчета в ячейке А8 имя искомого свойства должно быть Наружний (рис. 16).

Рис. 16. Поиск выражения по имени свойства параметрического объектаРис. 16. Поиск выражения по имени свойства параметрического объекта

Таким образом получилась таблица с тремя контролируемыми параметрами объектов сборки (рис. 17). Чтобы в таблице было удобнее ориентироваться, впишите имена параметров в разделы данных.

Рис. 17. Итоговый результат формирования таблицыРис. 17. Итоговый результат формирования таблицы

Также разделите таблицу на страницы, чтобы появилась возможность произвольно расположить параметры в пространстве модели. Наведите курсор на цифру 4 в линейке и нажмите правую кнопку мыши, выберите в контекстном меню пункт Начать новую страницу (рис. 18).

Рис. 18. Установка разделителя страниц перед ячейкой А4Рис. 18. Установка разделителя страниц перед ячейкой А4

Тоже самое сделайте для 7-ой строки (Рис. 75).

Рис. 19. Установка разделителя страниц перед ячейкой А7.Рис. 19. Установка разделителя страниц перед ячейкой А7.

Закройте окно редактора. Левой кнопкой мыши выделите таблицу. Перемещать страницы таблицы можно за квадратные ручки (рис. 20).

Рис. 20. Выделенная таблица nanoCADРис. 20. Выделенная таблица nanoCAD

Страницы таблицы расположите, как вам будет удобно. Например, как показано на рис.21.

Рис. 21. Расположение страниц таблицы в одну строкуРис. 21. Расположение страниц таблицы в одну строку

Наведите курсор мыши на содержимое ячейки, в которой отображается значение внешнего диаметра подшипника. Зажмите на клавиатуре клавишу Ctrl и левой кнопкой мыши щелкните по содержимому ячейки. Активируется режим быстрого редактирования таблицы (рис. 22). В ячейке появится курсор, а сама ячейка будет выделена зеленой рамкой.

Рис. 22. Активация режима быстрого редактирования таблицыРис. 22. Активация режима быстрого редактирования таблицы

Сотрите содержимое и напишите новое значение: 80. В данном случае значения будут округляться до ближайшего из имеющихся в библиотеке элементов. Стрелками на клавиатуре либо с помощью мыши переведите курсор на ячейку со значением радиуса стакана, сотрите значение и напишите 40 (рис. 23). Для подтверждения внесенных изменений нажмите Enter.

Рис. 23. Результат внесения изменений в режиме быстрого редактированияРис. 23. Результат внесения изменений в режиме быстрого редактирования

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

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

Итак, мы изучили прием работы с таблицами nanoCAD, который позволяет упростить редактирование параметрической сборки.

Олег Ачкасов,
инженер САПР
ООО Макссофт-24
E-mail: oleg@maxsoft.ru

Подробнее..

Создай мозг с нуля математические модели в нейробиологии

28.10.2020 14:12:50 | Автор: admin

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

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

Некоторые люди, как и в незапамятные времена, продолжают утверждать, что понять работу мозга невозможно, или же отрицают, что мозг порождает наш разум и сознание и т. д. Несмотря на все это, в реальности науки, работающие в этой области, делают огромные успехи и быстро сокращают пробелы в нашем понимании существующих вопросов. За последние десятилетия человечество узнало о том, что нервные клетки все-таки восстанавливаются и научилось перепрограммировать стволовые клетки так, чтобы они формировали новые нейроны [1]. Мы также выяснили, что посредством электрической стимуляции нервов можно восстановить способность самостоятельно передвигаться у парализованных пациентов с повреждениями спинного мозга [2]. Многие заболевания нервной системы сейчас можно распознать на ранних стадиях и без использования инвазивных методов или долгого мучительного сканирования: относительно простой анализ генетической информации человека позволяет выявлять многие нейродегенеративные заболевания, эпилепсии и двигательные расстройства даже до начала проявления симптомов. Появилась возможность создавать подробные карты и общедоступные базы данных, содержащие информацию о том, как конкретные гены связаны с различными заболеваниями или определенными типами поведения и как взаимодействия продуктов этих генов вовлечены в процессинг огромного потока информации в мозге. Были открыты детальные (на уровне работы индивидуальных нейронов) механизмы обработки информации о пространственном местоположении организма своего рода внутренний GPS, обеспечивающий ориентирование (за эту работу была присуждена Нобелевская премия в 2014 году)[10].

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

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

Подход сверху-вниз (top-down) стремится отобразить когнитивные функции на алгоритмическом уровне. Этот подход игнорирует биологическую реализацию и вместо этого пытается разложить процессы обработки информации, лежащие в основе функционирования нервной системы, на алгоритмические компоненты. Ученые уже начали тестировать сложные вычислительные модели, способные описать высокоуровневые сенсорные и когнитивные функции мозга. Недавние достижения в области машинного обучения, получившей мощный толчок за счет растущих вычислительных мощностей и крупномасштабных датасетов, на которых можно проводить обучение, позволили заметно продвинуться в решении проблем понимания процессов восприятия, когнитивной деятельности и контроля.

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

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

Исследования в области развития НС проводятся учеными из разных сфер по всему миру. Одни ищут ответы на поставленные вопросы при помощи простых клеточных культур, другие используют более сложные in vitro системы, известные как органоиды, третьи ставят эксперименты на грызунах. В нашей лаборатории JetBrains Research используется чисто вычислительный (in silico) подход: мы разрабатываем модельный фреймворк BCNNM (Biological Cellular Neural Network Modeling), который может быть использован исследователями для построения динамических пространственных моделей развития и функционирования нервной ткани.

Наш подход

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

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

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

Результаты

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

Рисунок 2. Рост и дифференциация клеточной массы в ходе симуляции.Рисунок 2. Рост и дифференциация клеточной массы в ходе симуляции.Рост клеточной структурыРост клеточной структуры

При моделировании в режиме нормального развития полученные структуры обладают количественными соотношениями различных типов клеток и их пространственным распределением, характерными для биологических структур [4,5]. Параметры внутренней связности также сравнимы с аналогичными параметрами моделируемых in vitro и in vivo систем в норме [6]. Моделируемый органоид из миллиона клеток может содержать миллионы отростков и синапсов, которые обеспечивают связность внутри слоев и между ними. Количество и соотношение входящих и исходящих связей для клеток внутри слоя коррелирует с таковым в живых системах. В слоистых модельных структурах паттерны связывания слоев между собой сходны с тем, что можно наблюдать в слоистых структурах мозга или в церебральных органоидах. Эти паттерны связывания не случайны они следуют из молекулярных правил аксонального наведения и связывания нужных целей. Ниже можно увидеть визуализацию процесса аксонального наведения в нашей модели.

Рост аксонаРост аксона

Моделирование в BCNNM возможно и в режиме отклонения от нормы за счет гибкости конфигурации. Это позволяет наблюдать за развитием дефектных структур, что может пролить свет на течение различных заболеваний нервной системы. Работая с моделью, мы показали, что, меняя концентрации сигнальных молекул или параметры ответов со стороны клеток (что может являться, к примеру, аналогом изменения чувствительности клеточных рецепторов) в области деления, дифференциации или создания связей, мы можем наблюдать отклонения в системе, которые напоминают изменения, свойственные нарушениям развития биологических нервных тканей.

Помимо моделирования нарушений процесса развития, в рамках нашего проекта проводились исследования по посттравматическому нейрогенезу [7]. Клеточная динамика после нанесения травмы продемонстрировала поведение соответствующее реальному [8, 9]: резко падает количество нервных клеток и повышается концентрация некротического фактора, что ведет к дифференциации мультипотентных стволовых клеток в нейрональные предшественники, которые мигрируют к месту травмы и в свою очередь дифференцируются в нейроны. Пример такой динамики показан на рисунке 5, а в таблице ниже приведено сравнение изменения числа пролиферирующих клеток при травме разной силы в модели и в экспериментальных данных из исследования на мышах [8].

Рисунок 3. Пример клеточной динамики после нанесения травмы в модели.Рисунок 3. Пример клеточной динамики после нанесения травмы в модели.

Перспективы применения метода

Фреймворк BCNNM может быть использован для подробного in silico воспроизведения in vitro экспериментов, направленных на получение детальных наборов параметров, характеризующих все ключевые компоненты (клетки, их компартменты, синапсы и т. д.), предоставляя новые данные для нейробиологических исследований. Это могут быть как фундаментальные вопросы, касающиеся процессов развития, так и более прикладные, связанные с различными заболеваниями центральной нервной системы, а в перспективе и с разработкой подходов для лечения некоторых из этих заболеваний. Применение фреймворка для предварительного вычислительного тестирования биологических и медицинских гипотез позволит снизить стоимость постановки лабораторных экспериментов и ускорит процесс проведения исследований.

Курс Computational Neuroscience

Помимо исследовательской деятельности, наша лаборатория вовлечена в образовательный процесс. С 2019 года мы читаем курс Вычислительные нейронауки для студентов партнерских магистратур ВШЭ и ИТМО (и любых вольнослушателей!) в рамках образовательных программ JetBrains. В прошлом осеннем семестре лекции и семинары проходили в очном формате. В ходе курса студентам были предложены базовый материал для изучения и обсуждения в аудитории, материалы для самостоятельного, более глубокого погружения, интересные практические задания по моделированию нейронов и биологических нейронных сетей. В осеннем семестре 2020 курс проходит в удаленном формате, что позволило нам значительно расширить аудиторию. Видеоматериалы будут доступны всем желающим на YouTube-канале JetBrains Research.

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

Список литературы

  1. Takahashi, J. iPS cell-based therapy for Parkinson's disease: A Kyoto trial. Regenerative Therapy, 2020, ISSN 2352-3204. https://doi.org/10.1016/j.reth.2020.06.002.

  2. Angeli, C. A., Boakye, M., Morton, R. A., Vogt, J., Benton, K., Chen, Y., Harkema, S. J. (2018). Recovery of Over-Ground Walking after Chronic Motor Complete Spinal Cord Injury. New England Journal of Medicine. doi:10.1056/NEJMoa1803588 (https://doi.org/10.1056/NEJMoa1803588)

  3. Kriegeskorte, N., & Douglas, P. K. (2018). Cognitive computational neuroscience. Nature Neuroscience. doi:10.1038/s41593-018-0210-5

  4. Caffrey, J. R., Hughes, B. D., Britto, J. M., and Landman, K. A. (2014). An in silico agent-based model demonstrates reelin function in directing lamination of neurons during cortical development. PLoS ONE 9. doi:10.1371/journal.pone.0110415

  5. Dingle, Y.-T. L., Boutin, M. E., Chirila, A. M., Livi, L. L., Labriola, N. R., Jakubek, L. M., et al. (2015). Three-dimensional neural spheroid culture: An in vitro model for cortical studies. Tissue engineering. Part C, Methods 21, 12741283. doi:10.1089/ten.TEC.2015.0135. 26414693

  6. Gerhard, F., Pipa, G., Lima, B., Neuenschwander, S., and Gerstner, W. (2011). Extraction of network topology from multi-electrode recordings: Is there a small-world effect? Frontiers in Computational Neuroscience 5. doi:10.3389/fncom.2011.00004

  7. Мыров В.О. Вычислительное моделирование посттравматического нейрогенеза. Магистерская диссертация. СПбАУ РАН, Санкт-Петербург 2018

  8. Wang, X., Gao, X., Michalski, S., Zhao, S., & Chen, J. (2016). Traumatic Brain Injury Severity Affects Neurogenesis in Adult Mouse Hippocampus. Journal of Neurotrauma, 33(8), 721733. doi:10.1089/neu.2015.4097 (https://doi.org/10.1089/neu.2015.4097)

  9. Neuberger, E. J., Swietek, B., Corrubia, L., Prasanna, A., & Santhakumar, V. (2017). Enhanced Dentate Neurogenesis after Brain Injury Undermines Long-Term Neurogenic Potential and Promotes Seizure Susceptibility. Stem Cell Reports, 9(3), 972984. doi:10.1016/j.stemcr.2017.07.015 (https://doi.org/10.1016/j.stemcr.2017.07.015)

  10. https://www.scientificamerican.com/article/how-the-2014-nobel-prize-winners-found-the-brain-s-own-gps/

Подробнее..

Наложение 3D-зависимостей и поиск коллизий между моделями

15.01.2021 14:04:54 | Автор: admin

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

В этой части мы познакомимся с инструментами, которые позволяют задавать и редактировать параметрические зависимости взаимного расположения 3D-тел. А также мы рассмотрим инструменты, которые позволяют найти перекрытия (коллизии) сопрягаемых 3D-тел.

Добавьте подшипник, выбрав его из базы nanoCAD Механика и разместив в пространстве модели. Если вы используйте какой-либо другой программный продукт nanoCAD, пропустите это действие.

Чтобы открыть вкладку базы элементов nanoCAD Механика, необходимо вызвать в командной строке команду mctabs, либо в ленточном интерфейсе указать Механика Стандартные Управление вкладками, либо использовать панель ЕСКД Стандартные, либо в выпадающем меню выбрать Механика Стандартные Управление вкладками (рис. 1).

Рис. 1. Вызов команды управления вкладками на панели ЕСКДСтандартные и в ленточном интерфейсеРис. 1. Вызов команды управления вкладками на панели ЕСКДСтандартные и в ленточном интерфейсе

Затем в командной строке либо в динамической командной строке следует выбрать вкладку База элементов (рис. 2).

Рис. 2. Открытие/закрытие вкладки База элементовРис. 2. Открытие/закрытие вкладки База элементов

Также в классическом варианте интерфейса вкладку базы элементов можно вызвать, щелкнув правой кнопкой мыши на свободном пространстве панелей и выбрав в появившемся контекстном меню Функциональные панели База элементов (рис. 3).

Рис. 3. Вызов вкладки База элементов в классическом варианте интерфейсаРис. 3. Вызов вкладки База элементов в классическом варианте интерфейса

После этого должна появиться/исчезнуть вкладка с базой элементов (рис. 4).

Рис. 4. Вкладка базы элементов nanoCAD МеханикаРис. 4. Вкладка базы элементов nanoCAD Механика

Раскройте дерево Валы Подшипники шариковые (рис. 5).

Рис. 5. Путь до раздела с шариковыми подшипникамиРис. 5. Путь до раздела с шариковыми подшипниками

На вкладке базы элементов нажмите кнопку Использовать 3D модели при вставке стандартных деталей (рис. 6). Если эта кнопка неактивна, будут вставляться 2D-виды деталей.

Рис. 6. Кнопка включения отображения 3D-моделей при вставке деталей избазы nanoCAD МеханикаРис. 6. Кнопка включения отображения 3D-моделей при вставке деталей избазы nanoCAD Механика

Левой кнопкой мыши выберите подшипник ГОСТ 832-78 Тип 236000 (рис. 7).

Рис. 7. Выбор подшипника ГОСТ 832-78 Тип 236000 из базы nanoCADМеханикаРис. 7. Выбор подшипника ГОСТ 832-78 Тип 236000 из базы nanoCADМеханика

Укажите точку вставки в пространстве модели. После этого появится окно редактирования параметров подшипника. Укажите параметры, как показано на рис. 8, и нажмите OK.

Рис. 8. Параметры подшипникаРис. 8. Параметры подшипника

Для завершения работы команды нажмите на клавиатуре клавишу Esc.

Теперь задайте зависимости взаимного расположения 3D-тел стакана, подшипника и крышки. Для этого воспользуйтесь инструментами группы 3D-зависимостей. В ленточном интерфейсе они расположены на вкладке 3D-инструменты 3D-Зависимости, либо на панели 3D (рис. 9), либо в выпадающем меню 3D 3D элементы.

Рис. 9. Инструменты 3D-зависимостей на панели 3D и в ленточном интерфейсеРис. 9. Инструменты 3D-зависимостей на панели 3D и в ленточном интерфейсе

При задании 3D-зависимостей между 3D-телами удобно скрывать тела, не участвующие в операции. Для этого в истории построений щелкните правой кнопкой мыши на 3D-теле и выберите в контекстном меню пункт Скрыть (рис. 10).

Рис. 10. Скрытие объектаРис. 10. Скрытие объекта

Измените стиль отображения на 3D-скрытый и с помощью команды Зависимость 3D-вставка вставьте подшипник в стакан. Инструмент 3D-вставки позволяет совместить плоские поверхности, в которых лежат указанные пользователем окружности оснований двух 3D-тел; при этом также совмещаются (лежат на одной прямой) векторы нормалей. Начала векторов нормали совпадают с центрами окружностей.

Активируйте объектную привязку Ближайшая.

Вызовите в командной строке команду 3dinsert, либо в ленточном интерфейсе укажите 3D-инструменты 3D-Зависимости Зависимость 3D вставка, либо выберите соответствующую иконку на панели 3D, либо в выпадающем меню откройте 3D 3D элементы Зависимость 3D вставка (рис. 11).

Рис. 11. Зависимость 3D вставка на панели 3D и в ленточном интерфейсеРис. 11. Зависимость 3D вставка на панели 3D и в ленточном интерфейсе

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

Рис. 12. Выбор окружности подшипника для указания 3D-зависимости ВставкаРис. 12. Выбор окружности подшипника для указания 3D-зависимости Вставка

Затем укажите окружность заплечика стакана (рис. 13).

Рис. 13. Выбор окружности стакана для создания 3D-зависимости ВставкаРис. 13. Выбор окружности стакана для создания 3D-зависимости Вставка

После этого произойдет сопряжение тел. В командной строке можно изменить направление векторов нормали, чтобы перевернуть одну деталь относительно другой (рис. 14). Для этого щелкните кнопкой мыши на подчеркнутом параметре или введите в командную строку его имя. Имя может быть полным либо указываться заглавной буквой в имени параметра. Для подтверждения нажмите Enter.

Рис. 14. Изменение направления векторов нормалиРис. 14. Изменение направления векторов нормали

Сделайте видимыми скрытые детали. Для этого в контекстном меню истории построений необходимо выбрать пункт Показать (рис. 15).

Рис. 15. Включение отображения объектов в Истории 3D ПостроенийРис. 15. Включение отображения объектов в Истории 3D Построений

Вставьте крышку в подшипниковый стакан с помощью инструмента 3D-вставки.

Укажите окружности фланцев стакана и крышки (рис. 16).

Рис. 16. Выбор окружности крышки для указания 3D-зависимости ВставкаРис. 16. Выбор окружности крышки для указания 3D-зависимости Вставка

Затем укажите окружность второго 3D-тела (рис. 17).

Рис. 17. Выбор второй окружности стакана для указания 3D-зависимости ВставкаРис. 17. Выбор второй окружности стакана для указания 3D-зависимости Вставка

Также необходимо, чтобы отверстия стакана и крышки оставались соосными при изменении их количества в массиве. Для этого следует добавить зависимость 3D вставка для кромок отверстий. Установите стиль отображения 3D Каркас. Активируйте инструмент 3D-вставки и укажите окружности кромок отверстий (рис. 18). Подтвердите добавление зависимости нажатием клавиши Enter. Установите стиль отображения Точный.

Рис. 18. Выбор окружностей при указании 3D-зависимости Вставка дляотверстий крышки и стакана.Рис. 18. Выбор окружностей при указании 3D-зависимости Вставка дляотверстий крышки и стакана.

Чтобы увидеть, насколько корректно тела сопрягаются между собой, добавьте секущую плоскость, а в ее свойствах активируйте псевдоразрез. Для этого вызовите команду viewsection или команду Секущая плоскость в ленточном интерфейсе (рис. 19): 3D-инструменты 2D виды Секущая плоскость, либо выберите соответствующую иконку на панели 2D виды, либо в выпадающем меню укажите 3D 2D виды Секущая плоскость.

Рис. 19. Вызов команды Секущая плоскость на панели 2D виды ивленточном интерфейсеРис. 19. Вызов команды Секущая плоскость на панели 2D виды ивленточном интерфейсе

Поскольку на оси сборки лежит точка начала МСК, удобно будет указать для секущей плоскости какую-либо из плоскостей МСК: Y0Z, Z0X, X0Y. В одной из этих плоскостей будет лежать грань торца стакана. Эту плоскость в качестве секущей указывать не нужно, так как она ничего не разрежет. В истории построений укажите одну из плоскостей МСК при наведении курсора она будет окрашиваться в зеленый цвет (рис. 20).

Рис. 20. Выбор секущей плоскости в окне История 3D ПостроенийРис. 20. Выбор секущей плоскости в окне История 3D Построений

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

Курсором выберите созданную секущую плоскость и в окне свойств укажите Да в выпадающем списке для параметра Псевдоразрез (рис. 21).

Рис. 21. Включение/отключение отображения псевдоразреза в свойствах секущей плоскостиРис. 21. Включение/отключение отображения псевдоразреза в свойствах секущей плоскости

После этого тело разрежется и в плоскости разреза будет отображаться псевдоразрез (рис.22).

Рис. 22. Псевдоразрез сборкиРис. 22. Псевдоразрез сборки

Для удобства в истории построений скройте объект сечения (рис. 23).

Рис. 23. Скрытие объекта секущей плоскости в Истории 3D ПостроенийРис. 23. Скрытие объекта секущей плоскости в Истории 3D Построений

Если внимательно рассмотреть псевдоразрез, то скорее всего окажется, что 3D-тела имеют перекрытия. Внешний диаметр подшипника был установлен ранее: 72 мм. Откройте Менеджер параметров, присвойте параметру Рподш половину диаметра подшипника (рис. 24) и закройте Менеджер.

Рис. 24. Редактирование сборки при помощи Менеджера параметровРис. 24. Редактирование сборки при помощи Менеджера параметров

Можно видеть, как перестроились стакан и крышка стакана (рис. 25).

Рис. 25. Результат редактирования сборки после указания радиуса подшипникаРис. 25. Результат редактирования сборки после указания радиуса подшипника

Также возможно перекрытие заплечика крышки подшипником. Необходимо измерить размер перекрытия и изменить на эту величину параметр Lзапл. Измерить это расстояние можно с помощью инструмента Отрезок, а для поиска характерных точек использовать объектные привязки (рис. 26).

Рис. 26. Поиск длины перекрытия заплечика и подшипникаРис. 26. Поиск длины перекрытия заплечика и подшипника

Кроме визуального анализа перекрытий деталей на разрезе, можно воспользоваться функционалом поиска перекрытий 3D-тел. Для этого необходимо вызвать в командной строке команду interfere, либо команду Анализ перекрытий 3D тел в ленточном интерфейсе: 3D-инструменты Прямое моделирование Анализ перекрытий 3D тел, либо выбрать соответствующую иконку на панели инструментов 3D, либо в выпадающем меню указать 3D Прямое моделирование Анализ перекрытий 3D тел (рис. 27).

Рис. 27. Вызов команды анализа перекрытий на панели 3D и в ленточном интерфейсеРис. 27. Вызов команды анализа перекрытий на панели 3D и в ленточном интерфейсе

Затем необходимо выбрать наборы 3D-тел. Секущей рамкой выберите все тела и дважды нажмите Enter. Появится окно проверки взаимодействий. Тела, между которыми имеются перекрытия, станут прозрачными и окрасятся в голубой цвет. Участки перекрытий тел будут выделены зеленым (рис. 28). Если после двойного нажатия клавиши Enter окно Проверка взаимодействий не появилось, значит у выделенных тел нет перекрытий.

Рис. 28. Отображение перекрытийРис. 28. Отображение перекрытий

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

У 3D-зависимостей также есть редактируемые параметры, которые позволяют задавать расстояния между сопрягаемыми поверхностями. Для этого необходимо дважды щелкнуть по зависимости в истории 3D-построений, а затем в командной строке ввести расстояние, на которое следует разнести сопрягаемые плоскости (рис. 29). Таким образом можно создать разнесенный вид сборки (рис. 30).

Рис. 29. Редактирование параметров 3D-зависимостейРис. 29. Редактирование параметров 3D-зависимостейРис. 30. Разнесенный вид сборкиРис. 30. Разнесенный вид сборки

Итак, мы познакомились с инструментами, которые позволяют задавать и редактировать параметрические зависимости взаимного расположения 3D-тел. А также рассмотрели инструменты, которые позволяют найти перекрытия (коллизии) сопрягаемых 3D-тел. В следующей части статьи мы познакомимся с приемом, который позволяет упростить процесс редактирования параметрической сборки с помощью таблиц nanoCAD.

Олег Ачкасов,
инженер САПР
ООО Макссофт-24
E-mail: oleg@maxsoft.ru

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru