Jednotka 10 / 11

Automatizace technických výpočtů s Pythonem

zisky:

  • Schopnost automatizovat inženýrské výpočty, správu jednotek a zpracování dat pomocí kódu Python poháněného umělou inteligencí
  • Schopnost ověřit kód AI pomocí kontroly jednotek, testování známých výsledků a případů hran
  • Schopnost získat návyk produkovat opakovatelné, sledovatelné a verzemi řízené účetní dokumenty

Ve strojírenství se stále dokola provádí stejný výpočet: napětí skupiny součástí, výkon čerpadla pro řadu pracovních bodů, tabulky vlastností při různých teplotách. Dělat to ručně je pomalé a náchylné k chybám. Python (snadno se naučitelný programovací jazyk s bohatými knihovnami pro inženýrství) automatizuje tyto iterace; Díky tomu je účet opakovatelný, sledovatelný a řízený verzí. Umělá inteligence (AI) Python je neuvěřitelně rychlý při generování kódu: převod vzorce na funkci, přidávání správy jednotek, čtení dat, vykreslování grafů. Existuje zde ale nebezpečná mylná představa: to, že kód funguje bez chyb, ještě neznamená, že počítá správně. Kód AI může tiše vracet nesprávné výsledky v důsledku nesprávného převodu jednotek, nesprávného vzorce nebo v okrajových případech a program bude pokračovat v běhu bez jakýchkoli chyb. To je důvod, proč každý inženýrský kód vytvořený pomocí AI; Testovací vstupy se známými výsledky jsou nespolehlivé bez ověření jednotkovou (velikostní) kontrolou a hranovými případovými zkouškami. V této lekci se naučíte, jak bezpečně nastavit automatizaci účtu Python pomocí AI.

Proč Code Account? Sledovatelnost a reprodukovatelnost

Ruční výpočet je jednorázový; Když se vstup změní, provede se od začátku a mezikroky se ztratí. Výpočet prováděný v kódu je jako dokument: vstupy, vzorce a výstupy jsou jasně napsány; změníte zadání a během několika sekund získáte nový výsledek; Pomocí správy verzí (jako git) lze sledovat „co jsem vypočítal s jakou hodnotou k jakému datu“. To je neocenitelné z hlediska kontroly a odpovědnosti. Ale tato síla závisí na správnosti kódu; Špatný kód vytváří nesprávný výsledek, a to také reprodukovatelně a rychle.

Tip: Napište test pro každou výpočetní funkci se známým pravdivým výsledkem vedle ní (uplatněte se v Pythonu). Například vaše stresová funkce by měla dát 28,1 MPa ve známém vzorku. Tento test vás okamžitě varuje, pokud něco porušíte, když v budoucnu změníte kód. Technický kód, který není testován, je neověřený účet.

Správa svazku: Nejčastější zdroj chyb

V technickém předpisu pochází většina chyb z jednotek: N s kN, m s mm, Pa s MPa, které lze zaměnit faktorem 1000 nebo 1 000 000. Obrany jsou dvě. První je disciplína: od začátku zvolit jednotkový systém (např. N, mm, MPa) a převést do něj všechny vstupy a přidat jednotky k názvům proměnných (délka_mm, síla_N). Druhým je nástroj: knihovna jako pint nese jednotky v kódu a zachytí nekonzistentní operaci jako chybu.

Přístup

Jak to funguje

Výhoda

Pojmenovací disciplína

jako síla_N, délka_mm

Jednoduché, žádné závislosti

jednotkový systém

Vše převedeno na N-mm-MPa

Jednoduchost, rychlost

pintová knihovna

Přesune jednotku po proměnné

Automaticky zachytí nekonzistenci

Známý výsledek testu

odkaz s tvrzením

Zachycuje chybu vzorce/jednotky

Upozornění: Převod jednotek může v kódu generovaném AI chybět nebo je nesprávný a kód bude stále „fungovat“. Pokud je například průměr mm a očekává se, že plocha bude m², bude se výsledek lišit 1 000 000krát, ale program neukáže chybu. Před spuštěním kódu zakomentujte jednotky vstupů a výstupů; pak výsledek poskytněte známým příkladem.

