Vienība 10 / 11

Inženiertehniskā aprēķinu automatizācija ar Python

Ieguvumi:

  • Spēja automatizēt inženiertehnisko aprēķinu, vienību pārvaldību un datu apstrādi ar AI darbinātu Python kodu
  • Spēja apstiprināt AI kodu ar vienību pārbaudi, zināmu rezultātu testēšanu un malas gadījumiem
  • Spēja iegūt ieradumu veidot atkārtojamus, izsekojamus un ar versiju kontrolētus konta dokumentus

Mašīnbūvē atkal un atkal tiek veikts viens un tas pats aprēķins: detaļu saimes spriegumi, sūkņa jauda dažādiem darbības punktiem, īpašību tabulas dažādās temperatūrās. To manuāla veikšana ir gan lēna, gan kļūdu iespējamība. Python (viegli apgūstama programmēšanas valoda ar bagātīgām inženierzinātņu bibliotēkām) automatizē šīs iterācijas; Tas padara kontu atkārtojamu, izsekojamu un versiju kontrolējamu. Mākslīgais intelekts (AI) Python neticami ātri ģenerē kodu: pārvērš formulu funkcijā, pievieno vienību pārvaldību, nolasa datus, zīmē grafikus. Bet šeit ir bīstams nepareizs priekšstats: tas, ka kods darbojas bez kļūdām, nenozīmē, ka tas aprēķina pareizi. AI kods var klusi atgriezt nepareizus rezultātus nepareizas vienību pārveidošanas, nepareizas formulas vai malas gadījumos, un programma turpinās darboties bez kļūdām. Tāpēc katrs inženierijas kods, kas ražots ar AI; Testa ievades ar zināmiem rezultātiem nav uzticamas, ja tās nepārbauda ar vienības (izmēra) pārbaudi un malu gadījuma izmēģinājumiem. Šajā nodaļā jūs uzzināsit, kā droši iestatīt Python konta automatizāciju, izmantojot AI.

Kāpēc kodu konts? Izsekojamība un reproducējamība

Manuāls aprēķins ir vienreizējs; Kad ievade tiek mainīta, tas tiek darīts no nulles, un starpposmi tiek zaudēti. Kodā veikts aprēķins ir kā dokuments: ievades, formulas un izvades ir skaidri uzrakstītas; jūs maināt ievadi un dažu sekunžu laikā iegūstat jaunu rezultātu; Ar versiju kontroli (piemēram, git) var izsekot "ko es aprēķināju ar kuru vērtību kurā datumā". Tas ir nenovērtējams kontroles un atbildības ziņā. Bet šī jauda ir atkarīga no koda pareizības; Nepareizs kods rada nepareizu rezultātu, turklāt reproducējami un ātri.

Padoms. Katrai skaitļošanas funkcijai uzrakstiet testu ar zināmu patieso rezultātu (apliecināt Python). Piemēram, jūsu stresa funkcijai zināmā paraugā vajadzētu dot 28,1 MPa. Šis tests nekavējoties brīdina jūs, ja turpmāk mainot kodu, jūs kaut ko sabojāsit. Inženiertehniskais kods, kas nav pārbaudīts, ir nepārbaudīts konts.

Apjoma pārvaldība: visizplatītākais kļūdu avots

Inženierkodā lielākā daļa kļūdu nāk no mērvienībām: N ar kN, m ar mm, Pa ar MPa, ko var sajaukt ar koeficientu 1000 vai 1 000 000. Ir divi aizsardzības līdzekļi. Pirmā ir disciplīna: no sākuma izvēlēties vienu vienību sistēmu (piemēram, N, mm, MPa) un pārveidot tajā visas ievades un pievienot vienības mainīgo nosaukumiem (garums_mm, spēks_N). Otrais ir rīks: tāda bibliotēka kā pinte satur vienības kodā un nekonsekvento darbību uztver kā kļūdu.

Pieeja

Kā tas darbojas

Priekšrocība

Nosaukšanas disciplīna

piemēram, spēks_N, garums_mm

Vienkārši, bez atkarībām

vienas vienības sistēma

Viss pārveidots par N-mm-MPa

Vienkāršība, ātrums

pintes bibliotēka

Pārvieto vienību pēc mainīgā

Automātiski uztver neatbilstības

Zināmais testa rezultāts

atsauce ar apgalvojumu

Noķer formulas/vienības kļūdu

