единица 10 / 11

Автоматизация на инженерните изчисления с Python

Печалби:

  • Възможност за автоматизиране на инженерни изчисления, управление на единици и обработка на данни с Python код, захранван от AI
  • Възможност за валидиране на AI код с проверка на единици, тестване на известни резултати и крайни случаи
  • Възможност за придобиване на навика за създаване на повтарящи се, проследими и контролирани от версията документи за сметка

В машиностроенето едно и също изчисление се прави отново и отново: напрежения на група части, мощност на помпата за диапазон от работни точки, таблици на свойствата при различни температури. Правенето им ръчно е както бавно, така и податливо на грешки. Python (лесен за научаване език за програмиране с богати библиотеки за инженерство) автоматизира тези итерации; Това прави сметката повторяема, проследима и контролирана версия. Изкуственият интелект (AI) Python е невероятно бърз в генерирането на код: преобразуване на формула във функция, добавяне на управление на единици, четене на данни, чертане на графики. Но тук има опасно погрешно схващане: това, че кодът работи без грешки, не означава, че изчислява правилно. AI кодът може тихо да върне неправилни резултати поради неправилно преобразуване на единици, неправилна формула или в крайни случаи и програмата ще продължи да работи без никакви грешки. Ето защо всеки инженерен код, произведен с AI; Тестовите входни данни с известни резултати са ненадеждни без проверка чрез проверка на единица (размер) и изпитания на крайни случаи. В този модул ще научите как безопасно да настроите автоматизацията на Python акаунт с AI.

Защо Code Account? Проследяемост и възпроизводимост

Ръчното изчисление е еднократно; Когато даден вход се промени, това се прави от нулата и междинните стъпки се губят. Изчислението, извършено в код, е като документ: входовете, формулите и изходите са ясно написани; променяте вход и получавате нов резултат в рамките на секунди; С контрол на версиите (като git), може да се проследи „какво съм изчислил с коя стойност на коя дата“. Това е безценно по отношение на контрола и отчетността. Но тази мощност зависи от коректността на кода; Грешен код води до грешен резултат, също така възпроизводимо и бързо.

Съвет: Напишете тест за всяка изчислителна функция с известен истински резултат до нея (утвърждаване в Python). Например, вашата функция на напрежение трябва да даде 28,1 MPa в известна проба. Този тест незабавно ви предупреждава, ако счупите нещо, когато промените кода в бъдеще. Инженерният код, който не е тестван, е непроверен акаунт.

Управление на обема: Най-честият източник на грешка

В инженерния код повечето от грешките идват от единици: N с kN, m с mm, Pa с MPa, които могат да бъдат объркани с коефициент 1000 или 1 000 000. Има две защити. Първата е дисциплина: избиране на една система от единици от самото начало (напр. N, mm, MPa) и преобразуване на всички входове към нея и добавяне на единици към имената на променливите (length_mm, force_N). Вторият е инструментът: библиотека като pint носи единиците в кода и улавя непоследователната операция като грешка.

подход

Как работи

Предимство

Дисциплина при именуване

като сила_N, дължина_mm

Просто, без зависимости

единична система

Всички преобразувани в N-mm-MPa

Простота, бързина

пинта библиотека

Премества единица по променлива

Автоматично улавя несъответствието

Тест с известен резултат

справка с твърдение

Улавя грешка във формула/единица

Внимание: Преобразуването на единица може да липсва или да е неправилно в кода, генериран от AI, и кодът пак ще „работи“. Например, ако диаметърът е mm, а площта се очаква да бъде m², резултатът ще се отклони с 1 000 000 пъти, но програмата няма да даде грешка. Преди да стартирате кода, коментирайте единиците на входовете и изхода; след това предоставете резултата с известен пример.

Стъпка по стъпка: AI Проверяем код на акаунт

  1. Изяснете проблема и системата от единици. Входове, изходи, единици.
  2. Генерирайте функцията. Еднолична отговорна, тълкуваща, единна.
  3. Добавете тест с известни резултати. Уверете се с референтен пример.
  4. Опитайте крайни случаи. Нула, отрицателен, много голям/малък вход.
  5. Направете проверка на единица. Изходната единица съответства ли на очакваното?
  6. Документ и версия. Предположения, източник, дата; проследимост с git.

Подкана, която генерира функции и тестове

Роля: Опитен разработчик на Python, който пише инженерни изчисления. Задача: Напишете функция, която изчислява максималното напрежение на огъване в конзолна греда с правоъгълно напречно сечение. Вход: F (N), L (mm), b (mm), h (mm). Изход: сигма (MPa). Конвенция: Единична система N-mm-MPa; коментирайте единицата на всеки запис. Правило: използвайте I = b*h^3/12 и сигма = M*c/I; коментирайте стъпките.Правило: Добавете тест с ИЗВЕСТЕН ​​РЕЗУЛТАТ: сигма ~28,1 MPa за F=500,L=300,b=20,h=40; Проверете с assert (малък толеранс).

Подкана за състояние на Edge

Добавете проверки на крайните случаи към горната функция: - Ако b, h или L са нула или отрицателни, дайте значителна грешка (увеличете ValueError). - Коментирайте, ако има проблем с препълване/прецизност при много големи/малки входове. Също така добавете още 3 различни тестови входа и напишете очаквания резултат; обяснете резултатите по начин, по който мога да ги проверя ръчно.