Krok za krokem: AI ověřitelný kód účtu

  1. Vyjasněte problém a systém jednotek. Vstupy, výstupy, jednotky.
  2. Vygenerujte funkci. Jednotný odpovědný, vysvětlující, jednotný.
  3. Přidejte test známých výsledků. Uveďte referenční příklad.
  4. Vyzkoušejte okrajová pouzdra. Nula, zápor, velmi velký/malý vstup.
  5. Proveďte kontrolu jednotky. Odpovídá jednotka výstupu tomu, co se očekává?
  6. Dokument a verze. Předpoklady, zdroj, datum; sledovatelnost pomocí git.

Výzva, která generuje funkce a testy

Role: Zkušený vývojář Pythonu, který píše technické výpočty. Úkol: Napište funkci, která vypočítá maximální ohybové napětí v konzolovém nosníku obdélníkového průřezu. Vstup: F (N), L (mm), b (mm), h (mm). Výkon: sigma (MPa). Konvence: Jednotkový systém N-mm-MPa; komentujte jednotku každého záznamu.Pravidlo: použijte I = b*h^3/12 a sigma = M*c/I; komentujte kroky.Pravidlo: Přidejte test se ZNÁMÝM VÝSLEDKEM: sigma ~28,1 MPa pro F=500,L=300,b=20,h=40; Zkontrolujte s asertem (malá tolerance).

Výzva ke stavu okraje

Přidejte k výše uvedené funkci kontroly případu hran:- Pokud jsou b, h nebo L nulové nebo záporné, uveďte významnou chybu (zvyšte hodnotu ValueError).- Komentář, pokud u velmi velkých/malých vstupů existuje problém s přetečením/přesností. Přidejte také 3 další různé testovací vstupy a napište očekávaný výsledek; vysvětlit výsledky tak, abych je mohl ověřit ručně.

Výzva k zabezpečení jednotky (pinta).

Unit-safe stejný účet s knihovnou 'pint'. Nechť jsou vstupy definovány v jednotkách (např. 500 * ureg.newton). Převeďte výstup do MPa a vytiskněte jej. Přidejte malý příklad ukazující, jak pinta selže, když je zadána nesprávná jednotka.

Výzva ke kontrole kódu

Kritizujte můj kód inženýrského výpočtu níže z pohledu kontroly kódu, nesouhlasíte se mnou. Zejména: je převod jednotek správný, je správný vzorec, byly vzaty v úvahu okrajové případy (nula, negativní), jsou testy skutečně potvrzující? Ke každému nálezu napište, jak jej opravit.[kód]

Slabá výzva / Silná výzva

Slabá výzva:

Napište Python kód pro výpočet napětí.

Žádný výběr jednotek, vzorců, definic vstupů a testů; AI generuje kód, který funguje, ale není ověřen a jehož jednotka je neznámá.

Výkonná výzva:

Napište funkci ohybového napětí do konzolového nosníku. Vstup F(N), L(mm), b(mm),h(mm); výstupní sigma (MPa). Systém N-mm-MPa, každou jednotku uveďte v poznámce. Přidejte test se známými výsledky (F=500, L=300, b=20, h=40 → ~28,1 MPa, tvrzení). Dejte chybu na nulovém/záporném vstupu. Interpretujte okrajové případy.

Druhá výzva vyžaduje systém jednotek, vzorec, vstupy, test a případy hran; Díky tomu je kód ověřitelný.

Tři mini pouzdra (podle čísel)

Případ 1 – Chyba tiché hlasitosti. Výpočet plochy vytvořený AI bere průměr v mm a dává mm² s pi*d**2/4, ale další řádek jej vloží do vzorce, který očekává m²; Kód funguje bez chyb a dává zátěž 1 000 000krát nižší. Když technik spustí test se známým výsledkem (asset abs(sigma-28.1)<0.5), test exploduje a chyba je zachycena. Pokud by k žádnému testu nedošlo, nesprávný výsledek by se do zprávy dostal bez povšimnutí. Lekce: pracovní kód ≠ správný kód.

