Jednotka 10 / 11

Automatizácia inžinierskych výpočtov s Pythonom

zisky:

  • Schopnosť automatizovať inžiniersky výpočet, správu jednotiek a spracovanie údajov pomocou kódu Python poháňaného AI
  • Schopnosť overiť kód AI pomocou kontroly jednotiek, testovania známych výsledkov a okrajových prípadov
  • Schopnosť získať návyk na vytváranie opakovateľných, sledovateľných a verziou kontrolovaných účtovných dokumentov

V strojárstve sa znova a znova robí ten istý výpočet: namáhanie skupiny dielov, výkon čerpadla pre celý rad prevádzkových bodov, tabuľky vlastností pri rôznych teplotách. Robiť to ručne je pomalé a náchylné na chyby. Python (jednoducho sa naučiť programovací jazyk s bohatými knižnicami pre inžinierstvo) automatizuje tieto iterácie; Vďaka tomu je účet opakovateľný, sledovateľný a kontrolovaný verziou. Umelá inteligencia (AI) Python je neuveriteľne rýchly pri generovaní kódu: konvertuje vzorec na funkciu, pridáva správu jednotiek, čítanie údajov, vykresľovanie grafov. Existuje tu však nebezpečná mylná predstava: to, že kód funguje bez chýb, ešte neznamená, že počíta správne. Kód AI môže v tichosti vrátiť nesprávne výsledky v dôsledku nesprávnej konverzie jednotiek, nesprávneho vzorca alebo v okrajových prípadoch a program bude naďalej bežať bez akýchkoľvek chýb. To je dôvod, prečo každý inžiniersky kód vytvorený pomocou AI; Skúšobné vstupy so známymi výsledkami sú nespoľahlivé bez overenia jednotkovou (veľkosťou) kontrolou a hraničnými prípadovými skúškami. V tejto lekcii sa naučíte, ako bezpečne nastaviť automatizáciu účtu Python pomocou AI.

Prečo kódový účet? Vysledovateľnosť a reprodukovateľnosť

Ručný výpočet je jednorazový; Keď sa vstup zmení, vykoná sa od začiatku a medzikroky sa stratia. Výpočet vykonaný v kóde je ako dokument: vstupy, vzorce a výstupy sú jasne napísané; zmeníte vstup a v priebehu niekoľkých sekúnd získate nový výsledok; Pomocou kontroly verzií (ako git) je možné sledovať „čo som vypočítal s akou hodnotou v ktorý deň“. To je neoceniteľné z hľadiska kontroly a zodpovednosti. Ale táto sila závisí od správnosti kódu; Nesprávny kód vytvára nesprávny výsledok, tiež reprodukovateľne a rýchlo.

Tip: Napíšte test pre každú výpočtovú funkciu so známym skutočným výsledkom vedľa nej (uplatnite sa v Pythone). Napríklad vaša stresová funkcia by mala poskytnúť 28,1 MPa v známej vzorke. Tento test vás okamžite upozorní, ak pri budúcej zmene kódu niečo pokazíte. Technický kód, ktorý nie je testovaný, je neoverený účet.

Správa zväzku: Najbežnejší zdroj chýb

V inžinierskom kódexe väčšina chýb pochádza z jednotiek: N s kN, m s mm, Pa s MPa, ktoré môžu byť zamenené faktorom 1 000 alebo 1 000 000. Obrany sú dve. Prvým je disciplína: od začiatku zvoliť jednotkový systém (napr. N, mm, MPa) a previesť doň všetky vstupy a pridať jednotky k názvom premenných (dĺžka_mm, sila_N). Druhým je nástroj: knižnica ako pint prenáša jednotky v kóde a zachytí nekonzistentnú operáciu ako chybu.

Prístup

ako to funguje

Výhoda

Disciplína pomenovania

ako sila_N, dĺžka_mm

Jednoduché, žiadne závislosti

jednotkový systém

Všetky prevedené na N-mm-MPa

Jednoduchosť, rýchlosť

pinta knižnica

Posúva jednotku po premennej

Automaticky zachytáva nekonzistentnosť

Známy výsledok testu

odkaz s tvrdením

Zachytil chybu vzorca/jednotky

