Јединица 10 / 11

Аутоматизација инжењерских прорачуна са Питхон-ом

Добици:

  • Способност аутоматизације инжењерског прорачуна, управљања јединицама и обраде података помоћу Питхон кода који покреће АИ
  • Могућност валидације АИ кода помоћу провере јединица, тестирања познатих резултата и ивичних случајева
  • Способност стицања навике израде поновљивих, следљивих и верзијама контролисаних докумената налога

У машинству, иста калкулација се ради изнова и изнова: напрезања породице делова, снага пумпе за низ радних тачака, табеле својстава на различитим температурама. Ручно ово радити је споро и склоно грешкама. Питхон (програмски језик који се лако учи са богатим библиотекама за инжењеринг) аутоматизује ове итерације; То чини налог поновљивим, следљивим и контролисаним верзијама. Вештачка интелигенција (АИ) Питхон је невероватно брз у генерисању кода: претварање формуле у функцију, додавање управљања јединицама, читање података, цртање графикона. Али овде постоји опасна заблуда: само зато што код ради без грешака не значи да се правилно израчунава. АИ код може тихо да врати нетачне резултате због нетачне конверзије јединица, нетачне формуле или у ивичним случајевима, а програм ће наставити да ради без икаквих грешака. Зато сваки инжењерски код произведен са АИ; Уноси теста са познатим резултатима су непоуздани без верификације провером јединице (величине) и испитивањем ивица. У овој јединици ћете научити како да безбедно подесите аутоматизацију Питхон налога помоћу вештачке интелигенције.

Зашто кодни налог? Следљивост и репродуктивност

Ручни прорачун је једнократан; Када се унос промени, то се ради од нуле и међукораци се губе. Прорачун урађен у коду је као документ: улази, формуле и излази су јасно написани; промените унос и добијете нови резултат у року од неколико секунди; Са контролом верзија (као гит), може се пратити „шта сам израчунао са којом вредношћу на који датум“. Ово је непроцењиво у смислу контроле и одговорности. Али ова моћ зависи од исправности кода; Погрешан код производи погрешан резултат, такође поновљиво и брзо.

Савет: Напишите тест за сваку рачунску функцију са познатим истинитим резултатом поред ње (ассерт у Питхон-у). На пример, ваша функција напрезања треба да даје 28,1 МПа у познатом узорку. Овај тест вас одмах упозорава ако нешто покварите када промените код у будућности. Инжењерски код који није тестиран је непроверен налог.

Управљање волуменом: најчешћи извор грешке

У инжењерском коду већина грешака потиче од јединица: Н са кН, м са мм, Па са МПа, што се може збунити фактором од 1000 или 1.000.000. Постоје две одбране. Први је дисциплина: одабир система једне јединице од почетка (нпр. Н, мм, МПа) и претварање свих улаза у њега и додавање јединица називима променљивих (дужина_мм, сила_Н). Други је алат: библиотека попут пинт носи јединице унутар кода и хвата недоследну операцију као грешку.

Приступ

Како то ради

Предност

Дисциплина именовања

као сила_Н, дужина_мм

Једноставно, без зависности

систем једне јединице

Све је претворено у Н-мм-МПа

Једноставност, брзина

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

Помера јединицу по променљивој

Аутоматски хвата недоследност

Тест познатих резултата

референца са тврдњом

Хвата грешку формуле/јединице

Опрез: Конверзија јединица можда недостаје или је нетачна у коду генерисаном АИ и код ће и даље „радити“. На пример, ако је пречник мм и очекује се да ће површина бити м², резултат ће одступити 1.000.000 пута, али програм неће дати грешку. Пре покретања кода, коментаришите јединице улаза и излаза; затим дати резултат познатим примером.

Корак по корак: Код налога који може да се провери помоћу вештачке интелигенције

  1. Разјасните проблем и систем јединица. Улази, излази, јединице.
  2. Генеришите функцију. Појединачни одговорни, интерпретативни, уједињени.
  3. Додајте познате резултате теста. Тврдите референтним примером.
  4. Пробајте ивичне случајеве. Нула, негативан, веома велики/мали улаз.
  5. Урадите проверу јединице. Да ли јединица излаза одговара ономе што се очекује?
  6. Документ и верзија. Претпоставке, извор, датум; следљивост са гит-ом.

Промпт који генерише функције и тестове

Улога: Искусни Питхон програмер који пише инжењерске прорачуне. Задатак: Написати функцију која израчунава максимални напон савијања у конзолној греди правоугаоног пресека. Улаз: Ф (Н), Л (мм), б (мм), х (мм). Излаз: сигма (МПа). Конвенција: Систем јединица Н-мм-МПа; коментарисати јединицу сваког уноса. Правило: користите И = б*х^3/12 и сигма = М*ц/И; коментаришите кораке.Правило: Додајте тест са ПОЗНАТИМ РЕЗУЛТАТОМ: сигма ~28,1 МПа за Ф=500,Л=300,б=20,х=40; Проверите са ассерт (мала толеранција).

Промпт о статусу ивице

Додајте провере ивица великих и малих слова у горњу функцију:- Ако су б, х или Л нула или негативни, дајте значајну грешку (повећајте ВалуеЕррор).- Коментирајте ако постоји проблем преливања/прецизности са веома великим/малим улазима. Такође додајте још 3 различита тест улаза и напишите очекивани резултат; објасни резултате на начин да их могу ручно верификовати.

