Eenheid 10 / 11

Automatisering van technische berekeningen met Python

Winst:

  • Mogelijkheid om technische berekeningen, eenheidsbeheer en gegevensverwerking te automatiseren met AI-aangedreven Python-code
  • Mogelijkheid om AI-code te valideren met eenheidscontrole, testen van bekende resultaten en edge cases
  • Mogelijkheid om de gewoonte te verwerven om herhaalbare, traceerbare en versiegestuurde accountdocumenten te produceren

In de machinebouw wordt steeds weer dezelfde berekening gemaakt: spanningen van een familie onderdelen, pompvermogen voor een reeks bedrijfspunten, eigenschappentabellen bij verschillende temperaturen. Het handmatig uitvoeren hiervan is traag en foutgevoelig. Python (een eenvoudig te leren programmeertaal met rijke bibliotheken voor engineering) automatiseert deze iteraties; Het maakt het account herhaalbaar, traceerbaar en versiebeheerd. Kunstmatige intelligentie (AI) Python is ongelooflijk snel in het genereren van code: het omzetten van een formule in een functie, het toevoegen van eenheidsbeheer, het lezen van gegevens, het plotten van grafieken. Maar er bestaat hier sprake van een gevaarlijke misvatting: het feit dat de code zonder fouten werkt, betekent niet dat deze correct berekent. De AI-code kan stilletjes onjuiste resultaten retourneren als gevolg van onjuiste eenheidsconversie, onjuiste formule of in randgevallen, en het programma blijft zonder fouten draaien. Dat is de reden waarom elke technische code die met AI is geproduceerd; Testinputs met bekende resultaten zijn onbetrouwbaar zonder verificatie door controle van eenheden (grootte) en edge case-proeven. In dit onderdeel leer je hoe je Python-accountautomatisering veilig kunt opzetten met AI.

Waarom een ​​codeaccount? Traceerbaarheid en reproduceerbaarheid

Een handmatige berekening is eenmalig; Wanneer een invoer verandert, gebeurt dit helemaal opnieuw en gaan tussenstappen verloren. Berekeningen in code zijn als een document: invoer, formules en uitvoer zijn duidelijk geschreven; je wijzigt een invoer en krijgt binnen enkele seconden een nieuw resultaat; Met versiebeheer (zoals git) kan worden bijgehouden "wat ik heb berekend met welke waarde op welke datum". Dit is van onschatbare waarde als het gaat om controle en verantwoording. Maar deze kracht hangt af van de juistheid van de code; Een verkeerde code levert het verkeerde resultaat op, bovendien reproduceerbaar en snel.

Tip: Schrijf een test voor elke rekenfunctie met een bekend waar resultaat ernaast (beweren in Python). Uw stressfunctie zou bijvoorbeeld 28,1 MPa moeten opleveren in een bekend monster. Deze test waarschuwt je meteen als je iets kapot maakt als je in de toekomst de code wijzigt. Technische code die niet is getest, is een niet-geverifieerd account.

Volumebeheer: meest voorkomende bron van fouten

In de technische code komen de meeste fouten uit eenheden: N met kN, m met mm, Pa met MPa, wat kan worden verward met een factor 1000 of 1.000.000. Er zijn twee verdedigingen. De eerste is discipline: vanaf het begin een systeem met één eenheid kiezen (bijvoorbeeld N, mm, MPa) en alle invoer ernaar omzetten en eenheden toevoegen aan de namen van de variabelen (lengte_mm, kracht_N). De tweede is het hulpmiddel: een bibliotheek zoals pint draagt ​​de eenheden binnen de code bij en vangt de inconsistente bewerking op als een fout.

Benadering

Hoe werkt het

Voordeel

Discipline benoemen

zoals kracht_N, lengte_mm

Eenvoudig, geen afhankelijkheden

enkelvoudig systeem

Allemaal omgezet naar N-mm-MPa

Eenvoud, snelheid

pint bibliotheek

Verplaatst eenheid per variabele

Ontdekt automatisch inconsistenties

Bekend resultaat test

referentie met bewering

Vangt formule-/eenheidsfouten op

