Kasu:
- Võimalus automatiseerida tehisintellekti toega Pythoni koodiga inseneriarvutusi, üksuste haldust ja andmetöötlust
- Võimalus kinnitada AI-koodi üksuse kontrollimise, teadaolevate tulemuste testimise ja servajuhtumitega
- Võimalus omandada harjumus toota korratavaid, jälgitavaid ja versioonikontrolliga kontodokumente
Masinaehituses tehakse ikka ja jälle sama arvutus: osade perekonna pinged, pumba võimsus erinevate tööpunktide jaoks, omaduste tabelid erinevatel temperatuuridel. Nende käsitsi tegemine on nii aeglane kui ka veaohtlik. Python (lihtsalt õpitav programmeerimiskeel, millel on rikkalikud inseneriteegid) automatiseerib need iteratsioonid; See muudab konto korratavaks, jälgitavaks ja versiooni kontrollitavaks. Tehisintellekt (AI) Python on koodi genereerimisel uskumatult kiire: teisendab valemit funktsiooniks, lisab üksuste haldust, loeb andmeid, joonistab graafikuid. Kuid siin on ohtlik eksiarvamus: see, et kood töötab ilma vigadeta, ei tähenda, et see arvutab õigesti. AI-kood võib vaikselt tagastada valesid tulemusi vale ühikute teisendamise, vale valemi või äärmuslikel juhtudel ning programm jätkab töötamist ilma vigadeta. Seetõttu on iga tehisintellektiga toodetud insenerikood; Teadaolevate tulemustega testimise sisendid on ebausaldusväärsed ilma ühiku (suuruse) kontrollimise ja servakatsetusteta. Selles üksuses saate teada, kuidas Pythoni konto automatiseerimist tehisintellektiga ohutult seadistada.
Miks koodikonto? Jälgitavus ja reprodutseeritavus
Käsitsi arvutamine on ühekordne; Kui sisend muutub, tehakse seda nullist ja vahepealsed sammud lähevad kaotsi. Koodis tehtav arvutamine on nagu dokument: sisendid, valemid ja väljundid on selgelt kirjas; muudate sisendit ja saate mõne sekundi jooksul uue tulemuse; Versioonikontrolliga (nagu git) saab jälgida "mida ma millise väärtusega mis kuupäeval arvutasin". See on kontrolli ja vastutuse seisukohast hindamatu. Kuid see võimsus sõltub koodi õigsusest; Vale kood annab vale tulemuse, samuti reprodutseeritavalt ja kiiresti.
Näpunäide. Kirjutage iga arvutusfunktsiooni jaoks test, mille kõrval on teadaolev tõene tulemus (Pythonis kinnitage). Näiteks peaks teie pingefunktsioon teadaolevas proovis andma 28,1 MPa. See test hoiatab teid kohe, kui tulevikus koodi muutmisel midagi rikute. Testimata insenerikood on kinnitamata konto.
Mahuhaldus: kõige levinum tõrkeallikas
Insenerikoodis tuleb enamik vigu ühikutest: N kN-ga, m mm-ga, Pa MPa-ga, mida võib segi ajada koefitsiendiga 1000 või 1 000 000. Seal on kaks kaitset. Esimene on distsipliin: ühe ühikusüsteemi valimine algusest peale (nt N, mm, MPa) ja kõigi sisendite teisendamine sellesse ning ühikute lisamine muutujate nimedesse (pikkus_mm, jõud_N). Teine on tööriist: teek nagu pint kannab ühikuid koodi sees ja tuvastab ebajärjekindla toimingu veana.
Lähenemine
Kuidas see toimib
Eelis
Nimetamise distsipliin
nagu jõud_N, pikkus_mm
Lihtne, sõltuvusteta
ühe ühiku süsteem
Kõik teisendati N-mm-MPa-ks
Lihtsus, kiirus
pinti raamatukogu
Liigutab ühikut muutuja kaupa
Tabab automaatselt ebakõla
Teadaoleva tulemuse test
viide väitega
Tabab valemi/ühiku vea
Ettevaatust. Tehisintellekti loodud koodis võib ühikute teisendus puududa või olla vale ja kood ikkagi "töötab". Näiteks kui läbimõõt on mm ja pindala on eeldatavasti m², hälbib tulemus 1 000 000 korda, kuid programm ei anna viga. Enne koodi käivitamist kommenteerige sisendite ja väljundi ühikud; seejärel esitage tulemus tuntud näitega.
Samm-sammult: AI kontrollitav kontokood
- Selgitage probleem ja üksuse süsteem. Sisendid, väljundid, ühikud.
- Looge funktsioon. Üksik vastutav, tõlgendav, ühtne.
- Lisage teadaolevate tulemuste test. Kinnitage viitenäite abil.
- Proovige servaümbriseid. Null, negatiivne, väga suur/väike sisend.
- Tehke üksuse kontroll. Kas väljundühik vastab ootustele?
- Dokument ja versioon. Eeldused, allikas, kuupäev; jälgitavus gitiga.
Viip, mis genereerib funktsioone ja teste
Roll: Kogenud Pythoni arendaja, kes kirjutab tehnilisi arvutusi. Ülesanne: Kirjutage funktsioon, mis arvutab ristkülikukujulise ristlõikega konsooltala maksimaalse paindepinge. Sisend: F (N), L (mm), b (mm), h (mm). Väljund: sigma (MPa). Kokkulepe: mõõtühikute süsteem N-mm-MPa; kommenteerige iga kirje ühikut.Reegel: kasutage I = b*h^3/12 ja sigma = M*c/I; kommenteerige samme.Reegel: Lisa test TEADTU TULEMUSEGA: sigma ~28,1 MPa F=500,L=300,b=20,h=40; Kontrollige väitega (väike tolerants).
Edge olekuviip
Lisage ülaltoodud funktsioonile servade suurtähtede kontroll:- Kui b, h või L on null või negatiivne, andke märkimisväärne viga (tõstke ValueError).- Kommenteerige, kui väga suurte/väikeste sisendite puhul esineb ületäitumise/täpsuse probleem. Lisa ka veel 3 erinevat testi sisendit ja kirjuta oodatud tulemus; selgitage tulemusi nii, et saaksin neid käsitsi kontrollida.
Seadme turvalisuse (pint) viip
Ühikukindel sama konto pint-teegiga. Olgu sisendid määratletud ühikutes (nt 500 * ureg.newton). Teisendage väljund MPa-ks ja printige see. Lisage väike näide, mis näitab, kuidas pint ebaõnnestub, kui sisestate vale ühikuga sisendi.
Koodikontrolli viip
Kritiseerige minu allolevat inseneriarvutuskoodi koodi ülevaatuse vaatenurgast, pole minuga nõus. Eelkõige: kas ühikute teisendamine on õige, kas valem on õige, kas on arvestatud servajuhtumeid (null, negatiivne), kas testid on tõesti kinnitavad? Kirjutage iga leiu kohta, kuidas seda parandada.[kood]
Nõrk viip / Tugev viip
Nõrk viip:
Kirjutage stressi arvutamiseks Pythoni kood.
Ühikute, valemite, sisenddefinitsioonide ja testide valik puudub; AI genereerib koodi, mis töötab, kuid on kontrollimata ja mille ühik on teadmata.
Võimas viip:
Kirjutage konsooltala paindepinge funktsioon. Sisend F(N), L(mm), b(mm),h(mm); väljundsigma (MPa). N-mm-MPa süsteem, täpsustage iga ühik kommentaaris. Lisa teadaolevate tulemustega test (F=500, L=300, b=20, h=40 → ~28,1 MPa, kinnita). Esitage null/negatiivne sisendi puhul viga. Tõlgendada äärejuhtumeid.
Teine viip nõuab ühikusüsteemi, valemit, sisendeid, testi ja servajuhtumeid; See muudab koodi kontrollitavaks.
Kolm miniümbrist (numbrite järgi)
Juhtum 1 – vaikse helitugevuse viga. AI loodud pindalaarvutus võtab läbimõõdu mm² ja annab mm² koos pi*d**2/4, kuid järgmine rida paneb selle valemisse, mis eeldab m²; Kood töötab vigadeta ja annab stressi 1 000 000 korda väiksemaks. Kui insener käivitab testi teadaoleva tulemusega (assert abs(sigma-28.1)<0,5), test plahvatab ja viga tabatakse. Kui testi poleks olnud, oleks vale tulemus märkamatult protokolli jõudnud. Õppetund: töökood ≠ õige kood.
Juhtum 2 – Edge State krahh. Osaperekonna jaoks tsüklis olevas koodis sisestatakse paksus h=0 ühele reale; Kui I = b*h**3/12 = 0, annab sigma = M*c/I vea jagamise nulliga. Tänu tehisintellekti lisatud juhtelemendile if h<=0: raise ValueError peatub kood sisuka sõnumiga ega tooda vaikselt infot. Õppetund: käsitsege servajuhtumeid eelnevalt.
Juhtum 3 – korratavuse võimendus. Inseneril kulus 40 erineva tööpunkti pumba võimsuse käsitsi arvutamiseks pool päeva. AI-s kirjutatud skript loeb CSV-d, arvutab iga rea võimsuse ja kontrollib teadaolevat punkti kinnitusega, vähendades tööd ~ 2 minutini ja kirjutades tulemused jälgitavasse faili. Kui kirje muutub, uuendatakse kogu tabelit iga sekundi järel. Õppetund: kontrollitud automatiseerimine on nii kiire kui ka usaldusväärne.
Levinud vead
- "Töötatud = õige" eksitus: arvamine, et kood, mis töötab ilma vigadeta, on õige.
- Testide kirjutamata jätmine: koodile tuginemine ilma teadaoleva tulemusega võrdlustestita.
- Ühiku ebaselgus: sisend-/väljundühikute tõlgendamata jätmine, teisendamise vahelejätmine.
- Äärejuhtude ignoreerimine: vaikne viga või krahh null-/negatiivsel sisendil.
- Allika/eelduse dokumenteerimata jätmine: kasutatud valemi allika ja eelduse kirjutamata jätmine.
- Ei versiooni loomist: konto jätmine ühekordseks failiks, muutmata seda jälgitavaks (git).
Kokkuvõttes
- Python muudab inseneriarvutused korratavaks, jälgitavaks ja versioonikontrollitavaks.
- AI on koodi genereerimisel väga kiire; Kuid see, et kood töötab ilma vigadeta, ei tähenda, et see arvutab õigesti.
- Iga kood tuleks kinnitada teadaolevate tulemuste testimise, üksuse kontrollimise ja servajuhtude abil.
- Üksuse vead on kõige sagedasemad ja salakavalamad veaallikad; Kaitske ühe ühiku süsteemi, nomenklatuuri või pinti abil.
- Valideeritud automatiseerimine säästab aega ja annab kindlustunde; Kontrollimata kood on ohtlik.
Rakenduse ülesanne
Valige korduv tehniline arvutus (nt pinge, pumba võimsus, soojuskoormus). Kirjutage Pythoni funktsioon tehisintellektile, mis seda arvutust teeb; Kommenteerige iga sisendi ja väljundi ühikut ning lisage teadaoleva tulemusega kinnitustest. Käivitage test ja vaadake, kas see läbib. Seejärel tehke veel kaks kontrolli: proovige äärt (null või negatiivne sisend), et kontrollida, kas kood tagastab olulise vea, ja sisestage näites käsitsi väljundi ühik. Võimalusel laske ka ühikukindel versioon toota pindis. Lõpuks lisage koodile lühipealkirjana arvutuse eeldused, valemi allikas ja kuupäev ning kirjutage, miks see kood vajab ikkagi inseneri kinnitust.
kontrollnimekiri
- [ ] Sisend- ja väljundühikud on koodis selgelt dokumenteeritud; valiti ühe ühiku süsteem.
- [ ] Lisati teadaoleva tulemusega test (väide) ja see läbiti.
- [ ] Prooviti vähemalt ühte servajuhtu (null/negatiivne); Kood andis olulise vea.
- [ ] Väljundi ühik esitati käsitsi näite abil (ei eeldanud, et "töötas = õige").
- [ ] Koodis märgitud valemi allikas, eeldused ja kuupäev.
- [ ] Konto on jälgitav/jälgitav; lõplik heakskiit jäeti insenerile.