Jedinica 10 / 11

Automatizacija inženjerskih proračuna s Pythonom

Dobici:

  • Sposobnost automatizacije inženjerskih proračuna, upravljanja jedinicama i obrade podataka s Python kodom koji pokreće AI
  • Sposobnost provjere AI koda s provjerom jedinica, testiranjem poznatih rezultata i rubnim slučajevima
  • Sposobnost stjecanja navike izrade ponovljivih, sljedivih i verzijama kontroliranih dokumenata računa

U strojarstvu se uvijek iznova radi isti izračun: naprezanja obitelji dijelova, snaga pumpe za niz radnih točaka, tablice svojstava na različitim temperaturama. Ručno izvođenje je sporo i podložno pogreškama. Python (programski jezik koji se lako uči s bogatim bibliotekama za inženjering) automatizira ove iteracije; Čini račun ponovljivim, sljedivim i kontroliranim verzijama. Umjetna inteligencija (AI) Python je nevjerojatno brz u generiranju koda: pretvara formulu u funkciju, dodaje upravljanje jedinicama, čita podatke, iscrtava grafikone. Ali ovdje postoji opasna zabluda: samo zato što kôd radi bez pogrešaka ne znači da ispravno izračunava. AI kod može tiho vratiti netočne rezultate zbog netočne pretvorbe jedinica, netočne formule ili u rubnim slučajevima, a program će nastaviti raditi bez ikakvih pogrešaka. Zato je svaki inženjerski kod proizveden AI; Testni unosi s poznatim rezultatima nepouzdani su bez verifikacije provjerom jedinice (veličine) i ispitivanja rubnih slučajeva. U ovoj ćete jedinici naučiti kako sigurno postaviti automatizaciju Python računa pomoću umjetne inteligencije.

Zašto Code Account? Sljedivost i ponovljivost

Ručni izračun je jednokratan; Kada se unos promijeni, to se radi ispočetka, a međukoraci se gube. Izračun u kodu je poput dokumenta: ulazi, formule i izlazi jasno su napisani; promijenite unos i dobijete novi rezultat unutar nekoliko sekundi; S kontrolom verzija (kao što je git), može se pratiti "što sam izračunao s kojom vrijednošću na koji datum". Ovo je neprocjenjivo u smislu kontrole i odgovornosti. Ali ta moć ovisi o ispravnosti koda; Pogrešan kod proizvodi pogrešan rezultat, također ponovljivo i brzo.

Savjet: Napišite test za svaku računsku funkciju s poznatim pravim rezultatom pokraj nje (potvrdite u Pythonu). Na primjer, vaša funkcija naprezanja trebala bi dati 28,1 MPa u poznatom uzorku. Ovaj test vas odmah upozorava ako nešto pokvarite kada promijenite kod u budućnosti. Inženjerski kod koji nije testiran je neprovjereni račun.

Upravljanje volumenom: najčešći izvor pogreške

U inženjerskom kodu većina pogrešaka dolazi od jedinica: N s kN, m s mm, Pa s MPa, koje se mogu zbuniti faktorom 1000 ili 1.000.000. Dvije su obrane. Prvi je disciplina: odabir sustava jedne jedinice od početka (npr. N, mm, MPa) i pretvaranje svih ulaza u njega i dodavanje jedinica nazivima varijabli (duljina_mm, sila_N). Drugi je alat: biblioteka poput pinta nosi jedinice unutar koda i hvata nedosljednu operaciju kao pogrešku.

pristup

Kako radi

Prednost

Disciplina imenovanja

poput sila_N, duljina_mm

Jednostavno, bez ovisnosti

sustav jedne jedinice

Sve pretvoreno u N-mm-MPa

Jednostavnost, brzina

knjižnica pinta

Pomiče jedinicu po varijablu

Automatski hvata nedosljednosti

Test poznatih rezultata

referenca s tvrdnjom

Hvata pogrešku formule/jedinice