Případ 2 – Zhroucení stavu okraje. V kódu, který se opakuje pro rodinu součástí, se tloušťka h=0 zadává na jeden řádek; Když I = b*h**3/12 = 0, sigma = M*c/I dává dělení nulovou chybou. Díky ovládacímu prvku if h<=0: raise ValueError přidanému AI se kód zastaví se smysluplnou zprávou a neprodukuje tiše inf. Ponaučení: zvládněte případy hran předem.

Případ 3 – Zisk opakovatelnosti. Manuální výpočet výkonu čerpadla pro 40 různých provozních bodů zabral technikovi půl dne. Skript, napsaný v AI, čte CSV, vypočítává sílu pro každý řádek a ověřuje známý bod pomocí deklarace, čímž zkracuje práci na ~2 minuty a zapisuje výsledky do sledovatelného souboru. Když se položka změní, celá tabulka se aktualizuje každou sekundu. Poučení: ověřená automatizace je rychlá a spolehlivá.

Časté chyby

  • Klam „Fungoval = správně“: Myslet si, že kód, který funguje bez chyb, je správný.
  • Nepsání testů: Spoléhání na kód bez referenčního testu se známým výsledkem.
  • Nejednoznačnost jednotek: Ponechání vstupních/výstupních jednotek bez interpretace, přeskakování převodu.
  • Ignorování okrajových případů: Tichá chyba nebo pád při nulovém/záporném vstupu.
  • Nedoložení zdroje/předpokladu: Nezapsání zdroje a předpokladu použitého vzorce.
  • Bez verzování: Ponechání účtu jako jednorázového souboru, aniž by bylo možné jej sledovat (git).

V souhrnu

  • Python dělá inženýrské výpočty opakovatelné, sledovatelné a řízené verzemi.
  • AI je velmi rychlá při generování kódu; Ale to, že kód funguje bez chyb, ještě neznamená, že počítá správně.
  • Každý kód by měl být ověřen prostřednictvím testování se známými výsledky, kontroly jednotek a případů hran.
  • Chyby jednotek jsou nejčastějším a nejzáludnějším zdrojem chyb; Obrana jednotkovým systémem, nomenklaturou nebo pintou.
  • Ověřená automatizace šetří čas a dává jistotu; Neověřený kód je nebezpečný.

Aplikační úkol

Zvolte opakující se technický výpočet (např. napětí, výkon čerpadla, tepelné zatížení). Napište funkci Pythonu do AI, která tento výpočet provádí; Zakomentujte jednotku každého vstupu a výstupu a přidejte kontrolní test se známým výsledkem. Spusťte test a zjistěte, zda prošel. Poté proveďte další dvě ověření: vyzkoušejte okrajový případ (nulový nebo záporný vstup), abyste zkontrolovali, zda kód vrací významnou chybu, a ručně zadejte jednotku výstupu v příkladu. Pokud je to možné, nechte si vyrobit i verzi pro bezpečné použití v půllitru. Nakonec přidejte do kódu předpoklady výpočtu, zdroj vzorce a datum jako krátký nadpis a napište, proč tento kód stále vyžaduje schválení inženýra.

kontrolní seznam

  • [ ] Vstupní a výstupní jednotky jsou jasně dokumentovány v kódu; byl zvolen jednotkový systém.
  • [ ] Byl přidán test (tvrzení) se známým výsledkem a prošel.
  • [ ] Byl proveden pokus o alespoň jeden okrajový případ (nulový/záporný); Kód poskytl významnou chybu.
  • [ ] Jednotka výstupu byla poskytnuta ručním příkladem (nepředpokládá se, že "funguje = správně").
  • [ ] Zdroj vzorce, předpoklady a datum uvedené v kódu.
  • [ ] Účet veden jako sledovatelný/sledovaný; konečné schválení bylo ponecháno na inženýrovi.