Enota 10 / 11

Avtomatizacija inženirskih izračunov s Pythonom

Dobički:

  • Sposobnost avtomatizacije inženirskih izračunov, upravljanja enot in obdelave podatkov s kodo Python, ki jo poganja AI
  • Zmožnost potrjevanja kode AI s preverjanjem enot, testiranjem znanih rezultatov in robnimi primeri
  • Sposobnost pridobivanja navade izdelave ponovljivih, sledljivih in različicsko nadzorovanih računskih dokumentov

V strojništvu se isti izračun izvaja vedno znova: napetosti družine delov, moč črpalke za vrsto delovnih točk, tabele lastnosti pri različnih temperaturah. To ročno izvajanje je počasno in nagnjeno k napakam. Python (lahek programski jezik z bogatimi knjižnicami za inženiring) avtomatizira te ponovitve; Zaradi tega je račun ponovljiv, sledljiv in nadzorovan nad različico. Umetna inteligenca (AI) Python je neverjetno hiter pri generiranju kode: pretvarjanje formule v funkcijo, dodajanje upravljanja enot, branje podatkov, risanje grafov. Toda tu obstaja nevarno napačno prepričanje: samo zato, ker koda deluje brez napak, še ne pomeni, da izračuna pravilno. Koda umetne inteligence lahko tiho vrne napačne rezultate zaradi napačne pretvorbe enote, napačne formule ali v robnih primerih, program pa bo še naprej deloval brez napak. Zato je vsaka inženirska koda, izdelana z AI; Preizkusni vhodi z znanimi rezultati so nezanesljivi brez preverjanja s preverjanjem enote (velikosti) in poskusi robnih primerov. V tej enoti se boste naučili, kako varno nastaviti avtomatizacijo računa Python z AI.

Zakaj Code Account? Sledljivost in ponovljivost

Ročni izračun je enkraten; Ko se vnos spremeni, se izvede od začetka in vmesni koraki se izgubijo. Izračun v kodi je kot dokument: vhodi, formule in izhodi so jasno napisani; spremenite vnos in v nekaj sekundah dobite nov rezultat; Z nadzorom različic (kot je git) je mogoče slediti "kaj sem izračunal, s katero vrednostjo na kateri datum". To je neprecenljivo z vidika nadzora in odgovornosti. Toda ta moč je odvisna od pravilnosti kode; Napačna koda povzroči napačen rezultat, tudi ponovljivo in hitro.

Nasvet: Napišite preizkus za vsako računsko funkcijo z znanim resničnim rezultatom zraven (uveljavi v Pythonu). Na primer, vaša napetostna funkcija bi morala dati 28,1 MPa v znanem vzorcu. Ta preizkus vas takoj opozori, če kaj pokvarite, ko v prihodnosti spremenite kodo. Inženirska koda, ki ni testirana, je nepreverjen račun.

Upravljanje glasnosti: najpogostejši vir napak

V inženirski kodi večina napak izvira iz enot: N s kN, m z mm, Pa z MPa, ki jih je mogoče zamenjati s faktorjem 1000 ali 1.000.000. Obstajata dve obrambi. Prva je disciplina: izbira enotnega sistema enot od začetka (npr. N, mm, MPa) in pretvorba vseh vhodnih podatkov vanj ter dodajanje enot imenom spremenljivk (dolžina_mm, sila_N). Drugo je orodje: knjižnica, kot je pint, nosi enote znotraj kode in ujame nedosledno operacijo kot napako.

Pristop

Kako deluje

Prednost

Disciplina poimenovanja

kot sila_N, dolžina_mm

Enostavno, brez odvisnosti

enotni sistem

Vse pretvorjeno v N-mm-MPa

Enostavnost, hitrost

knjižnica pint

Premika enoto za spremenljivko

Samodejno zazna nedoslednost

Test z znanimi rezultati

referenca s trditvijo

Ujame napako formule/enote