Let op: Er kan een eenheidsconversie ontbreken of onjuist zijn in de door AI gegenereerde code en de code zal nog steeds "werken". Als de diameter bijvoorbeeld mm is en de oppervlakte naar verwachting m² zal het resultaat 1.000.000 keer afwijken, maar zal het programma geen foutmelding geven. Voordat u de code uitvoert, moet u commentaar geven op de eenheden van de invoer en uitvoer; Geef vervolgens het resultaat met een bekend voorbeeld.

Stap voor stap: AI-verifieerbare accountcode

  1. Verduidelijk het probleem en het eenhedensysteem. Ingangen, uitgangen, eenheden.
  2. Genereer de functie. Eén verantwoordelijke, interpretatief, verenigd.
  3. Test met bekende resultaten toevoegen. Beweren met referentievoorbeeld.
  4. Probeer randgevallen. Nul, negatief, zeer grote/kleine input.
  5. Voer een eenheidscontrole uit. Komt de eenheid van output overeen met wat wordt verwacht?
  6. Document en versie. Aannames, bron, datum; traceerbaarheid met git.

Prompt die functies en tests genereert

Rol: Ervaren Python-ontwikkelaar die technische berekeningen schrijft. Taak: Schrijf een functie die de maximale buigspanning in een vrijdragende ligger met rechthoekige doorsnede berekent. Invoer: F (N), L (mm), b (mm), h (mm). Output: sigma (MPa).Conventie: Eenhedensysteem N-mm-MPa; becommentarieer de eenheid van elke invoer. Regel: gebruik I = b*h^3/12 en sigma = M*c/I; becommentarieer de stappen. Regel: Voeg een test toe met BEKEND RESULTAAT: sigma ~28,1 MPa voor F=500,L=300,b=20,h=40; Controleer met assert (kleine tolerantie).

Randstatusprompt

Voeg randcontroles toe aan de bovenstaande functie: - Als b, h of L nul of negatief zijn, geef dan een significante fout op (verhoog ValueError). - Geef commentaar als er een overloop-/precisieprobleem is met zeer grote/kleine invoer. Voeg ook nog 3 verschillende testinvoer toe en schrijf het verwachte resultaat; leg de resultaten zo uit dat ik ze handmatig kan verifiëren.

Eenheidsbeveiliging (pint) prompt

Unit-safe hetzelfde account met de 'pint'-bibliotheek. Laat invoer definiëren in eenheden (bijvoorbeeld 500 * ureg.newton). Converteer de uitvoer naar MPa en druk deze af. Voeg een klein voorbeeld toe dat laat zien hoe pint mislukt als er een invoer met de verkeerde eenheid wordt gegeven.

Codecontroleprompt

Bekritiseer mijn technische berekeningscode hieronder vanuit het perspectief van een codebeoordeling, ben het niet met mij eens. In het bijzonder: is de omrekening van eenheden correct, is de formule correct, zijn er randgevallen (nul, negatief) in aanmerking genomen, zijn de tests werkelijk bevestigend? Schrijf voor elke bevinding hoe u deze kunt oplossen.[code]

Zwakke prompt/sterke prompt

Zwakke prompt:

Schrijf Python-code voor spanningsberekening.

Geen keuze uit eenheden, formules, invoerdefinities en tests; AI genereert code die werkt, maar niet is geverifieerd en waarvan de eenheid onbekend is.

Krachtige prompt:

Schrijf de buigspanningsfunctie in de vrijdragende balk. Invoer F(N), L(mm), b(mm),h(mm); uitgangssigma (MPa). N-mm-MPa-systeem, specificeer elke eenheid in de opmerking. Voeg een test toe met bekende resultaten (F=500, L=300, b=20, h=40 → ~28,1 MPa, beweren). Geef een fout op nul/negatieve invoer. Randgevallen interpreteren.

De tweede prompt vereist het eenheidssysteem, de formule, invoer, test en randgevallen; Het maakt de code verifieerbaar.

Drie mini-hoesjes (op nummer)

Geval 1 - Stille volumefout. De door AI geproduceerde oppervlakteberekening neemt de diameter in mm en geeft mm² met pi*d**2/4, maar de volgende regel plaatst dit in een formule die m² verwacht; De code werkt foutloos en geeft de stress 1.000.000 keer lager. Wanneer de ingenieur de test uitvoert met een bekend resultaat (beweren abs(sigma-28.1)<0,5), ontploft de test en wordt de fout opgemerkt. Als er geen test was geweest, zou de verkeerde uitslag ongemerkt in het rapport zijn terechtgekomen. Les: werkende code ≠ correcte code.

