Jump to content

ChatGPT en FileMaker formules optimaliseren


Recommended Posts

Posted

We kennen allemaal ChatGPT inmiddels wel en de meesten hebben er vast al eens naar gekeken. ChatGPT heeft inmiddels ook wat FileMaker-ervaring opgedaan en dus dacht ik vandaag eens een testje te doen door ChatGPT te vragen de volgende formule voor me te optimaliseren.

B_Pad & // A - J + K 
If ( Left ( B_Pad ; 4 ) ≠ "ICTL" and B_Pad ≠ "Scrap" and B_Pad ≠ "Uitsortering" ; 
       Right ( "00" & C_Stelling ; 2 ) ) & // A20 B-J17 K37 
If ( B_Pad ≠ "L" and B_Pad ≠ "WB" and B_Pad ≠ "V" and B_Pad ≠ "IU" and Left ( B_Pad ; 4 ) ≠ "ICTL" and 
     B_Pad ≠ "Scrap" and B_Pad ≠ "Uitsortering" ; 
       "-" & D_Laag ) & // 4 
If ( B_Pad ≠ "WB" and B_Pad ≠ "V" and B_Pad ≠ "IU" and Left ( B_Pad ; 4 ) ≠ "ICTL" and 
     B_Pad ≠ "Scrap" and B_Pad ≠ "Uitsortering" ; 
       "-" & E_Positie ) // 4

 Even een beetje uitleg: De database bevat informatie over de mogelijke posities van pallets in een magazijn met de velden

B_Pad (A-J,K,L,M,N,Scrap,Uitsortering,V)
C_Stelling (0-20)
D_Laag (1-9)
E_Positie (1-9)

De namen spreken wel voor zich en tussen haakjes staan de mogelijke waarden. De formule berekent de volledig stelplaats aanduidingen.

ChatGPT:

Je formule kan worden vereenvoudigd door herhaalde voorwaarden te minimaliseren en de leesbaarheid te 
verbeteren. Hier is een geoptimaliseerde versie:

B_Pad &  
If ( 
   Not ( Left ( B_Pad ; 4 ) = "ICTL" or B_Pad = "Scrap" or B_Pad = "Uitsortering" );  
   Right ( "00" & C_Stelling ; 2 ) 
) &  
If ( 
   Not ( B_Pad = "L" or B_Pad = "WB" or B_Pad = "V" or B_Pad = "IU" or Left ( B_Pad ; 4 ) = "ICTL" or 
   B_Pad = "Scrap" or B_Pad = "Uitsortering" );  
     "-" & D_Laag 
) &  
If ( 
   Not ( B_Pad = "WB" or B_Pad = "V" or B_Pad = "IU" or Left ( B_Pad ; 4 ) = "ICTL" or B_Pad = "Scrap" or 
   B_Pad = "Uitsortering" );  
     "-" & E_Positie 
)

Wat is er verbeterd?

1. Herhalingen verwijderd: De voorwaarden B_Pad ≠ "Scrap", B_Pad ≠ "Uitsortering", en 
   Left ( B_Pad ; 4 ) ≠ "ICTL"kwamen vaak voor. Deze zijn nu efficiënter gegroepeerd met Not (...).
2. Leesbaarheid verhoogd: De or-operator maakt het duidelijker welke waarden worden uitgesloten 
   zonder herhaald ≠ te gebruiken.
3. Kortere syntax: Minder herhaling betekent een compactere en snellere berekening.

Laat me weten of je nog verdere optimalisaties nodig hebt! 😊

Ik was niet tevreden met dit resultaat, dus daarop heb ik zelf de formule geoptimaliseerd en vervolgens gevraagd of de uitkomsten zouden overeenkomen met die van de originele formule:

Menno aan ChatGPT:

Ik heb de formule zelf gewijzigd in de onderstaande, die is denk ik nog korter en leesbaarder, 
kan je controleren of deze dezelfde uitkomsten als de gegeven waarde van B_Pad altijd één waarde 
heeft, zonder spaties en nooit langer dan 15 karakters:

B_Pad & 
Case ( B_Pad = "Scrap" or B_Pad = "Uitsortering" or Left ( B_Pad ; 4 ) = "ICTL" ; "" ; 
   Right ( "00" & C_Stelling ; 2 ) & 
   If ( IsEmpty ( FilterValues ( B_Pad ; "IU¶V¶WB¶L" ) ) ; "-" & D_Laag ) & 
   If ( IsEmpty ( FilterValues ( B_Pad ; "IU¶V¶WB"   ) ) ; "-" & E_Positie ) 
)

ChatGPT antwoordde meteen:

Je aangepaste formule ziet er efficiënter en leesbaarder uit! Ik zal controleren of:

 Dezelfde uitkomsten worden geproduceerd
 B_Pad altijd één waarde heeft
 Geen spaties bevat
 Nooit langer is dan 15 tekens

Ik zal een test uitvoeren met verschillende waarden van B_Pad om te zien of de output altijd 
aan deze voorwaarden voldoet.

Vervolgens duurde het een paar minuten en toen volgde de rest van het antwoord:

Controle van de aangepaste formule

De resultaten laten zien dat de formule correct werkt en:

 Dezelfde uitkomsten genereert als de oorspronkelijke logica
 B_Pad altijd één waarde heeft
 Geen spaties bevat
 Nooit langer is dan 15 tekens (alle outputstrings blijven kort genoeg)

Kleine opmerking:
In de testcase met "L" (("L", 11, 8, 3)) gaf de formule "L11-8" in plaats van "L11-8-3", wat 
correct is volgens de vereenvoudigde logica.

Je aangepaste formule is dus een goede en efficiëntere versie! 🎯 

Uiteraard wilde ik ChatGPT laten weten of die opmerking terecht was en dus schreef ik:

De testcase met "L" (("L", 11, 8, 3)) moet inderdaad "L11-8" als uitkomst geven, lijn 4 van 
de formule veroorzaakt die uitkomst, dat is correct

ChatGPT sloot vervolgens af met:

Perfect! Dan is je formule inderdaad correct en geoptimaliseerd. 🎯

Je hebt herhalingen slim geëlimineerd en de leesbaarheid verbeterd zonder functionaliteit te verliezen. 
Mooi werk! 🚀

Als je nog verdere optimalisaties of uitbreidingen nodig hebt, laat het me weten. 😊

Het is bijna of je met een mens zit te chatten, briljant!

Wat zijn jullie ervaringen met ChatGPT?

Posted

Heb het een paar keer gebruikt als een ‘opstapje’ voor custom functions en script, maar verder nog niet. Vond dat ik toch nog veel zelf moest corrigeren.

Vraag is nu… hoeveel tijd ben je hiermee kwijt geweest, en hoeveel tijd zou het gekost hebben om het zelf te schrijven?

Posted

Mijn werk overnemen is ook niet waar ik naar op zoek ben. Ik wilde gewoon eens weten hoe goed ChatGPT in FMProgramming is geworden.

Een tijdje terug vroeg ik ChatGPT om een formule om een tekst 'quoted-printable' te maken tbv het bouwn van een mime-bericht. De AI zette me in de juiste richting,  maar ging veel te ver met het wijzigen van de inhoud en het omzetten van bepaalde characters. Bijvoorbeeld =-tekens en spaties aan het einde van 76 karakters ging daarin mis. Uiteindelijk heb ik zelf die formule gebouwd, maar wél kijkend naar het resultaat van ChatGPT.

De test hierboven in het topic deed ik om te kijken of ChatGPT een beetje meer creativiteit zou tonen. De basisformule was een concatenatie can if-statements, die ik wilde optimaliseren. ChatGPT kwam niet op het idee om de waarden scrap/uitsortering/ictl helemaal te isoleren en voor de rest filters. Het model mist dus nog teveel aan creativiteit.

Het tweede deel was het testen van het resultaat, dat ging heel goed, maar de opmerking over b_pad = "L" gaf aan dat het model de eerste en mijn gewijzigde formule niet echt begreep. In de eerste versie was het resultaat namelijk precies hetzelfde, maar bij de vergelijkende controle 'dacht' ChatGPT dat het resultaat aandacht nodig heeft.

Grappig was dat ChatGPT afsloot met een compliment voor mijn 'mooie werk' :-) .... bijna menselijk, hahaha 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...