Pozor: Pretvorba enote morda manjka ali je nepravilna v kodi, ki jo ustvari umetna inteligenca, koda pa bo še vedno "delovala". Na primer, če je premer mm in pričakovana površina m², bo rezultat odstopal za 1.000.000-krat, vendar program ne bo dal napake. Preden zaženete kodo, komentirajte enote vhodov in izhodov; nato navedite rezultat z znanim primerom.

Korak za korakom: Koda računa, ki jo je mogoče preveriti z AI

  1. Razjasnite problem in sistem enot. Vhodi, izhodi, enote.
  2. Ustvarite funkcijo. Enotno odgovorni, interpretativni, enotni.
  3. Dodajte test z znanimi rezultati. Utrdi z referenčnim primerom.
  4. Poskusite robne primere. Nič, negativen, zelo velik/majhen vnos.
  5. Opravite preverjanje enote. Ali se proizvodna enota ujema s pričakovanim?
  6. Dokument in različica. Predpostavke, vir, datum; sledljivost z git.

Poziv, ki generira funkcije in teste

Vloga: Izkušen razvijalec Pythona, ki piše inženirske izračune. Naloga: Napišite funkcijo, ki izračuna največjo upogibno napetost v konzolnem nosilcu pravokotnega prereza. Vnos: F (N), L (mm), b (mm), h (mm). Izhod: sigma (MPa). Konvencija: Sistem enot N-mm-MPa; komentirajte enoto vsakega vnosa. Pravilo: uporabite I = b*h^3/12 in sigmo = M*c/I; komentirajte korake.Pravilo: dodajte test z ZNANIM REZULTATOM: sigma ~28,1 MPa za F=500,L=300,b=20,h=40; Preverite s trditvijo (majhna toleranca).

Poziv za stanje roba

Zgornji funkciji dodajte preverjanja robnih primerov: - Če so b, h ali L enaki nič ali negativni, dajte pomembno napako (povečajte ValueError). - Komentirajte, če obstaja težava s prelivanjem/natančnostjo pri zelo velikih/majhnih vnosih. Dodajte še 3 različne testne vnose in zapišite pričakovan rezultat; razloži rezultate tako, da jih lahko ročno preverim.

Poziv za varnost enote (pinta).

Unit-safe isti račun s knjižnico 'pint'. Naj bodo vhodi definirani v enotah (npr. 500 * ureg.newton). Pretvorite izhod v MPa in ga natisnite. Dodajte majhen primer, ki prikazuje, kako pint ne uspe, če vnesete napačno enoto.

Poziv za preverjanje kode

Spodaj kritizirajte mojo kodo inženirskega izračuna z vidika pregleda kode, ne strinjajte se z menoj. Zlasti: ali je pretvorba enot pravilna, ali je formula pravilna, ali so bili upoštevani robni primeri (nič, negativni), ali so testi resnično potrditveni? Za vsako ugotovitev napišite, kako jo popraviti.[code]

Šibek poziv / močan poziv

Šibek poziv:

Napišite kodo Python za izračun napetosti.

Brez izbire enot, formul, vhodnih definicij in testov; AI ustvari kodo, ki deluje, vendar ni preverjena in katere enota ni znana.

Močan poziv:

Zapišite funkcijo upogibne napetosti v konzolnem nosilcu. Vnos F(N), L(mm), b(mm),h(mm); izhodna sigma (MPa). Sistem N-mm-MPa, posamezno enoto navedite v komentarju. Dodajte preskus z znanimi rezultati (F=500, L=300, b=20, h=40 → ~28,1 MPa, trditev). Pri ničelnem/negativnem vnosu izda napako. Interpretirajte robne primere.

Drugi poziv zahteva sistem enot, formulo, vnose, test in robne primere; Omogoča preverjanje kode.

Trije mini kovčki (po številkah)

1. primer – Napaka tihe glasnosti. Izračun površine, ki ga izvede AI, vzame premer v mm in poda mm² s pi*d**2/4, vendar ga naslednja vrstica postavi v formulo, ki pričakuje m²; Koda deluje brez napak in daje 1.000.000-krat manjši stres. Ko inženir izvede preizkus z znanim rezultatom (uveljavi abs(sigma-28,1)<0,5), test eksplodira in napaka je ulovljena. Če testa ne bi bilo, bi napačen rezultat neopažen prišel v poročilo. Lekcija: delovna koda ≠ pravilna koda.