Oprez: pretvorba jedinica može nedostajati ili biti netočna u kodu generiranom umjetnom inteligencijom, a kod će i dalje "raditi". Na primjer, ako je promjer mm, a očekuje se površina m², rezultat će odstupati 1.000.000 puta, ali program neće dati pogrešku. Prije pokretanja koda komentirajte jedinice ulaza i izlaza; zatim dati rezultat s poznatim primjerom.

Korak po korak: AI provjerljivi kod računa

  1. Pojasnite problem i sustav jedinica. Ulazi, izlazi, jedinice.
  2. Generirajte funkciju. Jedinstveni odgovorni, interpretativni, jedinstveni.
  3. Dodajte test s poznatim rezultatima. Ustvrdite referentnim primjerom.
  4. Isprobajte rubne slučajeve. Nula, negativan, vrlo velik/mali unos.
  5. Izvršite provjeru jedinice. Odgovara li jedinica outputa onome što se očekuje?
  6. Dokument i verzija. Pretpostavke, izvor, datum; sljedivost s git-om.

Prompt koji generira funkcije i testove

Uloga: Iskusni Python programer koji piše inženjerske izračune. Zadatak: Napišite funkciju koja izračunava maksimalno naprezanje na savijanje u konzolnoj gredi pravokutnog presjeka. Unos: F (N), L (mm), b (mm), h (mm). Izlaz: sigma (MPa). Konvencija: Sustav jedinica N-mm-MPa; komentirajte jedinicu svakog unosa. Pravilo: koristite I = b*h^3/12 i sigma = M*c/I; komentirajte korake. Pravilo: Dodajte test s POZNATIM REZULTATOM: sigma ~28,1 MPa za F=500,L=300,b=20,h=40; Provjerite tvrdnjom (mala tolerancija).

Upit statusa ruba

Dodajte provjere rubnih slučajeva gornjoj funkciji: - Ako su b, h ili L nula ili negativni, dajte značajnu pogrešku (povećajte ValueError). - Komentirajte ako postoji problem prekoračenja/preciznosti s vrlo velikim/malim ulazima. Također dodajte još 3 različita testna unosa i napišite očekivani rezultat; objasniti rezultate na način da ih mogu ručno provjeriti.

Upit za sigurnost jedinice (pinta).

Unit-safe isti račun s knjižnicom 'pinta'. Neka ulazi budu definirani u jedinicama (npr. 500 * ureg.newton). Pretvorite izlaz u MPa i ispišite ga. Dodajte mali primjer koji pokazuje kako pinta ne uspijeva kada se unese pogrešna jedinica.

Upit za provjeru koda

Kritizirajte moj kod za inženjerski izračun u nastavku iz perspektive pregleda koda, nemojte se slagati sa mnom. Konkretno: je li pretvorba jedinica točna, je li formula točna, jesu li uzeti u obzir rubni slučajevi (nula, negativni), jesu li testovi doista potvrdni? Za svaki nalaz napišite kako ga popraviti.[code]

Slab upit / Jak upit

Slab upit:

Napišite Python kod za izračun naprezanja.

Nema izbora jedinica, formula, ulaznih definicija i testova; AI generira kod koji radi, ali je neprovjeren i čija je jedinica nepoznata.

Snažan upit:

Napišite funkciju naprezanja savijanja u konzolnoj gredi. Ulaz F(N), L(mm), b(mm),h(mm); izlazna sigma (MPa). Sustav N-mm-MPa, svaku jedinicu navedite u komentaru. Dodajte test s poznatim rezultatima (F=500, L=300, b=20, h=40 → ~28,1 MPa, potvrditi). Daj pogrešku na nuli/negativnom unosu. Tumačite rubne slučajeve.

Drugi prompt zahtijeva jedinični sustav, formulu, ulaze, test i rubne slučajeve; Čini kôd provjerljivim.

Tri mini kofera (po brojevima)

Slučaj 1 - Tiha pogreška glasnoće. Izračun površine koji proizvodi AI uzima promjer u mm i daje mm² s pi*d**2/4, ali sljedeći redak ga stavlja u formulu koja očekuje m²; Kod radi bez grešaka i daje 1.000.000 puta manji stres. Kada inženjer izvede test s poznatim rezultatom (assert abs(sigma-28.1)<0.5), test eksplodira i pogreška je uhvaćena. Da nije bilo testa, pogrešan rezultat bi nezapaženo ušao u izvješće. Lekcija: radni kod ≠ ispravan kod.

