Cosmic Desktop, что на Расте написан также используется в Pop_OS. В релиз он пока не вышел, но попробовать альфу уже можно - https://system76.com/cosmic. Для меня Pop_OS! - основной домашний Линукс, и на ней вполне можно работать (мне комфортно). Cosmic десктоп, я ,правда пока не пробовал.
И тем не менее я всё-же не до конца понимаю словосочетание "степень параллелизма" в вашей интерпретации. Для меня параллелизм — это когда что-то с чем-то выполняется параллельно. Два потока в компьютере, к примеру. Да, там есть тонкости типа псевдопараллельности в зависимости от модели многозададачности, но LabVIEW параллельна сама по себе априори и из коробки, вплоть до того, что отдельные циклы (автоматы, если хотите) там вообще на разные ядра процессора раскидать можно и они будут выполняться параллельно (можно с синхронизацией, можно и без). Что значит "степень параллелизма?"
Но в контексте конкретно данного обсуждения я, кажется, начинаю вас понимать, и вот мне кажется, что вы в какой-то мере подменяете понятия "непрерывности/дискретности" понятиями "параллельно/последовательно". Вероятно вы считаете автоматы клапана и бака некими "параллельными" системами с "мгновенной" реакцией.
Давайте в качестве примера упростим всё до предела, рассмотрим сливной бачок унитаза. Там есть кнопка слива, поплавок и клапан, соединённый с поплавком. Чем ниже уровень воды, тем сильнее открывается клапан. Нас интересует уровень воды как функция времени после нажатия кнопки, определённая на временнóм участке до следующего наполнения. Это типичная непрерывная (аналоговая, если будет угодно) система. Чтобы хоть как-то проконтролировать нашу модель, мы вкорячим туда ардуинку, замеряющую уровень в определённые моменты времени. Понятно, что если мы будем менять частоту опроса ардуинки, то на систему это никак не повлияет, разве что график станет грубее. Также и в симуляции, если мы меняем частоту дискретизации, но модель возвращает одни и те же значения в одни и те же моменты времени, то это непрерывная модель. Я могу хоть через пять секунд попросить время и моделб мне скажет количество воды в этот момент.Всё просто.
Теперь мы слегка изменим наш бачок — добавим сервомотор, и ардуинка теперь будет не просто опрашивать уровень поплавка, но будет управлять мотором, подключённому к клапану. В этом месте мы внесли дискретность в наше устройство, причём не только временнýю, но и по значениям (что поплавок, что серва имеют ограниченный набор допустимых значений). Вот теперь время цикла ардуинки будет очень даже влиять на результат — если я поставлю пять секунд, то мало того, что бачок начнёт наполняться с задержкой, он ещё и запросто может переполниться. Очевидным образом при уменьшении времени дискретизации (увеличении частоты) наша система будет ближе и лучше приближаться к непрерывной (догонит ли Ахиллес черепаху?). Я так понял из вашего отчёта выше, что при 0,01 сек это примерно и произошло и "диаграммы совпали идеально".
Пока что всё просто, это просто азы САУ. Современные средства симуляции позволяют моделировать оба типа систем, равно как и смешанные, гибридные. Тот скриншот, что я показал в комменте к предыдущему посту — это классический пример симуляции дискретной, или последовательной, если будет угодно. Я подогнал результат под SimInTech, но меняя время дискретизации, я безусловно буду влиять на результат. Там всё исполнение в цикле идёт последовательно — вычисление управляющего воздействия контроллером нечёткой логики -> вычисление значений уровня воды и потока, и на следующей итерации (такте) передача их в контроллер (там сдвиговый регистр), и так далее по кругу, никакой "параллельности" там нет и в помине.
Однако LabVIEW Control Design and Simulation Module умеет и в непрерывную систему. Я не стал усложнять там коммент, но установка этого модуля добавляет специальный цикл для симуляции, и вот в нём возможно соединить выход напрямую с входом вот таким образом (что в общем противоречит парадигме потоков данных):
Но это даёт нам ту самую "параллельность" (хотя бы визуальную), когда выход мгновенно распространяется на вход, как если бы наш поплавок был жёстко соединён с клапаном. На самом деле авторы тулкита просто вдохновились Симулинком.
Для симуляции дискретной системы там свои отдкльные инструменты (поэтому и примеры отдельно для разных типов и инструменты для непрерывных и дискретных систем разные).
Цикл симуляции, кстати, универсален, вот посмотрите на его свойства, непрерывное и дискретное время раздельно:
Как я уже отметил выше, при уменьшении времени дискретизации наша дискретная система начинает приближаться к непрерывной, но расчёт с использованием очень большого количества шагов непродуктивен с точки зрения разбазаривания вычислительных ресурсов, поэтому тут всё хитрее — используется Рунге-Кутта с переменным шагом, и шаг уменьшается лишь на сильных изменениях. Так что симуляция в общем всегда дискретна, просто шаг очень маленький. При этом я могу задать требуемую точность симуляции, как относительную, так и абсолютную, а LabVIEW сама подгонит необходимый шаг. Документация: https://www.ni.com/docs/en-US/bundle/labview-control-design-and-simulation-module/page/lvsim/sim_configparams.html?srsltid=AfmBOopYUDq60ORMmPloKvwHHDw7du6r_GpWTyGoCd1bOwyr6plxTNRH Дискретный шаг на симуляцию непрерывной системы не влияет, а лишь на количество данных (но в точках отсчёта данные должны быть валидны).
Если же я выполняю симуляцию чисто дискретной системы, то переключусь вот так:
А так, кстати, там вот что доступно:
(надо будет на досуге разобраться с остальными, а то кроме Рунге-Кутта да Эйлера ничё не знаю). Вот это всё или почти всё есть и в Simulink в той или иной форме. Там, к примеру, также как и в LabVIEW есть как дискретный, так и непрерывный интегратор (https://de.mathworks.com/help/sps/ref/integratordiscreteorcontinuous.html).
SimInTech если верить документации также умеет симулировать как дискретные так и непрерывные системы, причём их можно комбинировать.
Технически мне совершенно понятно, что симуляция непрерывной ("параллельной") системы суть приближение, а уж насколько оно "адекватно"... Самолёты на автопилоте как-то летают, автомобиле на круиз контроле худо-бедно ездят, всё это достаточно адекватно симулируется с достаточной степенью точности. Степень "адекватности" модели для меня — это степень расхождения (отклонения) симуляции и реальной системы, которое может быть измерено. Степень же параллелизма — какое-то размытое эфемерное понятие. Параллелизм — он либо есть либо нет, либо просто выглядит так, как будто он есть, хотя его нет. В остальном вроде всё достаточно понятно, ну мне во всяком случае.
Я, признаться, совершенно не понял сути вашей проблемы из набора приведённых графиков.
Совершенно очевидно, что если вносить задержки, то мы будем получать различные эффекты. Скажем, алкоголь, неумеренно принятый накануне в тяпницу вносит определённую задержку в контур управления, так что наливая наутро стакан воды для компенсации обезвоживания организма, я обычно переливаю выше краёв.
Ну а если серьёзно, то нечёткая логика тут особо ни при чём, там довольно примитивный контроллер на два входа и один выход, и это первое же, что я проконтролировал, перекладывая код SimInTech на LabVIEW, так как там фактически библиотечные функции вне моего контроля (меня немного смутила "асимметрия" в параметрах контроллера, так что я довольно дотошно проверил, подавая на входы сгенерированные рампы и визуально контролируя форму сигнала на выходе, и там всё в общем честно, хотя расхождения и есть, но они незначительны). Если вам нужна реализация на плюсплюсах, то её вероятно можно найти готовую (на Питоне уж точно).
А вот дальше там два интегратора и обратная связь (кстати, интегратор в клапане мне кажется избыточным, можно обойтись и одним в баке, ну да ладно), и меняя шаг дискретизации мы также можем получить всё что душе угодно. Кстати, насколького я вижу, SimInTech автоматом подгоняет шаг интегрирования к шагу дискретизации, а вот в LabVIEW параметр dt интегратора настраиваемый:
так что я не только временнýю задержку могу получить, но и изменение амплитуды на выходе интегратора, если шаг интегрирования и шаг симуляции будут отличаться.
Вообще если вы по-какой-то причине не доверяете SimInTech, так возьмите Simulink, ведь пример SimInTech почти один в один взят вот отсюда:
И да, выходы контроллерва нечёткой логики тоже настроены слегка несимметрично (я имею ввиду close_slow/open_slow):
Ну и результат:
Если же начать накручивать параметры в симулинке, то, разумеется, тоже появятся всякие весёлые эффекты.
Либо вас смущает лёгкая специфика реализации на автоматах, но это вроде вот тут уже обсуждалось: Нечеткая логика и конечные автоматы против ПИД-регулятора. https://habr.com/ru/articles/500268/.
Короче, я не поленился, да скачал SimInTech, там взял этот пример, разве что добавил на график расхода обратного тока выход контроллера нечёткой логики для самоконтроля:
Собственно контроллер устроен вот так:
Там гаусс используется:
Правила выхода:
Переложил это дело на LabVIEW как есть:
Гаусс, к счастью там тоже поддерживается, вот два входа::
и
Выход настроен также как и в SimInTech:
Правила:
Я вижу тут маленькую ошибку в Antecedent connective и Consequent implication, но пусть будет, скриншоты переделывать лень, там влияние минимально, да и разобраться надо поглубже
Тут можно проверить:
Ну и вот, это SimInTech:
А это LabVIEW:
Визуализация клапана, что я взял из исходного LabVIEW примера, мне отчаянно не нравится, но пусть будет, я и так полдня угрохал, чтобы с этим хотя бы поверхностно разобраться. Как-то так.
Я, как обычно со своими пятью копейками, как пример нечёткой логики в графическом программировании (LabVIEW в данном случае). С Control and Simulation нечёткая логика там идёт из "коробки". вот некоторые примеры:
Блок-диаграмма пары баков с клапаном как есть из примера:
Вот как-то так оно работает:
Пример поинтереснее — парковка машины задним ходом в гараж:
Тут два контроллера нечёткой логики — один для езды передом, а второй — для езды задом, вот так это на передней панели выглядит:
Для настройки контроллеров там такая вот утилитка прилагается:
Надо будет на досуге долгими зимними вечерами переделать пример задней парковки в параллельную в качестве упражнения. Там и другие примеры есть, типа распознавания цветов или формы деталей на конвейере. Но я честно вообще не смотрел детально как оно там устроено, просто не было проекта, где я мог бы это вкорячить, как-то ПИД-регуляторами до сих пор обходился, так что оставлю примеры выше без комментариев. Вот доки (на английском) на всякий случай, если таки захочется полюбопытствовать - Fuzzy Logic.
Как владелец предыдущей модели reMarkable 2 (причем в комплекте с Marker Plus и Type Folio) не могу не заметить, что гаджет сильно переоценён, такой комплект сейчас обойдётся в 899 Евро.
Причём там довольно примитивное приложение-заметочник, и больше нет ничего, ни календаря, ни часов, ни органайзера. Поддерживает только pdf да epub, даже djvu нет. Кнопок листания нет. При зуммировании лагает нещадно. Облако платное, три евро в месяц. Разрешение экрана низкое — 229 точек на дюйм. Он на Линуксе, кстати. Умельцы расширяют функционал, на него по SSH можно зайти, хотя его довольно легко окирпичить. Я его купил давно по программе краудфандинга, тогда мне это сотни в четыре обошлось, и облако бесплатное. Мой, кстати, ещё тоньше - 4,7 мм, но без подсветки. Использую эпизодически, в основном детям домашку объяснять, ну и на совещаниях почирикать. На мой взгляд современный планшет на андроиде с пером с более высоким разрешением ничуть не хуже, а эта игрушка — для тех, кому денег не жалко. Но писать довольно приятно, это да — там покрытие такое чуть шершавое.
Новая функция — кнопка Camera Control сбоку. С ее помощью можно моментально включить камеру, сделать снимок,
Мой древний смартофон на четвёртом Андроиде, которому в этом году исполнится десять лет, хотя по очевидным причинам и не умеет в 4К и оптический зум, но всё же снисходительно посмеивается:
И да, у этой кнопки два положения, как у фотоаппаратов — при лёгком нажатии камера фокусируется и лочит экспозицию, а если прожать её до конца, то делает фотку или пишет видео. При долгом нажатии запускает приложение камеры. Под водой, кстати, удобно фотографировать, этот телефон можно полностью погружать в воду.
После прочтения поста я (каюсь, грешен) таки скачал упомянутую выше книгу Récoltes et Semailles (она гуглится на раз А. Гротендик - Урожаи и посевы file:epub), а сегодня, пока ждал машину супруги из ремонта, имел удовольствие ознакомиться и залип. Она переведена не полностью, но и той части, что я прочитал, достаточно, чтобы смело порекомендовать. Понравится, вероятно, не всем, но я не мог оторваться, тем более что я ещё помню Риманово многообразие, Группы Галуа, Гильбертовы пространства, это было в прошлой жизни универе, и эти фамилии встретятся в книге, а вот сам Гротендик во время учёбы как-то прошёл мимо. Но в принципе знания математики и не требуется чтобы прочитать, там "за жизнь" больше. На английский она тоже переведена, похоже, лишь фрагментарно, и я уже почти готов начать учить французский, чтобы прочесть труд полностью.
Как владелец не только планшетов, но и в том числе Onyx Boox Color на цветном e-ink, согласен с одной поправкой - на правильной читалке есть кнопки листания страниц. Листать по экрану мне отчаянно не нравится (не всегда срабатывает, отпечатки пальцев, и т.д.), так что Kindle Oasis - лучшее что у меня есть для чтения, это реально удобный форм фактор, особенно когда я его одел в нескользящий силиконовый чехольчик, а сзади прилепил этакую пимпочку, чтоб в открытой ладони держать. И да, меньше трёхсот точек на дюйм быть не должно.
Ношу android телефон с USB ЦАП-ом как второй, чтобы слушать через него то, что скачал, как в старые добрые времена (неудобно жесть)
Есть же High Res плееры, типа iBasso, FiiO, Astell & Kern, Hidizs, Sony... После того как мой старенький iBasso DX50 куда-то (простите за каламбур) проibasso, я себе взял отчаянно китайский Surfans F35, который по сути перелицованный Aigo Eros H05 с добавленным Bluetooth. Наушники Sennheiser HD599 с балансным кабелем 4,4 мм, либо дома на акустике Kenwood LS-880 A. На природе гриль пожарить и послушать — Bose SoundLink Max. Больше в общем-то и не надо, ну мне во всяком случае.
Я имел ввиду, что если была бы машина типа Теслы с огромной батареей, то её из бытовой розетки запаришься заряжать. А с гибридом — да, конечно, можно и из розетки, у меня за четыре с половиной часа полностью заряжается (либо медленно за ночь, иначе кое-где автоматы выбивает), но сдающие в общем просекли эту фишку и снимают показания счётчиков до и после, а при нынешних ценах на электричество и на такой малой ёмкости батареи экономия там почти никакая. Ну а на дальнюю электрозарядку на гибриде вообще смысла не имеет — она на полном заряде с кондиционером меньше 50 км проезжает. Дома у меня работодатель разрешает беплатно заряжать, чем я и пользуюсь и езжу только на электро, а в отпуске — больше вопрос удобства и комфорта, как удобнее заправлять и ездить. Наличие доп аккумулятора и электромотора на задней оси — это удобно, хотя в дальних путешествиях экономически, пожалуй, не очень выгодно из-за доп веса вкупе с периодической перегонкой "бензин в электро".
Я в данный момент в отпуске с семьёй, мы проехали с севера Германии на юг Франции на гибриде, чуть больше полутора тысяч км. Это наш второй летний отпуск на этой машине. Два очень больших преимущества гибрида — во-первых, тут сейчас +35-37, и я могу пойти в магазин и смело оставить собакена в машине с кондиционером, он работает от батареи, кроме того, когда мы на пляже, я могу всегда включить кондиционер за полчаса до ухода через приложение и сесть в прохладную машину, ДВС при этом выключен. Во-вторых, такой гибрид можно парковать на электрозарядках, я вот позавчера прямо в центре Лиона парковался за недорого, а так там парковки дорогие, да и мест не найти. Из недостатков — маленький бензобак, на 35 литров всего, приходится чуть чаще заправляться, где-то 450 км она проезжает, но это не беспокоит совершенно, так как собакену и путешественникам тоже короткие остановки нужны. Я в путешествии всегда езжу в режиме Save, это когда она заряжает батарейку на 90% от электромотора, он как генератор работает, оставляя немного для рекуперации, а при въезде в город переключаюсь на электро, чтобы поставить на зарядку с пустым аккумом (некоторые электрозаправки "штрафуют" повышенным ценником за стоянку без зарядки). Опять же на электроприводе по городу ездить ну очень комфортно. В общем доволен, а вот на чистом "электро" я слабо себе представляю путешествие без дотошного планирования. У нас же всё спонтанно — дети захотели посмотреть цветущие лавандовые поля и вот мы уже накрутили несколько сот км по Провансу. А сейчас мы снимаем домик в деревне и до ближайшей электрозаправки 26 км, и мне кажется неудобным ехать туда специально и ждать там ещё, пока оно зарядится.
Установил в виртуалку, в принципе норм. Только актуальная версия вроде 26100, у вас на скриншоте 26120 это insider preview похоже. Вот после всех обновлений:
Из любопытного, в процессе установки предлагает поиграть в игру:
А Илон и не должен быть в курсе, как о подобных финтах ушами не в курсе остальные 99.9% пользователей, которые о Shift+F10 не имеют никакого понятия.
Тут вопрос философский, остальные 99% пользователей просто следуют предлагаемой официальной инструкции (а нынче ноуты с предустановленной виндой аж в продуктовых магазинах продаются) и оно как-то у них работает. Переустановка в "чистое" состояние в общем тоже возможна.
Можно было бы посоветовать линукс, но это другое, в общем по ходу эксплуатации там консольных команд будет ещё больше надо (хотя это от дистрибутива и запросов зависит). В конце концов есть ещё Мас, я пару недель назад погонял 14.4.1 Sonoma в виртуалке немного с Xсode и LabVIEW поупражняться, там в общем всё норм, отторжения после Windows и Линукс не вызывает, особенно если Far Manager туда вкорячить.
Хотя в общем, мне тоже всё это не очень нравится, но такой уж современный мир, куда мы успешно приехаели. Я, кстати, не думаю, что в Теслах тоже прям всё вот так "открыто" для пользователей с разными запросами, там наверняка тоже ограничений - только в путь, и там уже Shift+F10 скорей всего не будет. Кто-то на реддите жаловался, что Теслу на суперчарджере без регистрации аккаунта не зарядить...
Эх, там очень по-дилетантски всё было с точки зрения js. Одно то, как я отладочную информацию поначалу выводил через fillText() прямо поверх картинки — сообщество будет ржать до слёз.
Фактически всё крутится вокруг одной-единственной строчки:
И, вероятно, профессионал может сразу сказать, что там получится, а вот я понял не сразу, мне пришлось завести десяток временных переменных типа let tmp1=Z&27, ну и с типами повозиться — там же мешанина из целых и плавающей точки. Кроме того, я использовал не только LabVIEW, но и эзотерический компилятор CVI (хотя gcc тоже задействовал). Там довольно много времени положить придётся, чтобы воссоздать промежуточные шаги, но может за пару выходных и напишу, я подумаю.
Вот спасибо, добрый вы человек! Как это дело увидел, так решил по-быстрому пребросить это дело на Си, а оттуда переложить на LabVIEW (просто хочется иметь в коллекции). Думал на час работы, но я глубоко ошибался. Вначале за утренним кофе я закинул js код в ИИ, чтобы получить на Си. Оно мне выдало вот так:
int main() {
int w = 99, t = 0, i, a, s, b, X, Y, Z, d;
for (t++, i = 6000; i--; ) {
// Simulate canvas drawing
printf("Drawing at (%d, %d)\n", i % w, i / w);
a = (i % w) / 50 - 1;
s = b = 1 - i / 4000.0;
X = t;
Y = Z = d = 1;
while (++Z < w && (Y < 6 - (32 < Z && 27 < X % w && X / 9 ^ Z / 8) * 8 % 46 || d || (s = (X & Y & Z) % 3 / Z, a = b = 1, d = Z / w))) {
Y -= b;
X += a;
}
}
return 0;
}
Не особо рабочий код, ясень пень. Я когда начал править, узнал много нового (до этого я на js вообще ни строчки не писал). Вообще я был свято уверен, что он "Си-подобный". Но нет, там есть милые отличия. Так что сначала пришлось поковыряться, code runner в vscode помог. Более-менее рабочий Си-код я только на следующий день получил. Ну а дальше дело техники, в LabVIEW оно ещё страшнее выглядит:
Но работает (я интерполяцию выключил, иначе гифка лошадиных размеров будет):
В общем от этого небольшого этюда получил удовольствие, спасибо за наводку.
Cosmic Desktop, что на Расте написан также используется в Pop_OS. В релиз он пока не вышел, но попробовать альфу уже можно - https://system76.com/cosmic. Для меня Pop_OS! - основной домашний Линукс, и на ней вполне можно работать (мне комфортно). Cosmic десктоп, я ,правда пока не пробовал.
И тем не менее я всё-же не до конца понимаю словосочетание "степень параллелизма" в вашей интерпретации. Для меня параллелизм — это когда что-то с чем-то выполняется параллельно. Два потока в компьютере, к примеру. Да, там есть тонкости типа псевдопараллельности в зависимости от модели многозададачности, но LabVIEW параллельна сама по себе априори и из коробки, вплоть до того, что отдельные циклы (автоматы, если хотите) там вообще на разные ядра процессора раскидать можно и они будут выполняться параллельно (можно с синхронизацией, можно и без). Что значит "степень параллелизма?"
Но в контексте конкретно данного обсуждения я, кажется, начинаю вас понимать, и вот мне кажется, что вы в какой-то мере подменяете понятия "непрерывности/дискретности" понятиями "параллельно/последовательно". Вероятно вы считаете автоматы клапана и бака некими "параллельными" системами с "мгновенной" реакцией.
Давайте в качестве примера упростим всё до предела, рассмотрим сливной бачок унитаза. Там есть кнопка слива, поплавок и клапан, соединённый с поплавком. Чем ниже уровень воды, тем сильнее открывается клапан. Нас интересует уровень воды как функция времени после нажатия кнопки, определённая на временнóм участке до следующего наполнения. Это типичная непрерывная (аналоговая, если будет угодно) система. Чтобы хоть как-то проконтролировать нашу модель, мы вкорячим туда ардуинку, замеряющую уровень в определённые моменты времени. Понятно, что если мы будем менять частоту опроса ардуинки, то на систему это никак не повлияет, разве что график станет грубее. Также и в симуляции, если мы меняем частоту дискретизации, но модель возвращает одни и те же значения в одни и те же моменты времени, то это непрерывная модель. Я могу хоть через пять секунд попросить время и моделб мне скажет количество воды в этот момент.Всё просто.
Теперь мы слегка изменим наш бачок — добавим сервомотор, и ардуинка теперь будет не просто опрашивать уровень поплавка, но будет управлять мотором, подключённому к клапану. В этом месте мы внесли дискретность в наше устройство, причём не только временнýю, но и по значениям (что поплавок, что серва имеют ограниченный набор допустимых значений). Вот теперь время цикла ардуинки будет очень даже влиять на результат — если я поставлю пять секунд, то мало того, что бачок начнёт наполняться с задержкой, он ещё и запросто может переполниться. Очевидным образом при уменьшении времени дискретизации (увеличении частоты) наша система будет ближе и лучше приближаться к непрерывной (догонит ли Ахиллес черепаху?). Я так понял из вашего отчёта выше, что при 0,01 сек это примерно и произошло и "диаграммы совпали идеально".
Пока что всё просто, это просто азы САУ. Современные средства симуляции позволяют моделировать оба типа систем, равно как и смешанные, гибридные. Тот скриншот, что я показал в комменте к предыдущему посту — это классический пример симуляции дискретной, или последовательной, если будет угодно. Я подогнал результат под SimInTech, но меняя время дискретизации, я безусловно буду влиять на результат. Там всё исполнение в цикле идёт последовательно — вычисление управляющего воздействия контроллером нечёткой логики -> вычисление значений уровня воды и потока, и на следующей итерации (такте) передача их в контроллер (там сдвиговый регистр), и так далее по кругу, никакой "параллельности" там нет и в помине.
Однако LabVIEW Control Design and Simulation Module умеет и в непрерывную систему. Я не стал усложнять там коммент, но установка этого модуля добавляет специальный цикл для симуляции, и вот в нём возможно соединить выход напрямую с входом вот таким образом (что в общем противоречит парадигме потоков данных):
Но это даёт нам ту самую "параллельность" (хотя бы визуальную), когда выход мгновенно распространяется на вход, как если бы наш поплавок был жёстко соединён с клапаном. На самом деле авторы тулкита просто вдохновились Симулинком.
Для симуляции дискретной системы там свои отдкльные инструменты (поэтому и примеры отдельно для разных типов и инструменты для непрерывных и дискретных систем разные).
Цикл симуляции, кстати, универсален, вот посмотрите на его свойства, непрерывное и дискретное время раздельно:
Как я уже отметил выше, при уменьшении времени дискретизации наша дискретная система начинает приближаться к непрерывной, но расчёт с использованием очень большого количества шагов непродуктивен с точки зрения разбазаривания вычислительных ресурсов, поэтому тут всё хитрее — используется Рунге-Кутта с переменным шагом, и шаг уменьшается лишь на сильных изменениях. Так что симуляция в общем всегда дискретна, просто шаг очень маленький. При этом я могу задать требуемую точность симуляции, как относительную, так и абсолютную, а LabVIEW сама подгонит необходимый шаг. Документация: https://www.ni.com/docs/en-US/bundle/labview-control-design-and-simulation-module/page/lvsim/sim_configparams.html?srsltid=AfmBOopYUDq60ORMmPloKvwHHDw7du6r_GpWTyGoCd1bOwyr6plxTNRH Дискретный шаг на симуляцию непрерывной системы не влияет, а лишь на количество данных (но в точках отсчёта данные должны быть валидны).
Если же я выполняю симуляцию чисто дискретной системы, то переключусь вот так:
А так, кстати, там вот что доступно:
(надо будет на досуге разобраться с остальными, а то кроме Рунге-Кутта да Эйлера ничё не знаю). Вот это всё или почти всё есть и в Simulink в той или иной форме. Там, к примеру, также как и в LabVIEW есть как дискретный, так и непрерывный интегратор (https://de.mathworks.com/help/sps/ref/integratordiscreteorcontinuous.html).
SimInTech если верить документации также умеет симулировать как дискретные так и непрерывные системы, причём их можно комбинировать.
Технически мне совершенно понятно, что симуляция непрерывной ("параллельной") системы суть приближение, а уж насколько оно "адекватно"... Самолёты на автопилоте как-то летают, автомобиле на круиз контроле худо-бедно ездят, всё это достаточно адекватно симулируется с достаточной степенью точности. Степень "адекватности" модели для меня — это степень расхождения (отклонения) симуляции и реальной системы, которое может быть измерено. Степень же параллелизма — какое-то размытое эфемерное понятие. Параллелизм — он либо есть либо нет, либо просто выглядит так, как будто он есть, хотя его нет. В остальном вроде всё достаточно понятно, ну мне во всяком случае.
Я, признаться, совершенно не понял сути вашей проблемы из набора приведённых графиков.
Совершенно очевидно, что если вносить задержки, то мы будем получать различные эффекты. Скажем, алкоголь, неумеренно принятый накануне в тяпницу вносит определённую задержку в контур управления, так что наливая наутро стакан воды для компенсации обезвоживания организма, я обычно переливаю выше краёв.
Ну а если серьёзно, то нечёткая логика тут особо ни при чём, там довольно примитивный контроллер на два входа и один выход, и это первое же, что я проконтролировал, перекладывая код SimInTech на LabVIEW, так как там фактически библиотечные функции вне моего контроля (меня немного смутила "асимметрия" в параметрах контроллера, так что я довольно дотошно проверил, подавая на входы сгенерированные рампы и визуально контролируя форму сигнала на выходе, и там всё в общем честно, хотя расхождения и есть, но они незначительны). Если вам нужна реализация на плюсплюсах, то её вероятно можно найти готовую (на Питоне уж точно).
А вот дальше там два интегратора и обратная связь (кстати, интегратор в клапане мне кажется избыточным, можно обойтись и одним в баке, ну да ладно), и меняя шаг дискретизации мы также можем получить всё что душе угодно. Кстати, насколького я вижу, SimInTech автоматом подгоняет шаг интегрирования к шагу дискретизации, а вот в LabVIEW параметр dt интегратора настраиваемый:
так что я не только временнýю задержку могу получить, но и изменение амплитуды на выходе интегратора, если шаг интегрирования и шаг симуляции будут отличаться.
Вообще если вы по-какой-то причине не доверяете SimInTech, так возьмите Simulink, ведь пример SimInTech почти один в один взят вот отсюда:
Water Level Control in a Tank
Там вот так всё устроено:
И да, выходы контроллерва нечёткой логики тоже настроены слегка несимметрично (я имею ввиду close_slow/open_slow):
Ну и результат:
Если же начать накручивать параметры в симулинке, то, разумеется, тоже появятся всякие весёлые эффекты.
Либо вас смущает лёгкая специфика реализации на автоматах, но это вроде вот тут уже обсуждалось: Нечеткая логика и конечные автоматы против ПИД-регулятора. https://habr.com/ru/articles/500268/.
Короче, я не поленился, да скачал SimInTech, там взял этот пример, разве что добавил на график расхода обратного тока выход контроллера нечёткой логики для самоконтроля:
Собственно контроллер устроен вот так:
Там гаусс используется:
Правила выхода:
Переложил это дело на LabVIEW как есть:
Гаусс, к счастью там тоже поддерживается, вот два входа::
и
Выход настроен также как и в SimInTech:
Правила:
Я вижу тут маленькую ошибку в Antecedent connective и Consequent implication, но пусть будет, скриншоты переделывать лень, там влияние минимально, да и разобраться надо поглубже
Тут можно проверить:
Ну и вот, это SimInTech:
А это LabVIEW:
Визуализация клапана, что я взял из исходного LabVIEW примера, мне отчаянно не нравится, но пусть будет, я и так полдня угрохал, чтобы с этим хотя бы поверхностно разобраться. Как-то так.
О, спасибо огромное, любопытно.
Я, как обычно со своими пятью копейками, как пример нечёткой логики в графическом программировании (LabVIEW в данном случае). С Control and Simulation нечёткая логика там идёт из "коробки". вот некоторые примеры:
Блок-диаграмма пары баков с клапаном как есть из примера:
Вот как-то так оно работает:
Пример поинтереснее — парковка машины задним ходом в гараж:
Тут два контроллера нечёткой логики — один для езды передом, а второй — для езды задом, вот так это на передней панели выглядит:
Для настройки контроллеров там такая вот утилитка прилагается:
Надо будет на досуге долгими зимними вечерами переделать пример задней парковки в параллельную в качестве упражнения. Там и другие примеры есть, типа распознавания цветов или формы деталей на конвейере. Но я честно вообще не смотрел детально как оно там устроено, просто не было проекта, где я мог бы это вкорячить, как-то ПИД-регуляторами до сих пор обходился, так что оставлю примеры выше без комментариев. Вот доки (на английском) на всякий случай, если таки захочется полюбопытствовать - Fuzzy Logic.
Как владелец предыдущей модели reMarkable 2 (причем в комплекте с Marker Plus и Type Folio) не могу не заметить, что гаджет сильно переоценён, такой комплект сейчас обойдётся в 899 Евро.
Причём там довольно примитивное приложение-заметочник, и больше нет ничего, ни календаря, ни часов, ни органайзера. Поддерживает только pdf да epub, даже djvu нет. Кнопок листания нет. При зуммировании лагает нещадно. Облако платное, три евро в месяц. Разрешение экрана низкое — 229 точек на дюйм. Он на Линуксе, кстати. Умельцы расширяют функционал, на него по SSH можно зайти, хотя его довольно легко окирпичить. Я его купил давно по программе краудфандинга, тогда мне это сотни в четыре обошлось, и облако бесплатное. Мой, кстати, ещё тоньше - 4,7 мм, но без подсветки. Использую эпизодически, в основном детям домашку объяснять, ну и на совещаниях почирикать. На мой взгляд современный планшет на андроиде с пером с более высоким разрешением ничуть не хуже, а эта игрушка — для тех, кому денег не жалко. Но писать довольно приятно, это да — там покрытие такое чуть шершавое.
Мой древний смартофон на четвёртом Андроиде, которому в этом году исполнится десять лет, хотя по очевидным причинам и не умеет в 4К и оптический зум, но всё же снисходительно посмеивается:
И да, у этой кнопки два положения, как у фотоаппаратов — при лёгком нажатии камера фокусируется и лочит экспозицию, а если прожать её до конца, то делает фотку или пишет видео. При долгом нажатии запускает приложение камеры. Под водой, кстати, удобно фотографировать, этот телефон можно полностью погружать в воду.
После прочтения поста я (каюсь, грешен) таки скачал упомянутую выше книгу Récoltes et Semailles (она гуглится на раз А. Гротендик - Урожаи и посевы file:epub), а сегодня, пока ждал машину супруги из ремонта, имел удовольствие ознакомиться и залип. Она переведена не полностью, но и той части, что я прочитал, достаточно, чтобы смело порекомендовать. Понравится, вероятно, не всем, но я не мог оторваться, тем более что я ещё помню Риманово многообразие, Группы Галуа, Гильбертовы пространства, это было в
прошлой жизниунивере, и эти фамилии встретятся в книге, а вот сам Гротендик во время учёбы как-то прошёл мимо. Но в принципе знания математики и не требуется чтобы прочитать, там "за жизнь" больше. На английский она тоже переведена, похоже, лишь фрагментарно, и я уже почти готов начать учить французский, чтобы прочесть труд полностью.Как владелец не только планшетов, но и в том числе Onyx Boox Color на цветном e-ink, согласен с одной поправкой - на правильной читалке есть кнопки листания страниц. Листать по экрану мне отчаянно не нравится (не всегда срабатывает, отпечатки пальцев, и т.д.), так что Kindle Oasis - лучшее что у меня есть для чтения, это реально удобный форм фактор, особенно когда я его одел в нескользящий силиконовый чехольчик, а сзади прилепил этакую пимпочку, чтоб в открытой ладони держать. И да, меньше трёхсот точек на дюйм быть не должно.
Вероятнее всего трёхэтажный, потому что в Лассёре большинство домов как раз таки двухэтажные, если по гуглопанорамам погулять:
А дом Гротендика в этом городе выглядит сбоку вот так:
Просто у французов первый этаж, что на земле, не считается, он типа "нулевой" — un rez-de-chaussée (как и у немцев — Erdgeschoß).
У меня вот такая шпаргалка с прошлой работы завалялась, может вдруг пригодится кому:
И MPL — это вроде "Mozilla Public License", a Microsoft Public License — это Ms-PL или MS-PL.
Есть же High Res плееры, типа iBasso, FiiO, Astell & Kern, Hidizs, Sony... После того как мой старенький iBasso DX50 куда-то (простите за каламбур) проibasso, я себе взял отчаянно китайский Surfans F35, который по сути перелицованный Aigo Eros H05 с добавленным Bluetooth. Наушники Sennheiser HD599 с балансным кабелем 4,4 мм, либо дома на акустике Kenwood LS-880 A. На природе гриль пожарить и послушать — Bose SoundLink Max. Больше в общем-то и не надо, ну мне во всяком случае.
Не, Мини Купер Кантримэн гибрид:
Я имел ввиду, что если была бы машина типа Теслы с огромной батареей, то её из бытовой розетки запаришься заряжать. А с гибридом — да, конечно, можно и из розетки, у меня за четыре с половиной часа полностью заряжается (либо медленно за ночь, иначе кое-где автоматы выбивает), но сдающие в общем просекли эту фишку и снимают показания счётчиков до и после, а при нынешних ценах на электричество и на такой малой ёмкости батареи экономия там почти никакая. Ну а на дальнюю электрозарядку на гибриде вообще смысла не имеет — она на полном заряде с кондиционером меньше 50 км проезжает. Дома у меня работодатель разрешает беплатно заряжать, чем я и пользуюсь и езжу только на электро, а в отпуске — больше вопрос удобства и комфорта, как удобнее заправлять и ездить. Наличие доп аккумулятора и электромотора на задней оси — это удобно, хотя в дальних путешествиях экономически, пожалуй, не очень выгодно из-за доп веса вкупе с периодической перегонкой "бензин в электро".
Я в данный момент в отпуске с семьёй, мы проехали с севера Германии на юг Франции на гибриде, чуть больше полутора тысяч км. Это наш второй летний отпуск на этой машине. Два очень больших преимущества гибрида — во-первых, тут сейчас +35-37, и я могу пойти в магазин и смело оставить собакена в машине с кондиционером, он работает от батареи, кроме того, когда мы на пляже, я могу всегда включить кондиционер за полчаса до ухода через приложение и сесть в прохладную машину, ДВС при этом выключен. Во-вторых, такой гибрид можно парковать на электрозарядках, я вот позавчера прямо в центре Лиона парковался за недорого, а так там парковки дорогие, да и мест не найти. Из недостатков — маленький бензобак, на 35 литров всего, приходится чуть чаще заправляться, где-то 450 км она проезжает, но это не беспокоит совершенно, так как собакену и путешественникам тоже короткие остановки нужны. Я в путешествии всегда езжу в режиме Save, это когда она заряжает батарейку на 90% от электромотора, он как генератор работает, оставляя немного для рекуперации, а при въезде в город переключаюсь на электро, чтобы поставить на зарядку с пустым аккумом (некоторые электрозаправки "штрафуют" повышенным ценником за стоянку без зарядки). Опять же на электроприводе по городу ездить ну очень комфортно. В общем доволен, а вот на чистом "электро" я слабо себе представляю путешествие без дотошного планирования. У нас же всё спонтанно — дети захотели посмотреть цветущие лавандовые поля и вот мы уже накрутили несколько сот км по Провансу. А сейчас мы снимаем домик в деревне и до ближайшей электрозаправки 26 км, и мне кажется неудобным ехать туда специально и ждать там ещё, пока оно зарядится.
Установил в виртуалку, в принципе норм. Только актуальная версия вроде 26100, у вас на скриншоте 26120 это insider preview похоже. Вот после всех обновлений:
Из любопытного, в процессе установки предлагает поиграть в игру:
Прикольно, я раньше не видел:
Тут вопрос философский, остальные 99% пользователей просто следуют предлагаемой официальной инструкции (а нынче ноуты с предустановленной виндой аж в продуктовых магазинах продаются) и оно как-то у них работает. Переустановка в "чистое" состояние в общем тоже возможна.
Можно было бы посоветовать линукс, но это другое, в общем по ходу эксплуатации там консольных команд будет ещё больше надо (хотя это от дистрибутива и запросов зависит). В конце концов есть ещё Мас, я пару недель назад погонял 14.4.1 Sonoma в виртуалке немного с Xсode и LabVIEW поупражняться, там в общем всё норм, отторжения после Windows и Линукс не вызывает, особенно если Far Manager туда вкорячить.
Хотя в общем, мне тоже всё это не очень нравится, но такой уж современный мир, куда мы успешно приехаели. Я, кстати, не думаю, что в Теслах тоже прям всё вот так "открыто" для пользователей с разными запросами, там наверняка тоже ограничений - только в путь, и там уже Shift+F10 скорей всего не будет. Кто-то на реддите жаловался, что Теслу на суперчарджере без регистрации аккаунта не зарядить...
Илон просто не в курсе, что жамкнув по Shift+F10 можно создать пользователя буквально несколькими командами и помимо oobe\bypassnro:
В этом месте вот как-то так:
C:\Windows\System32>net user Andrey /add
C:\Windows\System32>net localgroup Administrators Andrey /add
C:\Windows\System32>net user Andrey <пароль> /add
C:\Windows\System32>msoobe.exe && shutdown.exe -r
Эх, там очень по-дилетантски всё было с точки зрения js. Одно то, как я отладочную информацию поначалу выводил через
fillText()
прямо поверх картинки — сообщество будет ржать до слёз.Фактически всё крутится вокруг одной-единственной строчки:
И, вероятно, профессионал может сразу сказать, что там получится, а вот я понял не сразу, мне пришлось завести десяток временных переменных типа let tmp1=Z&27, ну и с типами повозиться — там же мешанина из целых и плавающей точки. Кроме того, я использовал не только LabVIEW, но и эзотерический компилятор CVI (хотя gcc тоже задействовал). Там довольно много времени положить придётся, чтобы воссоздать промежуточные шаги, но может за пару выходных и напишу, я подумаю.
Вот спасибо, добрый вы человек! Как это дело увидел, так решил по-быстрому пребросить это дело на Си, а оттуда переложить на LabVIEW (просто хочется иметь в коллекции). Думал на час работы, но я глубоко ошибался. Вначале за утренним кофе я закинул js код в ИИ, чтобы получить на Си. Оно мне выдало вот так:
Не особо рабочий код, ясень пень. Я когда начал править, узнал много нового (до этого я на js вообще ни строчки не писал). Вообще я был свято уверен, что он "Си-подобный". Но нет, там есть милые отличия. Так что сначала пришлось поковыряться, code runner в vscode помог. Более-менее рабочий Си-код я только на следующий день получил. Ну а дальше дело техники, в LabVIEW оно ещё страшнее выглядит:
Но работает (я интерполяцию выключил, иначе гифка лошадиных размеров будет):
В общем от этого небольшого этюда получил удовольствие, спасибо за наводку.