Primer 2 – Zrušitev robnega stanja. V kodi, ki se vrti za družino delov, je debelina h=0 vnesena v eno vrstico; Ko je I = b*h**3/12 = 0, daje sigma = M*c/I napako deljenja z nič. Zahvaljujoč kontrolniku if h<=0: dvigni ValueError, ki ga je dodal AI, se koda ustavi s smiselnim sporočilom in ne ustvari tiho inf. Lekcija: robne primere obravnavajte vnaprej.

Primer 3 - Povečanje ponovljivosti. Inženir je potreboval pol dneva, da je ročno izračunal moč črpalke za 40 različnih delovnih točk. Skript, napisan v umetni inteligenci, prebere CSV, izračuna moč za vsako vrstico in preveri znano točko s potrditvijo, kar skrajša delo na približno 2 minuti in zapiše rezultate v sledljivo datoteko. Ko se vnos spremeni, se celotna tabela posodobi vsako sekundo. Nauk: preverjena avtomatizacija je hitra in zanesljiva.

Pogoste napake

  • Zmota "deluje = pravilno": misliti, da je koda, ki deluje brez napak, pravilna.
  • Ne pisanje testov: Zanašanje na kodo brez referenčnega testa z znanim rezultatom.
  • Dvoumnost enote: Puščanje vhodno/izhodnih enot neinterpretiranih, preskok pretvorbe.
  • Ignoriranje robnih primerov: Tiha napaka ali zrušitev pri ničelnem/negativnem vnosu.
  • Nedokumentiranje vira/predpostavke: Nezapisovanje vira in predpostavke uporabljene formule.
  • Brez različic: račun ostane enkratna datoteka, ne da bi bila sledljiva (git).

Če povzamem

  • Python naredi inženirsko računanje ponovljivo, sledljivo in nadzorovano različico.
  • AI je zelo hiter pri ustvarjanju kode; Toda dejstvo, da koda deluje brez napak, še ne pomeni, da izračuna pravilno.
  • Vsako kodo je treba potrditi s testiranjem znanih rezultatov, preverjanjem enot in robnimi primeri.
  • Napake enot so najpogostejši in najbolj zahrbten vir napak; Branite s sistemom ene enote, nomenklaturo ali pinto.
  • Preverjena avtomatizacija prihrani čas in daje zaupanje; Nepreverjena koda je nevarna.

Aplikacijska naloga

Izberite ponavljajoče se inženirske izračune (kot so napetost, moč črpalke, toplotna obremenitev). Napišite funkcijo Python v AI, ki izvaja ta izračun; Komentirajte enoto vsakega vhoda in izhoda in dodajte test trditve z znanim rezultatom. Zaženite test in preverite, ali uspe. Nato izvedite še dve preverjanji: poskusite z robnim primerom (nič ali negativen vnos), da preverite, ali koda vrne pomembno napako, in ročno zagotovite enoto izhoda v primeru. Če je mogoče, dajte tudi različico, varno za enoto, izdelano v pol litra. Nazadnje dodajte kodi predpostavke izračuna, vir formule in datum kot kratek naslov ter napišite, zakaj ta koda še vedno zahteva odobritev inženirja.

kontrolni seznam

  • [ ] Vhodne in izhodne enote so jasno dokumentirane v kodi; izbran je bil sistem ene enote.
  • [ ] Test (assert) z znanim rezultatom je bil dodan in uspešen.
  • [ ] Poizkušen je bil vsaj en robni primer (nič/negativen); Koda je dala pomembno napako.
  • [ ] Izhodna enota je bila podana z ročnim primerom (brez predpostavke "deloval = pravilno").
  • [ ] Vir formule, predpostavke in datum, zabeležen v kodi.
  • [ ] Račun je sledljiv/sledljiv; končna odobritev je bila prepuščena inženirju.