Geval 2 - Crash van de randstatus. In de code die voor een onderdeelfamilie wordt herhaald, wordt de dikte h=0 op één regel ingevoerd; Als I = b*h**3/12 = 0, geeft sigma = M*c/I een deling door nul. Dankzij de if h<=0: raise ValueError-besturing toegevoegd door AI, stopt de code met een betekenisvol bericht en produceert deze niet stilletjes inf. Les: behandel randgevallen vooraf.

Geval 3 – Verbetering van de herhaalbaarheid. Het kostte een ingenieur een halve dag om het pompvermogen voor 40 verschillende bedrijfspunten handmatig te berekenen. Het script, geschreven in AI, leest de CSV, berekent het vermogen voor elke regel en verifieert een bekend punt met assert, waardoor het werk wordt teruggebracht tot ~2 minuten en de resultaten naar een traceerbaar bestand worden geschreven. Wanneer een invoer verandert, wordt de hele tabel elke seconde bijgewerkt. Les: geverifieerde automatisering is zowel snel als betrouwbaar.

Veel voorkomende fouten

  • "Werkte = correct" denkfout: Denken dat code die zonder fouten werkt, correct is.
  • Geen tests schrijven: vertrouwen op code zonder een referentietest met een bekend resultaat.
  • Dubbelzinnigheid van eenheden: invoer-/uitvoereenheden niet geïnterpreteerd, conversie overslaan.
  • Randgevallen negeren: stille fout of crash bij nul/negatieve invoer.
  • Het niet documenteren van de bron/aanname: Het niet opschrijven van de bron en aanname van de gebruikte formule.
  • Geen versiebeheer: het account als een eenmalig bestand achterlaten zonder het traceerbaar te maken (git).

Samengevat

  • Python maakt technische berekeningen herhaalbaar, traceerbaar en versiegestuurd.
  • AI is erg snel in het genereren van code; Maar het feit dat de code zonder fouten werkt, betekent niet dat deze correct berekent.
  • Elke code moet worden gevalideerd door middel van testen met bekende resultaten, unit checking en edge cases.
  • Unitfouten zijn de meest voorkomende en meest verraderlijke bron van fouten; Verdedig per systeem met één eenheid, nomenclatuur of pint.
  • Gevalideerde automatisering bespaart tijd en geeft vertrouwen; Niet-geverifieerde code is gevaarlijk.

Applicatie taak

Kies voor een terugkerende technische berekening (zoals spanning, pompvermogen, warmtebelasting). Schrijf een Python-functie naar de AI die deze berekening doet; Geef commentaar op de eenheid van elke invoer en uitvoer en voeg een beweringstest toe met een bekend resultaat. Voer de test uit en kijk of deze slaagt. Voer vervolgens nog twee verificaties uit: probeer een randgeval (nul of negatieve invoer) om te controleren of de code een significante fout retourneert, en geef handmatig de eenheid van de uitvoer op in een voorbeeld. Laat indien mogelijk ook een unit-safe versie in pint produceren. Voeg ten slotte de aannames van de berekening, de bron van de formule en de datum toe aan de code als een korte titel en schrijf op waarom deze code nog steeds goedkeuring van de ingenieur vereist.

controlelijst

  • [ ] Invoer- en uitvoereenheden zijn duidelijk gedocumenteerd in de code; Er werd gekozen voor een enkelvoudig systeem.
  • [ ] Een test (assert) met bekend resultaat is toegevoegd en geslaagd.
  • [ ] Er is ten minste één randgeval (nul/negatief) geprobeerd; De code gaf een aanzienlijke fout.
  • [ ] De uitvoereenheid werd geleverd door een handmatig voorbeeld (er werd niet vanuit gegaan dat "werkte = correct").
  • [ ] Formulebron, aannames en datum vermeld in de code.
  • [ ] Account traceerbaar/bijgehouden; de uiteindelijke goedkeuring werd overgelaten aan de ingenieur.