Upozornenie: Konverzia jednotiek môže v kóde vygenerovanom AI chýbať alebo je nesprávna a kód bude stále „fungovať“. Napríklad, ak je priemer mm a očakáva sa, že plocha bude m², výsledok sa bude líšiť 1 000 000-krát, ale program nehlási chybu. Pred spustením kódu zakomentujte jednotky vstupov a výstupov; potom uveďte výsledok so známym príkladom.

Krok za krokom: Overiteľný kód účtu AI

  1. Objasnite problém a systém jednotiek. Vstupy, výstupy, jednotky.
  2. Vygenerujte funkciu. Jediný zodpovedný, vysvetľujúci, jednotný.
  3. Pridajte známe výsledky testu. Tvrdiť s referenčným príkladom.
  4. Vyskúšajte okrajové puzdrá. Nula, zápor, veľmi veľký/malý vstup.
  5. Vykonajte kontrolu jednotky. Zodpovedá jednotka výstupu tomu, čo sa očakáva?
  6. Dokument a verzia. Predpoklady, zdroj, dátum; sledovateľnosť pomocou git.

Výzva, ktorá generuje funkcie a testy

Úloha: Skúsený vývojár Pythonu píšuci inžinierske výpočty. Úloha: Napíšte funkciu, ktorá vypočíta maximálne ohybové napätie v konzolovom nosníku obdĺžnikového prierezu. Vstup: F (N), L (mm), b (mm), h (mm). Výkon: sigma (MPa). Konvencia: Jednotková sústava N-mm-MPa; komentujte jednotku každého záznamu.Pravidlo: použite I = b*h^3/12 a sigma = M*c/I; komentujte kroky.Pravidlo: Pridajte test so ZNÁMÝM VÝSLEDKOM: sigma ~28,1 MPa pre F=500,L=300,b=20,h=40; Skontrolujte s potvrdením (malá tolerancia).

Výzva stavu okraja

Pridajte kontroly prípadu okraja k vyššie uvedenej funkcii:- Ak sú b, h alebo L nulové alebo záporné, uveďte významnú chybu (zvýšte hodnotu ValueError).- Komentujte, ak existuje problém s pretečením/presnosťou pri veľmi veľkých/malých vstupoch. Pridajte aj ďalšie 3 rôzne testovacie vstupy a napíšte očakávaný výsledok; vysvetliť výsledky tak, aby som ich mohol manuálne overiť.

Výzva na zabezpečenie jednotky (pinta).

Jednotka-safe rovnaký účet s 'pint' knižnice. Vstupy nech sú definované v jednotkách (napr. 500 * ureg.newton). Skonvertujte výstup do MPa a vytlačte ho. Pridajte malý príklad, ktorý ukazuje, ako pinta zlyhá, keď zadáte vstup s nesprávnou jednotkou.

Výzva na kontrolu kódu

Kritizujte môj kód inžinierskeho výpočtu nižšie z pohľadu kontroly kódu, nesúhlasíte so mnou. Predovšetkým: je prevod jednotiek správny, je správny vzorec, zohľadnili sa okrajové prípady (nula, negatívne), sú testy skutočne potvrdzujúce? Ku každému nálezu napíšte, ako ho opraviť.[kód]

Slabá výzva / silná výzva

Slabá výzva:

Napíšte Python kód pre výpočet stresu.

Žiadny výber jednotiek, vzorcov, definícií vstupov a testov; AI generuje kód, ktorý funguje, ale nie je overený a ktorého jednotka je neznáma.

Výkonná výzva:

Napíšte funkciu ohybového napätia do konzolového nosníka. Vstup F(N), L(mm), b(mm),h(mm); výstupná sigma (MPa). systém N-mm-MPa, každú jednotku uveďte v komentári. Pridajte test so známymi výsledkami (F=500, L=300, b=20, h=40 → ~28,1 MPa, tvrdenie). Uveďte chybu na nulovom/zápornom vstupe. Interpretujte okrajové prípady.

Druhá výzva vyžaduje systém jednotiek, vzorec, vstupy, test a prípady okrajov; Vďaka tomu je kód overiteľný.

Tri mini puzdrá (podľa čísel)

Prípad 1 – Tichá chyba hlasitosti. Výpočet plochy vytvorený AI berie priemer v mm a dáva mm² s pi*d**2/4, ale nasledujúci riadok ho vloží do vzorca, ktorý očakáva m²; Kód funguje bez chýb a dáva záťaž 1 000 000 krát nižšiu. Keď inžinier spustí test so známym výsledkom (tvrdiť abs(sigma-28.1)<0.5), test exploduje a chyba je zachytená. Ak by nedošlo k žiadnemu testu, nesprávny výsledok by sa do správy dostal bez povšimnutia. Lekcia: pracovný kód ≠ správny kód.