Подкана за сигурност на устройството (пинта).

Unit-safe същия акаунт с библиотеката 'pint'. Нека входовете са определени в единици (напр. 500 * ureg.newton). Преобразувайте изхода в MPa и го отпечатайте. Добавете малък пример, показващ как пинтата се проваля, когато се въведе грешна единица.

Подкана за проверка на кода

Критикирайте моя код за инженерни изчисления по-долу от гледна точка на преглед на кода, не се съгласявайте с мен. По-конкретно: правилно ли е преобразуването на единица, правилна ли е формулата, взети ли са предвид крайните случаи (нула, отрицателен), тестовете наистина ли са потвърждаващи? За всяка констатация напишете как да я поправите.[code]

Слаба подкана / Силна подкана

Слаба подкана:

Напишете код на Python за изчисляване на напрежението.

Без избор на единици, формули, входни дефиниции и тестове; AI генерира код, който работи, но не е проверен и чиято единица е неизвестна.

Мощна подкана:

Напишете функцията на напрежението на огъване в конзолната греда. Вход F(N), L(mm), b(mm),h(mm); изходна сигма (MPa). Система N-mm-MPa, посочете всяка единица в коментар. Добавете тест с известни резултати (F=500, L=300, b=20, h=40 → ~28,1 MPa, потвърдете). Дава грешка при нулев/отрицателен вход. Тълкувайте крайни случаи.

Втората подкана изисква единица система, формула, входове, тест и крайни случаи; Това прави кода проверяем.

Три мини калъфа (по номера)

Случай 1 - Грешка при безшумен звук. Изчислението на площта, произведено от AI, взема диаметъра в mm и дава mm² с pi*d**2/4, но следващият ред го поставя във формула, която очаква m²; Кодът работи без грешки и дава 1 000 000 пъти по-нисък стрес. Когато инженерът проведе теста с известен резултат (assert abs(sigma-28.1)<0.5), тестът експлодира и грешката се улавя. Ако нямаше тест, грешният резултат щеше да влезе незабелязано в отчета. Урок: работещ код ≠ правилен код.

Случай 2 – Срив в крайно състояние. В кода, който се завърта за семейство части, дебелината h=0 се въвежда на един ред; Когато I = b*h**3/12 = 0, сигма = M*c/I дава грешка при деление на нула. Благодарение на контрола if h<=0: raise ValueError, добавен от AI, кодът спира със смислено съобщение и не произвежда безшумно инф. Урок: боравете с крайни случаи предварително.

Случай 3 - Увеличаване на повторяемостта. На инженер отне половин ден, за да изчисли ръчно мощността на помпата за 40 различни работни точки. Написан с AI, скриптът чете CSV, изчислява мощността за всеки ред и проверява известна точка с assert, намалявайки работата до ~2 минути и записвайки резултатите в проследим файл. Когато даден запис се промени, цялата таблица се актуализира всяка секунда. Урок: проверената автоматизация е едновременно бърза и надеждна.

Често срещани грешки

  • Заблуда „Работил = правилно“: Мисленето, че кодът, който работи без грешки, е правилен.
  • Без писане на тестове: Разчитане на код без референтен тест с известен резултат.
  • Неяснота на единицата: Оставяне на входно/изходните единици неинтерпретирани, пропускане на преобразуването.
  • Пренебрегване на крайни случаи: Тиха грешка или срив при нулев/отрицателен вход.
  • Недокументиране на източника/предположението: Незаписване на източника и предположението на използваната формула.
  • Без версии: Оставяне на акаунта като еднократен файл, без да го прави проследим (git).

В обобщение

  • Python прави инженерните изчисления повторими, проследими и контролирани версии.
  • AI е много бърз в генерирането на код; Но фактът, че кодът работи без грешки, не означава, че изчислява правилно.
  • Всеки код трябва да бъде валидиран чрез тестване с известни резултати, проверка на модули и крайни случаи.
  • Единичните грешки са най-честият и най-коварният източник на грешки; Защитавайте чрез единична система, номенклатура или пинта.
  • Валидирана автоматизация спестява време и дава увереност; Непровереният код е опасен.

Задача за приложение

Изберете повтарящо се инженерно изчисление (като напрежение, мощност на помпата, топлинно натоварване). Напишете функция на Python към AI, който прави това изчисление; Коментирайте единицата на всеки вход и изход и добавете тест за утвърждаване с известен резултат. Пуснете теста и вижте дали ще премине. След това направете още две проверки: опитайте крайния случай (нула или отрицателен вход), за да проверите дали кодът връща значителна грешка и ръчно предоставете единицата на изхода в пример. Ако е възможно, имайте и безопасна версия, произведена в пинта. Накрая добавете предположенията за изчислението, източника на формулата и датата към кода като кратко заглавие и напишете защо този код все още изисква одобрение от инженер.

контролен списък

  • [ ] Входните и изходните единици са ясно документирани в кода; беше избрана единична система.
  • [ ] Беше добавен и преминат тест (assert) с известен резултат.
  • [ ] Беше направен опит за поне един краен случай (нула/отрицателен); Кодът даде значителна грешка.
  • [ ] Изходната единица беше предоставена чрез ръчен пример (без да се приема, че „работи = правилно“).
  • [ ] Източник на формула, предположения и дата, отбелязани в кода.
  • [ ] Акаунтът може да бъде проследен/проследен; окончателното одобрение беше оставено на инженера.