Slučaj 2 - pad u rubnom stanju. U kodu koji radi u petlji za familiju dijelova, debljina h=0 upisuje se u jednom retku; Kada je I = b*h**3/12 = 0, sigma = M*c/I daje grešku dijeljenja s nulom. Zahvaljujući kontroli if h<=0: raise ValueError koju je dodao AI, kod se zaustavlja sa smislenom porukom i ne proizvodi tiho inf. Lekcija: unaprijed obradite rubne slučajeve.

Slučaj 3 - Dobitak ponovljivosti. Inženjeru je trebalo pola dana da ručno izračuna snagu pumpe za 40 različitih radnih točaka. Napisana u umjetnoj inteligenciji, skripta čita CSV, izračunava snagu za svaku liniju i potvrđuje poznatu točku pomoću assert-a, smanjujući posao na ~2 minute i zapisujući rezultate u datoteku koja se može pratiti. Kada se unos promijeni, cijela se tablica ažurira svake sekunde. Lekcija: provjerena automatizacija je brza i pouzdana.

Uobičajene greške

  • Zabluda "radio = ispravno": misliti da je kod koji radi bez pogrešaka točan.
  • Ne pisanje testova: Oslanjanje na kod bez referentnog testa s poznatim rezultatom.
  • Nejasnoća jedinice: Ostavljanje ulazno/izlaznih jedinica neinterpretiranih, preskakanje pretvorbe.
  • Ignoriranje rubnih slučajeva: Tiha pogreška ili pad na nultom/negativnom unosu.
  • Nedokumentiranje izvora/pretpostavke: Nezapisivanje izvora i pretpostavke korištene formule.
  • Bez verzije: Ostavljanje računa kao jednokratne datoteke bez mogućnosti praćenja (git).

Ukratko

  • Python čini inženjersko računanje ponovljivim, sljedivim i kontroliranim verzijama.
  • AI je vrlo brz u generiranju koda; Ali činjenica da kod radi bez grešaka ne znači da ispravno izračunava.
  • Svaki kôd treba potvrditi testiranjem poznatih rezultata, provjerom jedinice i rubnim slučajevima.
  • Pogreške jedinica najčešći su i najpodmukliji izvor pogreške; Obranite se sustavom jedne jedinice, nomenklaturom ili pintom.
  • Validirana automatizacija štedi vrijeme i daje povjerenje; Neprovjereni kod je opasan.

Zadatak aplikacije

Odaberite ponavljajući inženjerski izračun (kao što je naprezanje, snaga pumpe, toplinsko opterećenje). Napišite Python funkciju u AI koji radi ovaj izračun; Zakomentirajte jedinicu svakog ulaza i izlaza i dodajte test tvrdnje s poznatim rezultatom. Pokrenite test i provjerite prolazi li. Zatim napravite još dvije provjere: pokušajte s rubnim slučajem (nulti ili negativni unos) da provjerite vraća li kod značajnu pogrešku i ručno navedite jedinicu izlaza u primjeru. Ako je moguće, proizvedite i jedinično sigurnu verziju u litri. Na kraju dodajte pretpostavke izračuna, izvor formule i datum kodu kao kratkom naslovu i napišite zašto ovaj kod i dalje zahtijeva odobrenje inženjera.

popis za provjeru

  • [ ] Ulazne i izlazne jedinice jasno su dokumentirane u kodu; odabran je sustav jedne jedinice.
  • [ ] Test (assert) s poznatim rezultatom je dodan i prošao.
  • [ ] Pokušan je barem jedan rubni slučaj (nula/negativan); Kod je dao značajnu pogrešku.
  • [ ] Jedinica izlaza je data ručnim primjerom (bez pretpostavke "radio = ispravno").
  • [ ] Izvor formule, pretpostavke i datum navedeni u kodu.
  • [ ] Račun se može pratiti/pratiti; konačno odobrenje prepušteno je inženjeru.