Prípad 2 – Zlyhanie stavu okraja. V kóde, ktorý sa zacyklí pre rodinu dielov, sa hrúbka h=0 zadá do jedného riadku; Keď I = b*h**3/12 = 0, sigma = M*c/I dáva delenie nulovou chybou. Vďaka ovládaciemu prvku if h<=0: raise ValueError pridanému AI sa kód zastaví so zmysluplnou správou a v tichosti neprodukuje inf. Ponaučenie: manipulujte s okrajovými prípadmi vopred.

Prípad 3 – Zvýšenie opakovateľnosti. Manuálny výpočet výkonu čerpadla pre 40 rôznych prevádzkových bodov zabral technikovi pol dňa. Skript napísaný v AI prečíta CSV, vypočíta výkon pre každý riadok a overí známy bod pomocou potvrdenia, čím skráti prácu na ~2 minúty a výsledky zapíše do sledovateľného súboru. Keď sa položka zmení, celá tabuľka sa aktualizuje každú sekundu. Poučenie: overená automatizácia je rýchla a spoľahlivá.

Časté chyby

  • Klam „Fungoval = správne“: Myslieť si, že kód, ktorý funguje bez chýb, je správny.
  • Nepísanie testov: Spoliehanie sa na kód bez referenčného testu so známym výsledkom.
  • Nejednoznačnosť jednotiek: Ponechanie vstupných/výstupných jednotiek bez interpretácie, preskočenie konverzie.
  • Ignorovanie okrajových prípadov: Tichá chyba alebo zlyhanie pri nulovom/zápornom vstupe.
  • Nedokumentovanie zdroja/predpokladu: Nezapisovanie zdroja a predpokladu použitého vzorca.
  • Bez verzií: Účet sa ponechá ako jednorazový súbor bez toho, aby bol sledovateľný (git).

V súhrne

  • Python robí inžinierske výpočty opakovateľnými, sledovateľnými a ovládanými verziami.
  • AI je pri generovaní kódu veľmi rýchla; Ale to, že kód funguje bez chýb, ešte neznamená, že počíta správne.
  • Každý kód by mal byť overený testovaním so známymi výsledkami, kontrolou jednotiek a prípadmi okrajov.
  • Chyby jednotiek sú najčastejším a najzákernejším zdrojom chýb; Obráňte sa jednotkovým systémom, nomenklatúrou alebo pintou.
  • Overená automatizácia šetrí čas a dáva istotu; Neoverený kód je nebezpečný.

Aplikačná úloha

Vyberte si opakujúci sa technický výpočet (napríklad napätie, výkon čerpadla, tepelné zaťaženie). Napíšte funkciu Pythonu do AI, ktorá vykonáva tento výpočet; Komentujte jednotku každého vstupu a výstupu a pridajte test tvrdenia so známym výsledkom. Spustite test a zistite, či prejde. Potom vykonajte ďalšie dve overenia: vyskúšajte okrajový prípad (nulový alebo záporný vstup), aby ste skontrolovali, či kód vracia významnú chybu, a manuálne zadajte jednotku výstupu v príklade. Ak je to možné, nechajte si vyrobiť aj bezpečnostnú verziu v pinte. Nakoniec pridajte do kódu predpoklady výpočtu, zdroj vzorca a dátum ako krátky názov a napíšte, prečo tento kód stále vyžaduje schválenie inžinierom.

kontrolný zoznam

  • [ ] Vstupné a výstupné jednotky sú jasne zdokumentované v kóde; bol zvolený jednotkový systém.
  • [ ] Bol pridaný test (tvrdenie) so známym výsledkom a úspešne prešiel.
  • [ ] Pokúsil sa aspoň jeden okrajový prípad (nulový/záporný); Kód poskytol významnú chybu.
  • [ ] Jednotka výstupu bola poskytnutá v manuálnom príklade (nie za predpokladu, že „pracoval = správne“).
  • [ ] Zdroj vzorca, predpoklady a dátum uvedené v kóde.
  • [ ] Účet je možné sledovať/sledovať; konečné schválenie bolo ponechané na inžiniera.