Упозорење о безбедности јединице (пинта).

Исти налог безбедно за јединицу са библиотеком 'пинта'. Нека су улази дефинисани у јединицама (нпр. 500 * урег.њутн). Претворите излаз у МПа и одштампајте га. Додајте мали пример који показује како пинт не успе када се добије унос са погрешном јединицом.

Промпт за проверу кода

Критикујте мој код за инжењерски прорачун испод из перспективе прегледа кода, не слажете се са мном. Конкретно: да ли је конверзија јединица тачна, да ли је формула тачна, да ли су узети у обзир ивични случајеви (нула, негативни), да ли су тестови заиста потврдни? За сваки налаз напишите како да га поправите.[цоде]

Слаба порука / јака промпт

Слабо обавештење:

Напишите Питхон код за прорачун стреса.

Нема избора јединица, формула, улазних дефиниција и тестова; АИ генерише код који ради, али није верификован и чија јединица је непозната.

Снажан упит:

Напишите функцију напона савијања у конзолној греди. Улаз Ф(Н), Л(мм), б(мм),х(мм); излазна сигма (МПа). Систем Н-мм-МПа, наведите сваку јединицу у коментару. Додајте тест са познатим резултатима (Ф=500, Л=300, б=20, х=40 → ~28,1 МПа, потврдите). Дајте грешку на нултом/негативном уносу. Тумачите рубне случајеве.

Други упит захтева систем јединица, формулу, улазе, тест и ивичне случајеве; То чини код проверљивим.

Три мини кућишта (по бројевима)

Случај 1 - Грешка у тихој јачини звука. Калкулација површине коју производи АИ узима пречник у мм и даје мм² са пи*д**2/4, али следећи ред га ставља у формулу која очекује м²; Код ради без грешака и даје стрес 1.000.000 пута мањи. Када инжењер покрене тест са познатим резултатом (ассерт абс(сигма-28.1)<0,5), тест експлодира и грешка је ухваћена. Да није било теста, погрешан резултат би непримећен ушао у извештај. Лекција: радни код = тачан код.

Случај 2 - Едге стате пад. У коду који петља за фамилију делова, дебљина х=0 се уписује у једном реду; Када је И = б*х**3/12 = 0, сигма = М*ц/И даје дељење са нултом грешком. Захваљујући контроли иф х<=0: раисе ВалуеЕррор коју је додала АИ, код се зауставља са смисленом поруком и не производи инф. Лекција: унапред рукујте ивичним случајевима.

Случај 3 - Добитак поновљивости. Инжењеру је требало пола дана да ручно израчуна снагу пумпе за 40 различитих радних тачака. Написана у АИ, скрипта чита ЦСВ, израчунава снагу за сваку линију и верификује познату тачку са ассерт-ом, смањујући рад на ~2 минута и записујући резултате у датотеку која се може пратити. Када се унос промени, цела табела се ажурира сваке секунде. Лекција: верификована аутоматизација је и брза и поуздана.

Уобичајене грешке

  • Заблуда „Радило = исправно“: Мислити да је код који ради без грешака исправан.
  • Не писање тестова: ослањање на код без референтног теста са познатим резултатом.
  • Двосмисленост јединица: Остављање улазно/излазних јединица неинтерпретираним, прескакање конверзије.
  • Игнорисање ивичних случајева: тиха грешка или пад на нултом/негативном уносу.
  • Недокументовање извора/претпоставке: Не записивање извора и претпоставке коришћене формуле.
  • Без верзионисања: Остављање налога као једнократне датотеке без да се може пратити (гит).

Укратко

  • Питхон чини инжењерско израчунавање поновљивим, следљивим и контролисаним верзијама.
  • АИ је веома брз у генерисању кода; Али чињеница да код ради без грешака не значи да правилно израчунава.
  • Сваки код треба да буде валидиран кроз тестирање познатих резултата, проверу јединица и ивичне случајеве.
  • Јединичне грешке су најчешћи и најподмуклији извор грешака; Одбрана по систему једне јединице, номенклатури или пинт.
  • Потврђена аутоматизација штеди време и даје самопоуздање; Непроверени код је опасан.

Задатак апликације

Изаберите понављајући инжењерски прорачун (као што је стрес, снага пумпе, топлотно оптерећење). Напишите Питхон функцију за АИ која врши овај прорачун; Прокоментаришите јединицу сваког улаза и излаза и додајте тест потврђивања са познатим резултатом. Покрените тест и видите да ли пролази. Затим урадите још две провере: покушајте са ивичним случајем (нула или негативан улаз) да бисте проверили да ли код враћа значајну грешку и ручно наведите јединицу излаза у примеру. Ако је могуће, имајте и верзију безбедну за јединицу произведену у пинти. На крају, додајте претпоставке прорачуна, извор формуле и датум у код као кратак наслов и напишите зашто овај код још увек захтева одобрење инжењера.

контролна листа

  • [ ] Улазне и излазне јединице су јасно документоване у коду; изабран је једноструки систем.
  • [ ] Тест (ассерт) са познатим резултатом је додат и прошао.
  • [ ] Покушан је најмање један ивични случај (нула/негативан); Код је дао значајну грешку.
  • [ ] Јединица излаза је дата у ручном примеру (без претпоставке „радио = исправно“).
  • [ ] Извор формуле, претпоставке и датум забележени у коду.
  • [ ] Налог који се може пратити/пратити; коначно одобрење препуштено је инжењеру.