Uzmanību: mākslīgā intelekta ģenerētajā kodā var nebūt vienības konvertēšanas vai tas ir nepareizs, un kods joprojām "darbosies". Piemēram, ja diametrs ir mm un laukums ir paredzēts m², rezultāts novirzīsies 1 000 000 reižu, bet programma nedos kļūdu. Pirms koda palaišanas komentējiet ievades un izvades vienības; pēc tam sniedziet rezultātu ar zināmu piemēru.

Soli pa solim: AI verificējams konta kods

  1. Noskaidrojiet problēmu un vienību sistēmu. Ieejas, izejas, vienības.
  2. Ģenerējiet funkciju. Viens atbildīgs, interpretējošs, vienots.
  3. Pievienojiet zināmus testa rezultātus. Apgalvot ar atsauces piemēru.
  4. Izmēģiniet malas futrāļus. Nulle, negatīva, ļoti liela/maza ievade.
  5. Veiciet vienības pārbaudi. Vai izvades vienība atbilst gaidītajam?
  6. Dokuments un versija. Pieņēmumi, avots, datums; izsekojamība ar git.

Uzvedne, kas ģenerē funkcijas un testus

Loma: Pieredzējis Python izstrādātājs, kas raksta inženiertehniskos aprēķinus. Uzdevums: Uzrakstiet funkciju, kas aprēķina maksimālo lieces spriegumu taisnstūra šķērsgriezuma konsoles sijā. Ievade: F (N), L (mm), b (mm), h (mm). Izvade: sigma (MPa). Vienošanās: Mērvienību sistēma N-mm-MPa; komentējiet katra ieraksta vienību.Noteikums: izmantojiet I = b*h^3/12 un sigma = M*c/I; komentējiet darbības.Noteikums: pievienojiet testu ar ZINĀMU REZULTĀTU: sigma ~28,1 MPa F=500,L=300,b=20,h=40; Pārbaudiet ar apgalvojumu (maza pielaide).

Edge statusa uzvedne

Pievienojiet iepriekšminētajai funkcijai malu reģistru pārbaudes:- Ja b, h vai L ir nulle vai negatīvs, norādiet būtisku kļūdu (palieliniet ValueError).- Komentējiet, ja ir pārpildes/precizitātes problēma ar ļoti lielu/mazu ievadi. Pievienojiet arī vēl 3 dažādas testa ievades un uzrakstiet gaidāmo rezultātu; izskaidrojiet rezultātus tā, lai es varētu tos pārbaudīt manuāli.

Vienības drošības (pintes) uzvedne

Vienībai drošs tas pats konts ar “pintes” bibliotēku. Ļaujiet ievades definēt vienībās (piemēram, 500 * ureg.newton). Konvertējiet izvadi uz MPa un izdrukājiet to. Pievienojiet nelielu piemēru, kas parāda, kā pint neizdodas, ja tiek ievadīta nepareiza vienība.

Koda pārbaudes uzvedne

Kritizējiet manu inženiertehnisko aprēķinu kodu no koda pārskatīšanas viedokļa, nepiekrītu man. Jo īpaši: vai mērvienību pārvēršana ir pareiza, vai formula ir pareiza, vai ir ņemti vērā malu gadījumi (nulle, negatīvs), vai testi patiešām apstiprina? Pie katra atraduma uzrakstiet, kā to labot.[kods]

Vāja uzvedne / spēcīga uzvedne

Vāja uzvedne:

Uzrakstiet Python kodu stresa aprēķināšanai.

Nav vienību, formulu, ievades definīciju un testu izvēles; AI ģenerē kodu, kas darbojas, bet nav pārbaudīts un kura vienība nav zināma.

Spēcīga uzvedne:

Uzrakstiet lieces sprieguma funkciju konsoles sijā. Ievade F(N), L(mm), b(mm),h(mm); izejas sigma (MPa). N-mm-MPa sistēma, katru mērvienību norādiet komentārā. Pievienojiet testu ar zināmiem rezultātiem (F=500, L=300, b=20, h=40 → ~28,1 MPa, apgalvot). Norādiet kļūdu nulles/negatīvās ievades gadījumā. Interpretējiet malas gadījumus.

Otrajai uzvednei ir nepieciešama vienību sistēma, formula, ievades, tests un malas gadījumi; Tas padara kodu pārbaudāmu.

Trīs mini futrāļi (pēc numuriem)

1. gadījums — klusuma skaļuma kļūda. AI veiktais laukuma aprēķins ņem diametru mm un dod mm² ar pi*d**2/4, bet nākamajā rindā to ievieto formulā, kas paredz m²; Kods darbojas bez kļūdām un rada 1 000 000 reižu mazāku stresu. Kad inženieris palaiž testu ar zināmu rezultātu (abs(sigma-28.1)<0.5), tests eksplodē un kļūda tiek fiksēta. Ja testa nebūtu, tad nepamanīti ziņojumā būtu iekļuvuši nepareizi rezultāti. Nodarbība: darba kods ≠ pareizs kods.

2. gadījums — malas stāvokļa avārija. Kodā, kas veic cilpas detaļu saimei, vienā rindā tiek ievadīts biezums h=0; Ja I = b*h**3/12 = 0, sigma = M*c/I nodrošina dalījumu ar nulli kļūdu. Pateicoties AI pievienotajai kontrolei if h<=0: raise ValueError, kods apstājas ar jēgpilnu ziņojumu un klusi nerada inf. Nodarbība: iepriekš rīkojieties ar malām.

3. gadījums — atkārtojamības pieaugums. Inženierim vajadzēja pusi dienas, lai manuāli aprēķinātu sūkņa jaudu 40 dažādiem darbības punktiem. AI rakstīts skripts nolasa CSV, aprēķina katras rindas jaudu un pārbauda zināmo punktu ar apgalvojumu, samazinot darbu līdz ~ 2 minūtēm un ierakstot rezultātus izsekojamā failā. Kad ieraksts mainās, visa tabula tiek atjaunināta katru sekundi. Nodarbība: pārbaudīta automatizācija ir gan ātra, gan uzticama.

Biežas kļūdas

  • Kļūda “Strādāts = pareizi”: uzskats, ka kods, kas darbojas bez kļūdām, ir pareizs.
  • Testu nerakstīšana: paļaušanās uz kodu bez atsauces testa ar zināmu rezultātu.
  • Vienību neskaidrība: ievades/izvades vienību atstāšana neinterpretēta, pārveidošanas izlaišana.
  • Malu gadījumu ignorēšana: klusa kļūda vai avārija nulles/negatīvas ievades gadījumā.
  • Avota/pieņēmuma nedokumentēšana: neizmantotās formulas avota un pieņēmuma nepierakstīšana.
  • Nav versiju noteikšana: konta atstāšana kā vienreizējs fails, nepadarot to izsekojamu (git).

Rezumējot

  • Python padara inženierijas aprēķinus atkārtojamu, izsekojamu un kontrolējamu versiju.
  • AI ļoti ātri ģenerē kodu; Bet tas, ka kods darbojas bez kļūdām, nenozīmē, ka tas aprēķina pareizi.
  • Katrs kods ir jāapstiprina, izmantojot zināmu rezultātu testēšanu, vienību pārbaudi un malas gadījumus.
  • Vienības kļūdas ir visizplatītākais un mānīgākais kļūdu avots; Aizstāvēt ar vienas vienības sistēmu, nomenklatūru vai pinti.
  • Validēta automatizācija ietaupa laiku un sniedz pārliecību; Nepārbaudīts kods ir bīstams.

Lietojumprogrammas uzdevums

Izvēlieties periodisku inženiertehnisko aprēķinu (piemēram, spriegumu, sūkņa jaudu, siltuma slodzi). Ierakstiet Python funkciju AI, kas veic šo aprēķinu; Komentējiet katras ievades un izvades vienību un pievienojiet apgalvojuma testu ar zināmu rezultātu. Palaidiet testu un pārbaudiet, vai tas iztur. Pēc tam veiciet vēl divas pārbaudes: izmēģiniet malas reģistru (nulle vai negatīva ievade), lai pārbaudītu, vai kods atgriež nozīmīgu kļūdu, un manuāli norādiet izvades vienību piemērā. Ja iespējams, nodrošiniet arī vienībai drošu versiju, kas ražota puslitrā. Visbeidzot pievienojiet kodam aprēķina pieņēmumus, formulas avotu un datumu kā īsu nosaukumu un uzrakstiet, kāpēc šim kodam joprojām ir nepieciešams inženiera apstiprinājums.

kontrolsaraksts

  • [ ] Ievades un izvades vienības ir skaidri dokumentētas kodā; tika izvēlēta vienas vienības sistēma.
  • [ ] Tika pievienots un nokārtots tests (apgalvojums) ar zināmu rezultātu.
  • [ ] Tika mēģināts vismaz viens malas gadījums (nulle/negatīvs); Kods radīja būtisku kļūdu.
  • [ ] Izvades vienība tika sniegta manuālā piemērā (nepieņemot, ka "strādāja = pareizi").
  • [ ] Kodā norādīts formulas avots, pieņēmumi un datums.
  • [ ] Konts tiek izsekots/izsekojams; galīgais apstiprinājums tika atstāts inženiera ziņā.