OPTIMALISATIE IN INVENTOR
Paul Arts Nijmegen Februari 2005
- Optimalisatie in Inventor -
ONDERZOEK NAAR OPTIMALISATIE MOGELIJKHEDEN BINNEN INVENTOR
Project: Optimalisatie in Inventor. Auteur: Paul Arts. Begeleider docent: Dhr. Boeklagen. Bedrijf: TEC/CADCollege. Locatie: Nijmegen. Datum: Februari 2005.
- Nijmegen -
ii
- Optimalisatie in Inventor -
Samenvatting Dit is het verslag van de opdracht ‘Optimalisatie in Inventor’die tijdens de opleiding voor Mechanical Designer is uitgevoerd bij TEC/Cadcollege te Nijmegen. TEC staat voor Twente Engineering Consultancy en is een bedrijf dat kennisoverdracht in Computer Aided Design (CAD) verzorgt. Sinds een aantal jaren verzorgt TEC ook cursussen voor het pakket Inventor. De cursussen worden door dhr. Boeklagen gegeven. Vlak na zijn afstuderen heeft dhr. Boeklagen, tijdens een onderzoek naar de optimale vorm van een heupprothese, verschillende optimalisatietechnieken onderzocht. Hieruit is het idee ontstaan om te onderzoeken of deze optimalisatietechnieken ook in Inventor geïntegreerd kunnen worden. Door middel van praktische voorbeelden zouden de mogelijkheden van optimalisatie in de cursussen getoond kunnen worden. ‘Welke optimalisatietechnieken bestaan er en welke techniek kan het beste toegepast worden binnen Inventor’is de belangrijkste probleemstelling binnen dit onderzoek. De doelstelling van het onderzoek is om een demonstratieproject op te zetten dat laat zien hoe onderdelen binnen het ontwerppakket Inventor geoptimaliseerd kunnen worden. Inventor is een parametrisch 3D ontwerpprogramma voornamelijk bedoeld voor de machinebouw. Omdat een onderdeel in Inventor volledig parametrisch gemaakt kan worden en wijzigingen dus eenvoudig aangebracht kunnen worden en omdat de geometrische informatie van een onderdeel te alle tijde beschikbaar is, is het programma in theorie uitermate geschikt voor optimalisatie. Tijdens optimalisatie van een onderdeel wordt er gezocht naar het minimum of naar het maximum. Dit kan het minimale of maximale gewicht, volume, oppervlak of massatraagheidsmoment zijn. Doordat in Inventor 9 Professional een module van Ansys geïntegreerd is, kan een onderdeel ook geoptimaliseerd worden terwijl er rekening gehouden wordt met de spanningen in het onderdeel. De optimalisatie routine wordt door middel van Visual Basic for Applications in Inventor geschreven. Voordat de verschillende optimalisatietechnieken bestudeerd worden, is er een pakket van eisen opgesteld waar de uiteindelijke optimalisatietechniek binnen Inventor aan moet voldoen. De techniek moet onder andere meerdere parameters kunnen optimaliseren en moet op alle geometrische informatie die Inventor over het onderdeel geeft toepasbaar zijn. Het optimum moet zo snel mogelijk gevonden worden en de routine moet universeel zijn, dus niet geschreven voor een specifiek onderdeel, maar toepasbaar op allerlei onderdelen. Een optimalisatietechniek is een iteratieve zoekmethode. Iteratief betekent dat de verschillende uitkomsten van de berekeningen met elkaar vergeleken worden, waarna de berekeningen bijgestuurd worden om zo het uiteindelijke doel te benaderen. Bij iteratieve zoekmethoden kan onderscheid gemaakt worden tussen methode die gebruik maken van gradiëntinformatie en methode die geen gebruik maken van de afgeleiden van een functie.
- Nijmegen -
iii
- Optimalisatie in Inventor -
Er zijn een aantal optimalisatie methoden bestudeerd. De Steepest-Descent methode voldeed aan de eisen die opgesteld waren. Hierdoor en doordat er weinig tijd over was om de meer uitgebreide technieken te bestuderen is de Steepest-Descent methode gekozen en is deze methode verder uitgewerkt. De Steepest-Descent methode bepaalt het optimum door eerst de steilste helling te zoeken op een bepaald punt van een 3-dimensionale functie. Waar de helling het steilst loopt wordt het lokale minimum gezocht. Deze procedure wordt herhaald totdat het globale minimum gevonden wordt. Om de Steepest-Descent te begrijpen is het handig de functie die geminimaliseerd moet worden voor te stellen als een heuvellandschap, waarbij de dalen het minimum voorstellen en de pieken het maximum. De bedoeling is om het diepste dal te vinden zonder in een lokaal minimum te blijven hangen. Om de optimalisatietechniek aan te sturen is een dialoogbox ontwikkeld die door iedere ontwerper direct te gebruiken is zonder dat er extra hulp nodig is om de optimalisatie correct te laten verlopen. Zo moet allereerst gekozen worden of er een minimum of een maximum gezocht moet worden. Daarnaast moet aangegeven worden op welk criterium geoptimaliseerd moet worden en kan aangevinkt worden of er rekening gehouden wordt met spanningen. In de dialoogbox kan aangegeven worden hoeveel parameters geoptimaliseerd moeten worden en binnen welk bereik. De berekeningen worden in een venster getoond zodat in één oogopslag zowel de beginwaarde als de resultaten bekeken kunnen worden. Nadat de optimalisatie routine in Inventor geschreven is, is de routine uitgebreid getest. Hieruit zijn enkele programmeerfouten naar boven gekomen die opgelost moesten worden omdat de optimalisatie anders niet goed verliep. Als laatste zijn verschillende voorbeelden bedacht waarmee de werking en het nut van de optimalisatietechniek binnen Inventor duidelijk gemaakt wordt. Hiermee kan in de cursussen gedemonstreerd worden wat optimalisatie is. Doordat de verschillende optimalisatietechnieken bestudeerd zijn en hierbij duidelijk geworden is dat de Steepest-Descent methode het best toepasbaar is binnen Inventor is de belangrijkste vraag in het onderzoek beantwoord. Hierbij moet wel de kanttekening geplaatst worden dat nog niet alle technieken uitgebreid onderzocht zijn. In een eventueel vervolgonderzoek moet er gekeken worden of deze technieken een meerwaarde hebben tegenover de Steepest-Descent methode. Daarnaast kan de uiteindelijke routine nog verbeterd worden. De doelstelling van het onderzoek is verwezenlijkt doordat er enkele voorbeelden zijn die getoond kunnen worden in de cursussen. Door middel van een drijfstang en een eenzijdig ingeklemde balk kunnen de verschillende manieren van optimaliseren getoond worden.
- Nijmegen -
iv
- Optimalisatie in Inventor -
Voorwoord Tijdens dit project ben ik werkzaam geweest bij TEC/Cadcollege. TEC staat voor Twente Engineering Consultancy en is een bedrijf dat kennisoverdracht in Computer Aided Design (CAD) verzorgd. Deze kennisoverdracht kan men globaal in drie groepen onderverdelen: • Cursusinstituut voor CAD opleidingen; • Uitgeverij van CAD leerboeken; • Uitgeverij van educatieve software voor tekening maken en –lezen. Al deze producten worden door TEC zelf ontwikkeld, geproduceerd en verkocht. TEC is een CADspecialist sinds het eerste geautomatiseerde tekensysteem. Cursussen worden dagelijks gevolgd door tekenaars en constructeurs. Tevens heeft TEC een bekende positie verworven door hun eigen boeken serie. TEC heeft dan ook de titel: AutoDesk Authorized Training Center (ATC). Hiermee is TEC dus verbonden met Autodesk, de makers van AutoCAD. TEC is bevoegd om een Autodesk-certificaat te leveren. De docent ir. Ronald Boeklagen is deskundig op het gebied van CAD en EEM. Al vanaf 1984 begeleidt hij bedrijven en scholen bij de keuze en invoering van CAD en doceert hij in het tekenen met CAD systemen. Hij is ook de man achter de boeken "AutoCAD, Computer Ondersteund Ontwerpen". In bijlage 1 staat een artikel dat in februari verschijnt in het CADMagazine. Dit is een vakblak voor constucteurs/tekenaars. In dit artikel worden de verschillende activiteiten van TEC besproken en wordt ook een stukje geschreven over deze opdracht. Via dit voorwoord wil ik enkele personen bedanken die mij geholpen hebben om deze opdracht succesvol en met plezier af te ronden. Dit zijn alle mensen die de afgelopen periode tijd voor mij hebben vrijgemaakt om mij bij te staan indien ik vragen had. In het bijzonder bedank ik mijn stagebegeleiders vanuit TEC, dit zijn Ronald Boeklagen en Leonie Bergsma. Paul Arts februari 2005
- Nijmegen -
v
- Optimalisatie in Inventor -
Inhoud
SAMENVATTING ..............................................................................................................................III VOORWOORD .....................................................................................................................................V 1. INLEIDING ........................................................................................................................................7 1.1 PROBLEEMSTELLING .......................................................................................................................7 1.2 DOELSTELLING ...............................................................................................................................7 1.3 AANPAK ..........................................................................................................................................8 1.4 OPBOUW VAN HET VERSLAG ..........................................................................................................8 2. AUTODESK INVENTOR .................................................................................................................9 2.1 2D NAAR 3D ...................................................................................................................................9 2.2 PARAMETRISCH ONTWERPEN .........................................................................................................9 2.3 PARAMETRISCH ONTWERPEN IN INVENTOR .................................................................................10 2.4 PREDICTIVE MODELLING. .............................................................................................................11 2.4.1 Eindige Elementen Methode (EEM) ......................................................................................11 2.4.2 EEM in Inventor ....................................................................................................................12 2.5 OPTIMALISATIE MODELLING ........................................................................................................12 2.6 VISUAL BASIC FOR APPLICATIONS ...............................................................................................12 2.7 CONCLUSIE ...................................................................................................................................12 3. OPTIMALISATIETECHNIEK......................................................................................................13 3.1 PAKKET VAN EISEN .......................................................................................................................13 3.2 ITERATIEVE ZOEKMETHODEN .......................................................................................................13 3.3 OPTIMALISATIEMETHODEN INTEGREREN IN VBA........................................................................14 4. HALVERINGSMETHODE ............................................................................................................15 4.1 HOE WERKT DE HALVERINGSMETHODE?......................................................................................15 4.2 CONCLUSIE ...................................................................................................................................17 5. KWADRATISCHE INTERPOLATIE...........................................................................................18 5.1 HOE WERKT DE KWADRATISCHE INTERPOLATIE METHODE?........................................................18 5.2 CONVERGENTIESNELHEID ............................................................................................................20 5.3 CONCLUSIE ...................................................................................................................................20 6. STEEPEST-DESCENT METHODE..............................................................................................21 6.1 HOE WERKT DE STEEPEST-DESCENT METHODE? .........................................................................21 6.2 CONCLUSIE ...................................................................................................................................22
- Nijmegen -
vi
- Optimalisatie in Inventor -
7. DIALOOGBOX ................................................................................................................................23 7.1 ACTIEGESTUURD PROGRAMMEREN ..............................................................................................23 7.2 OPBOUW DIALOOGBOX .................................................................................................................23 8. OPTIMALISATIEROUTINE.........................................................................................................25 8.1 PROGRAMMEERFOUTEN................................................................................................................25 8.1.1 Randvoorwaarde ...................................................................................................................25 8.1.2 Boetefunctie ...........................................................................................................................25 8.1.3 Overflow ................................................................................................................................26 8.1.4 Verkeerde eenheid .................................................................................................................26 8.2 AANSTUREN ROUTINE...................................................................................................................26 9. OPTIMALISATIE VOORBEELDEN ...........................................................................................27 9.1 DRIJFSTANG ..................................................................................................................................27 9.1.1 Gewicht optimaliseren...........................................................................................................27 9.1.2 Oppervlak optimaliseren .......................................................................................................28 9.1.3 Gewicht optimaliseren rekening houdend met spanning.......................................................28 9.2 BALK.............................................................................................................................................29 CONCLUSIE ........................................................................................................................................31 AANBEVELINGEN.............................................................................................................................31 LITERATUURLIJST ..........................................................................................................................32 BIJLAGE 1: ARTIKEL IN CADMAGAZINE ................................................................................... I BIJLAGE 2: BEREKENING KWADRATISCHE INTERPOLATIE........................................... IV BIJLAGE 3: DRIJFSTANG OPTIMUM GEWICHT.......................................................................V BIJLAGE 4: DRIJFSTANG OPTIMUM OPPERVLAK................................................................ VI BIJLAGE 5: DRIJFSTANG OPTIMUM GEWICHT/SPANNING..............................................VII BIJLAGE 6: BALK OPTIMUM GEWICHT/SPANNING.......................................................... VIII BIJLAGE 7: VBA ROUTINE ............................................................................................................ IX
- Nijmegen -
vii
- Optimalisatie in Inventor -
1. Inleiding Sinds een aantal jaren verzorgt TEC ook cursussen voor het pakket Inventor. De Autodesk Inventor Serie is een 3D-ontwerpsoftware voornamelijk bedoeld voor de werktuigbouwkundige sector. Inventor is een 3D parametrisch programma voor het aanmaken van vorm- en maatvarianten. Met parametrische modelleertechnieken kan veel tijd bespaard worden tijdens het ontwerpen omdat snel verschillende varianten van een ontwerp aangemaakt kunnen worden. Na de studie Mechanica aan de Universiteit Twente heeft dhr. Boeklagen een onderzoek uitgevoerd naar de optimale vorm van de steel van een heupprothese. Tijdens dit onderzoek heeft dhr. Boeklagen verschillende wiskundige optimalisatietechnieken toegepast. Deze optimalisatietechnieken zijn gebaseerd op de relatie tussen de ontwerpparameters (bijvoorbeeld de vorm) en de eigenschappen van het ontwerp (bijvoorbeeld de spanning). Bij een optimalisatietechniek definieert de ontwerper de eigenschap en berekent de computer de vorm die daarbij past. Dit in tegenstelling tot een veel gebruikte werkwijze waarbij de ontwerper de vorm vastlegt en achteraf controleert of het ontwerp voldoet. In zijn huidige functie als docent is bij dhr. Boeklagen de behoefte ontstaan om bij het geven van cursussen de mogelijkheden van optimalisatie met behulp van parameters te tonen. Omdat Inventor een parametrisch ontwerpprogramma is, zou binnen deze omgeving een optimalisatietechniek geïntegreerd kunnen worden. Het idee bestond om de mogelijkheden te gaan bestuderen om bepaalde optimalisatietechnieken binnen Inventor te integreren. Hieruit is deze opdracht ontstaan.
1.1 Probleemstelling ‘Welke optimalisatietechnieken bestaan er en welke techniek kan het beste toegepast worden binnen Inventor’is de belangrijkste probleemstelling binnen deze opdracht. Om deze vraag op te lossen zullen er dus verschillende aandachtsgebieden bestudeerd moeten worden. Allereerst zal het nieuwste Inventor pakket bestudeerd moeten worden. Daarnaast zullen de verschillende optimalisatietechnieken bekeken worden en zal met behulp van Visual Basis for Applications (VBA) een programma geschreven en getest moeten worden.
1.2 Doelstelling De doelstelling van het project is om een demonstratieproject op te zetten dat laat zien hoe onderdelen binnen het ontwerppakket Inventor geoptimaliseerd kunnen worden. Om dit te bereiken zal een optimalisatieroutine moeten worden geschreven. Daarna moeten voorbeelden bedacht worden die tijdens de cursussen getoond kunnen worden.
- Nijmegen -
7
- Optimalisatie in Inventor -
1.3 Aanpak Omdat er al allerlei verschillen soorten wiskundige optimalisatietechnieken bestaan, is het niet nodig om een nieuwe optimalisatietechniek te ontwikkelen. Het is juist de bedoeling om de verschillende optimalisatietechnieken te bestuderen en te kijken welke het beste voldoet aan de vooraf gestelde eisen. Om de optimalisatietechnieken goed te begrijpen is begonnen met de ‘eenvoudigere’technieken. Daarna is stap voor stap een andere techniek bekeken. Tijdens dit proces zijn er verschillende problemen naar boven gekomen. Deze zijn steeds ondervangen, zodat uiteindelijk een representatieve routine is ontstaan.
1.4 Opbouw van het verslag Allereerst zal er dieper ingegaan worden in het pakket Inventor en het parametrisch ontwerpen. Daarna zullen de verschillende optimalisatietechnieken besproken worden en zal uiteindelijk de meest gunstige techniek gekozen worden. Om deze techniek te kunnen toepassen zal een dialoogbox gemaakt moeten worden, dit wordt besproken in hoofdstuk 7. In hoofdstuk 8 worden de problemen besproken die tijdens het testen van de routine naar voren zijn gekomen. In het laatste hoofdstuk worden de verschillende voorbeelden behandeld die opgezet zijn om in de toekomst in cursussen te tonen. Als laatste volgt de conclusie waarin de belangrijkste bevindingen nogmaals worden aangestipt.
- Nijmegen -
8
- Optimalisatie in Inventor -
2. Autodesk Inventor Met de introductie van AutoCAD in 1982 creëerde Autodesk een markt voor ontwerpsoftware voor pc’s. Vandaag de dag wordt AutoCAD ingezet in alle mogelijke ontwerpdisciplines, van architectonische en civiele applicaties tot mechanische ontwerp- en productietoepassingen. AutoCAD is wereldwijd de absolute nummer één op het gebied van ontwerpsoftware. Naast het basispakket AutoCAD zijn er branche gerichte AutoCAD varianten. Voor de bouw en architectuur: Architectural Desktop en Revit, voor de landmeetsector: LandDevelopment Desktop en AutoDesk MAP, voor de visualisatie en animatie: AutoDesk VIZ en Studio Max en voor de werktuigbouw: Mechanical Desktop en Inventor. In 1999 wordt AutoDesk Inventor officieel gelanceerd. Met Inventor heeft Autodesk een 3D ontwerpsoftware op de markt gebracht die van de grond af aan helemaal opnieuw is opgebouwd. Autodesk profileert Inventor als zijnde het 3D-CAD pakket voor de toekomst. Het pakket is volledig nieuw opgebouwd en niet zoals bij Mechanical Desktop gebaseerd op AutoCAD. Autodesk geeft ook aan dat de nadruk voor de toekomst zal komen te liggen bij Inventor en dat de wijzigingen bij de toekomstige versies van Mechanical Desktop minimaal zullen zijn. Intussen is Inventor de meest verkochte 3D software ter wereld. [1] Naast Inventor zijn er nog meerdere 3D pakketen zoals SolidWorks, maar omdat TEC zich uitsluitend oriënteert op AutoDesk gerelateerde pakketen zal er in dit verslag niet verder op ingegaan worden. De laatste versie van Inventor die AutoDesk op de markt heeft gebracht is Inventor 9 Professional.
2.1 2D naar 3D De invoering van CAD in de jaren ’80 liep over het algemeen vrij probleemloos. De gehanteerde ontwerpprocedures konden eenvoudig van de tekenplank worden omgezet naar het 2D CAD-systeem. Het probleem bleef echter dat er een vertaalslag gemaakt moest worden tussen het 3D product en de 2D tekening. Via een technische tekening kan een ontwerper communiceren over een bepaald ontwerp. Mensen die echter geen technische kennis hebben en dan met name het tekeninglezen, zijn vaak niet in staat om een 2D tekening te lezen. Bij een 3D model is dit niet meer het geval omdat het 3D model eigenlijk een virtueel prototype van het ontwerp is. Dit is een van de voordelen van 3D. Hieronder staan nog enkele voordelen van 3D ontwerpen. • • • •
De communicatie door de gehele organisatie en met klanten verbeterd; Visualisatie van een ontwerp wordt sterk verbeterd; Maken van prototype is meestal overbodig; Ontwerpfouten worden eerder ontdekt.
Daarnaast kan met het 3D pakket Inventor parametrisch ontworpen worden.
2.2 Parametrisch ontwerpen Onder parametrisch ontwerpen verstaat men het in een CAD model inbrengen van bijvoorbeeld de afmetingen in de vorm van parameters ofwel variabelen, die op elk tijdstip naar believen kunnen worden aangepast. [2] De ontwerper kan in het model via wiskundige methoden bepaalde samenhangen en criteria, zogenaamde constraints, vastleggen, waardoor men bepaalde parameters kan optimaliseren. In de volgende hoofdstukken waar de optimalisatietechnieken besproken worden zal hier dieper op ingegaan worden. Bij veel bedrijven zijn de producten afgeleiden van elkaar. Dit kan zowel in het klein, zoals bijvoorbeeld bij onderdelen, maar ook in het groot, zoals bij complete systemen, het geval zijn. Er worden daarbij zowel in het ontwerp, de productie, maar ook bij inkoop en werkvoorbereiding steeds dezelfde berekeningen gemaakt, maar met andere waarden. Deze herhaalde berekeningen vergen veel - Nijmegen -
9
- Optimalisatie in Inventor -
tijd en worden daardoor vaak door ervaringsgegevens vervangen. De betrouwbaarheid van het ontwerp neemt daardoor af. Parametrisch ontwerpen structureert deze berekeningen zodat alleen de variabelen moeten worden gegeven waarna het systeem alle benodigde gegevens genereert. Hierbij kan een koppeling worden gelegd tussen de berekeningen, zodat slechts eenmaal de kernvariabelen moeten worden gegeven. Parametrisch ontwerpen versnelt het ontwerpproces en maakt het mogelijk om ook kleine, maar belangrijke, details te automatiseren. De betrouwbaarheid van het ontwerp neemt toe en de kostprijs van het product wordt verlaagd. Zo kan men met weinig moeite een ander alternatief evalueren zodat een kwalitatief beter product wordt verkregen.
2.3 Parametrisch ontwerpen in Inventor Tevens is Inventor een zogenaamde ‘Feature based solid modeler’. Dit houdt in dat iedere ontwerpstap wordt onthouden en opgeslagen als intelligente geometrie: een feature. Het grote voordeel hiervan is dat te alle tijde het model gewijzigd kan worden. Het model blijft volledig parametrisch, zodat wijzigingen eenvoudig zijn door te voeren. De stappen tijdens het ontwerpen worden opgeslagen, zodat eenvoudig de chronologische opbouw van het model bekeken kan worden. Dat Inventor een solid modeler is, houdt in dat van het model alle geometrische informatie te alle tijde beschikbaar is. Dit is onder andere het gewicht, het volume, en de massatraagheidsmomenten. In Inventor kan deze informatie gevonden worden vanuit het pulldown menu ‘File’onder het item ‘iProperties’.
- Nijmegen -
10
- Optimalisatie in Inventor -
2.4 Predictive modelling. Met predictive modelling bedoelt men het met behulp van computersimulaties en berekeningen vroegtijdig voorspellen en analyseren van het gedrag van een toekomstig ontwerp, of via een degelijke analyse een bestaande constructie verbeteren. Als tijdens het ontwerpen een fout in een onderdeel sluipt en deze tijdig, dus tijdens het ontwerpen, ontdekt wordt, dan zijn de kosten voor het corrigeren van de fout gering. Als dezelfde fout echter in een later stadium moet worden hersteld, zijn de kosten vele malen groter. Daarom stelt de technische industrie steeds hogere eisen aan de methoden die gebruikt worden om nieuwe producten te ontwerpen. In de laatst uitgekomen versie van Inventor, namelijk Inventor 9 Professional, zit een vereenvoudigde module van het Eindige Elementen pakket Ansys geïntegreerd. Met deze simulatietool kan een ontwerp doorgerekend worden op bijvoorbeeld sterkte of doorzakking. Met behulp van dit pakket kan dus de Eindige Elementen Methode (EEM) toegepast worden. 2.4.1 Eindige Elementen Methode (EEM) De sterkte en stijfheid van een constructie kan vaak zeer goed geanalyseerd worden met behulp van de Eindige Elementen Methode. Hierdoor is de constructie beter te optimaliseren en ontstaan vaak nieuwe en betere ideeën over het te volgen ontwerp. Door een constructie of onderdeel hiervan op sterkte en stijfheid door te rekenen met behulp van de EEM ontstaat een verbeterd inzicht in de spanningen en de vervormingen, zodat een meer optimale en vaak lichtere constructie kan worden verkregen. Bij veel constructies kan een verhoging van de functionaliteit en een kostprijs verlaging worden verkregen indien men het gewicht kan reduceren. Vaak wordt door onzekerheid van de inwendige spanningen een hoge veiligheidsfactor gekozen hetgeen tot te zware constructies leidt. Doorrekening met behulp van de EEM geeft een goed inzicht in de spanningen en de vervormingen zodat een optimale constructie kan worden gekozen.
- Nijmegen -
11
- Optimalisatie in Inventor -
2.4.2 EEM in Inventor Doordat in Inventor 9 Professional een vereenvoudigde module van het pakket Ansys geïntegreerd is, is het pakket geschikt voor predictive modelling. Doordat deze tool in Inventor ingebouwd is heeft een constructeur enkele belangrijke voordelen tijdens het ontwerpen, hieronder worden ze genoemd: • Goed inzicht in de spanningen en vervormingen van de constructie, waardoor een hogere betrouwbaarheid wordt verkregen; • Massa- en dus kostprijsverlaging van het product; • Inzicht in de mogelijkheden tot alternatieve constructies, waardoor nieuwe product ideeën mogelijk zijn.
2.5 Optimalisatie modelling Door een optimalisatietechniek in Inventor te integreren kan een ontwerper anders gaan ontwerpen. Bij predictive modelling maakt de constructeur een ontwerp en gaat daarna analyseren of het ontwerp voldoet aan bepaalde eigenschappen, bijvoorbeeld de spanningen in het ontwerp. Bij optimalisatie modelling wordt de eigenschap opgegeven en berekent de computer de vorm. Neem als voorbeeld het ontwerpen van een aandrijfas. Bij predictive modelling ontwerpt de constructeur een aandrijfas met een bepaalde dikte en gaat analyseren of de as voldoet. Bij optimalisatie modelling wordt juist de eigenschap opgegeven waaraan de as moet voldoen, bijvoorbeeld een bepaald torsie moment, en de computer zal dan de dikte van de as bepalen. Bij predictive modelling is de kans aanwezig dat de as voldoet aan de gestelde eisen, doordat een as ontworpen is die veel dikker is dan strikt noodzakelijk. Het is dus een goed ontwerp, maar niet het beste ontwerp. Bij optimalisatie modelling wordt meteen het beste ontwerp verkregen.
2.6 Visual Basic for Applications Visual Basic (VB) bestaat als een alleenstaand programmeer programma. Het is een programmeertaal en een ontwikkelomgeving ontwikkeld door Microsoft. VB maakt het mogelijk om programma's te schrijven die draaien onder Windows. Het woord "Visual" slaat op het maken van de grafische gebruikers interface. In plaats van met talloze regels code te omschrijven waar een lijn op het scherm komt te staan, plaatst de VB-ontwikkelaar met de muis een lijn op de juiste plek. Het is te vergelijken met het maken van een afbeelding in Paint. De VB-editor genereert dan de code die nodig is om die lijn te tekenen. Het woord "Basic" refereert aan de programmeertaal BASIC. Onder de naam Visual Basic for Applications (VBA) is VB ingebouwd in meer dan 500 applicaties. Wanneer bijvoorbeeld Microsoft Word op een systeem is geïnstalleerd, dan is ook automatisch Visual Basic for Applications geïnstalleerd. In de pakketen van Autodesk zoals AutoCAD en Inventor zit VBA ook ingebouwd. Zo kunnen er programma’s geschreven worden binnen Inventor.
2.7 Conclusie Omdat een onderdeel in Inventor volledig parametrisch is en wijzigingen dus eenvoudig aangebracht kunnen worden en omdat de geometrische informatie van een onderdeel, zoals bijvoorbeeld het gewicht, te alle tijde beschikbaar is, is het programma in theorie uitermate geschikt voor optimalisatie. Een parameter (x), bijvoorbeeld de lengte van een onderdeel, kan gekoppeld worden aan het gewicht (y). Door deze parameter te laten variëren kan of het maximale gewicht of het minimale gewicht gevonden worden. Daarnaast kan met behulp van VBA een routine aangemaakt worden zodat een programma in Inventor geschreven kan worden. Voordat de routine geschreven wordt moeten de verschillende optimalisatie technieken bekeken worden.
- Nijmegen -
12
- Optimalisatie in Inventor -
3. Optimalisatietechniek Voordat de verschillende technieken bekeken worden, is er een pakket van eisen opgesteld waar de uiteindelijke optimalisatietechniek binnen Inventor aan moet voldoen. Hieronder staan de voorwaarden waar de routine met de toegepaste optimalisatietechniek aan moet voldoen.
3.1 Pakket van eisen • De routine moet op alle geometrische informatie die Inventor over het onderdeel geeft, dus het gewicht, het oppervlak, het volume en de massatraagheidsmomenten, toepasbaar zijn; • Daarnaast moeten deze geoptimaliseerd kunnen worden terwijl er rekening gehouden moet worden met de maximaal toelaatbare spanningen in het onderdeel; • Het programma moet stabiel zijn, zodat Inventor en/of de computer niet vastlopen; • Meerdere parameters moeten kunnen worden geoptimaliseerd; • Voor de verschillende parameters moet een bereik kunnen worden opgegeven, waarbinnen het optimum gevonden moet worden; • Het optimum moet zo snel mogelijk gevonden worden; • De routine moet universeel zijn, dus niet geschreven voor een specifiek onderdeel, maar toepasbaar op allerlei onderdelen. Om er achter te komen welke techniek voldoet aan bovengenoemde eisen, zijn er verschillende technieken toegepast. Voor het bestuderen van de verschillende optimalisatietechnieken is voornamelijk de literatuur van Daniels [3] gebruikt.
3.2 Iteratieve zoekmethoden Vooral door de steeds groter wordende rekencapaciteit van de computer zijn er de laatste decennia veel optimalisatietechnieken ontwikkeld. Een optimalisatietechniek is een iteratieve zoekmethode. Iteratief betekent dat de verschillende uitkomsten van de berekeningen met elkaar vergeleken worden, waarna de berekeningen bijgestuurd worden om zo het uiteindelijke doel te benaderen. Bij iteratieve zoekmethoden kan onderscheid gemaakt worden tussen twee verschillende technieken. • Optimalisatie algoritmen die gebruik maken van analytische gradiëntinformatie; • Optimalisatie algoritmen die geen gradiëntinformatie gebruiken. Bij de optimalisatie algoritmen die geen gebruik maken van gradiëntinformatie wordt de zoekrichting van te voren vastgelegd. De halveringsmethode en de simplex methode zijn hier voorbeelden van. De halveringsmethode wordt besproken in hoofdstuk 4.
- Nijmegen -
13
- Optimalisatie in Inventor -
In de literatuur worden vooral de gradiëntmethoden besproken. Deze gradiëntmethoden maken gebruik van de eerste en soms zelfs de tweede afgeleiden. Als alleen eerste afgeleide informatie gebruikt wordt spreekt men van eerste-orde methoden. De methode van de steilste helling (Steepest-Descent) is hier een voorbeeld van. Een nog uitgebreidere methode is de Fletcher Powell methode, deze maakt gebruik van de tweede afgeleide en is dus een tweede-orde methode. De convergentiesnelheid van deze gradiëntmethoden zijn vele malen groter dan de optimalisatie technieken die hier geen gebruik van maken. Dit wil zeggen dat het minimum of maximum sneller gevonden wordt. Deze methode hebben dus minder berekeningen nodig om tot het eindresultaat te komen. Bij een optimalisatietechniek wordt er gezocht naar of het maximum of naar het minimum van een bepaalde functie. Op een maximum of minimum is de eerste afgeleide gelijk aan nul. In figuur 1 is het minimum van een bepaalde functie in het blauw weergegeven.
Figuur 1: Functie met minimum.
3.3 Optimalisatiemethoden integreren in VBA Nadat de verschillende technieken bekeken zijn is het zaak om deze in VBA te programmeren. In het boek van Daniels [3] staan naast de uitleg van de verschillende optimalisatietechnieken ook routines van de verschillende methoden. Het enige nadeel is dat deze routines in de programmeertaal Fortran geschreven zijn. Fortran is een programmeertaal die speciaal ontwikkeld is voor wetenschappelijke doeleinden. Het woord Fortran is een samentrekking van FORmula TRANslation. Fortran was een van de eerste programmeertalen. De eerste versie van de Fortranstandaard is in 1966 ontwikkeld. De taal verschilt echter niet veel van VBA, sommige notaties moesten worden aangepast, maar in het algemeen konden de routines zo in VBA geprogrammeerd worden.
- Nijmegen -
14
- Optimalisatie in Inventor -
4. Halveringsmethode Om te kijken of de optimalisatietechnieken daadwerkelijk in Inventor geïntegreerd kunnen worden is met de ‘eenvoudigere’methoden begonnen. Dit om zogenaamde programmeerfouten (bugs) te kunnen ondervangen en om de werking van de verschillende technieken beter te doorgronden.
4.1 Hoe werkt de halveringsmethode? Allereerst is de halveringsmethode toegepast. Aan de hand van een voorbeeld wordt deze techniek uitgelegd.
d1
Figuur 2: Halveringsmethode
In het linker venster van figuur 2 is de dialoogbox te zien die verschijnt als de routine wordt gestart. Hoe een dergelijk formulier met verschillende controls aangemaakt wordt in VBA wordt besproken in hoofdstuk 7. De rechter afbeelding in figuur 2 is een onderdeel, dat in Inventor gemaakt is, met een gat erin. Dit gat is bemaat vanaf de onderkant van het onderdeel tot het center punt van het gat (d1). Deze maat is de variabele in deze optimalisatie. In het tekstvak ‘parameter’moet de juiste variabele ingevuld worden (zie figuur 2). In dit geval dus d1. Deze parameter wordt in Inventor automatisch aangemaakt zo gauw een maat ingevoerd wordt. Daarnaast moet een bereik opgegeven worden waarbinnen het minimum gevonden moet worden. Deze twee tekstvakken, min. en max., moeten ingevuld worden in millimeters. Dit geldt overigens voor alle waarde die ingevuld moeten worden. Daarnaast kan de stapgrootte opgegeven worden. Dit is de grootte van de eerste stap. In figuur 3 wordt de eerste stap aangegeven met het getal 1. Deze stapgrootte kan aangepast worden. Naarmate het bereik groter is zal de stapgrootte ook vergroot kunnen worden. Zo zijn er minder stappen nodig om het optimum te vinden. Als laatste kan in de dialoogbox het desgewenst criterium aangevinkt worden waarop geoptimaliseerd moet worden. In dit geval dus het traagheidsmoment Ixx in kgmm2.
- Nijmegen -
15
- Optimalisatie in Inventor -
Zoals in hoofdstuk 2.3 besproken is Inventor een solid modeler, dit houdt in dat van het model alle geometrische informatie te allen tijde beschikbaar is. Dus kan op deze informatie geoptimaliseerd worden. Door een procedure binnen VBA te schrijven kan de massatraagheid om de x-as van de ene berekening vergeleken worden met de berekening van de volgende stap. Wanneer deze kleiner wordt, als tenminste naar een minimum gezocht wordt, kan dezelfde stap gemaakt worden en de massatraagheid weer berekend worden. Deze nieuwe waarde wordt met de voorgaande berekening vergeleken. Dit net zolang totdat de waarde gaat oplopen ten opzichte van de waarde van de vorige stap. In figuur 3 staat de grafiek weergegeven van de optimalisatie van het onderdeel uit figuur 2. De plaats van het gat in het onderdeel, oftewel de parameter d1, staat uitgezet op de x-as. De waarde van het massatraagheidsmoment Ixx staat uitgezet op de y-as. De methode begint dus door het gat op plaats x1 (zie figuur 3) te plaatsen. Parameter d1 krijgt nu dus de waarde x1. Hier wordt de eerste massatraagheid berekend en vervolgens wordt stap 1 gezet, met de stapgrootte die opgegeven kan worden. Het gat wordt nu op het punt x2 geplaatst en hier wordt opnieuw de massatraagheid berekend. Doordat de massatraagheid lager ligt wordt dezelfde stapgrootte aangehouden in dezelfde richting. Op x3 wordt wederom de massatraagheid berekend. Nu blijkt dat de massatraagheid weer oploopt tegenover x2, wordt de stapgrootte gehalveerd, vandaar de naam halveringsmethode, en wordt in de grafiek de andere kant opgelopen, zie figuur 3. Stap 3 en 4 lopen dus de andere kant op dan stap 1 en 2. Op punt x5 loopt de massatraagheid tegenover punt x4 weer op. De stap wordt wederom gehalveerd en loopt wederom de andere richting op. Dit gebeurt net zolang totdat de waarde van de massatraagheid weer oploopt. Dan wordt de stapgrootte weer gehalveerd en wordt weer de andere kant van de grafiek opgelopen. Deze methode kan oneindig doorgaan, dus moet er een stopcriterium aangemaakt worden. Dit stopcriterium is de minimale stapgrootte. Deze minimale stapgrootte kan in VBA aangepast worden. Als de minimale stapgrootte bereikt wordt is het verschil tussen de twee laatste massatraagheidswaarden zo klein dat het optimum nauwkeurig genoeg benaderd is. X1
X3 X2/X5 X6
X4
X7 1
2 4 5
3 6 7
Figuur 3: Schematisch weergave halveringsmethode
- Nijmegen -
16
- Optimalisatie in Inventor -
Wanneer de routine klaar is en het optimum gevonden is worden de berekeningen getoond in een venster, zie figuur 4. In deze afbeelding is te zien dat naar een maximum gezocht is. Dit is te zien doordat bij 35 mm de waarde kleiner wordt. Na 35 wordt de stapgrootte gehalveerd en loopt deze terug. De stapgrootte begon met 5 en loopt nu dus met stappen van 2,5 terug. Totdat bij 27,5 de waarde van de berekening weer kleiner is. De stapgrootte wordt weer gehalveerd. Dit wordt net zolang gedaan totdat de minimale stapgrootte bereikt is.
Figuur 4: Berekeningen (x, y)
4.2 Conclusie Nadat deze methode in VBA uitgewerkt was bleek al gauw dat er enkele grote nadelen aan deze optimalisatietechniek zaten. Het grootste nadeel van de halveringsmethode is dat deze methode enkel geschikt is voor optimalisatie problemen waarbij slecht één parameter gevarieerd kan worden. Daarnaast zijn er relatief veel stappen nodig om tot het optimum te komen. Tevens zijn er in de dialoogbox (linker afbeelding in figuur 2) enkele gebreken aan het licht gekomen die in de uiteindelijke versie verbeterd moeten worden. Zo ontbreekt in dit formulier de functie om te kiezen of het minimum of het maximum gezocht moet worden. Daarnaast is het functioneler als het venster met de waarde (figuur 4) in het formulier verwerkt wordt zodat in één oogopslag zowel de beginwaarde als de resultaten bekeken kunnen worden.
- Nijmegen -
17
- Optimalisatie in Inventor -
5. Kwadratische interpolatie De tweede methode die bekeken is, is de optimalisatiemethode waarbij het minimum gevonden wordt met behulp van kwadratische interpolatie.
5.1 Hoe werkt de kwadratische interpolatie methode? In de buurt van een minimum of maximum kan de functie waarna geoptimaliseerd wordt benaderd worden als een parabool. Omdat bij de halveringsmethode relatief veel stappen nodig zijn voordat het minimum van een functie gevonden wordt, is er gekeken naar een methode waarvan de convergentiesnelheid een stuk hoger ligt. Met kwadratische interpolatie zou dit het geval moeten zijn. Met kwadratische interpolatie kan het minimum van een functie op de volgende manier gevonden worden:
Y1
Y3 Y2
X1
X2
X3
Figuur 5: Schematische weergave kwadratische interpolatie
Op een willekeurige kwadratische grafiek (zie figuur 5) worden drie punten gekozen. Zo ontstaan er drie vergelijkingen namelijk:
y1 = ax12 + bx1 + c y 2 = ax 22 + bx 2 + c y 3 = ax32 + bx3 + c Doordat er drie punten in de grafiek gekozen worden ontstaan er drie vergelijkingen met drie onbekenden. Deze drie onbekenden kunnen nu uitgerekend worden. In bijlage 2 staat de berekening uitgewerkt. Zo gauw deze uitgerekend zijn is de gehele vergelijking bekend. Om nu het minimum van deze vergelijking te vinden moet de eerste afgeleide van de functie gelijk gesteld worden aan nul.
- Nijmegen -
18
- Optimalisatie in Inventor -
Nadat de gebreken van de eerste optimalisatietechniek, de halveringmethode, aan het licht waren gekomen is er voor de kwadratische interpolatie methode een andere dialoogbox opgezet. Zo is er een zogenaamde checkbox aangemaakt, hiermee kan aangevinkt worden of het minimum bepaald moet worden (zie figuur 6). Wordt de checkbox niet aangevinkt dan wordt automatisch het maximum gezocht. De parameter die gevarieerd gaat worden hoeft niet meer zelf ingevuld te worden door de gebruiker, maar kan uit een lijst geselecteerd worden. Daarnaast is het venster waar de berekeningen getoond worden geïntegreerd in het formulier.
Figuur 6: Interface kwadratische interpolatie
In de dialoogbox dat verschijnt bij de halveringsmethode (zie figuur 2) is alleen een startknop geprogrammeerd. Zijn echter per ongeluk de verkeerde waarde ingegeven dan moet er gewacht worden totdat het gehele programma doorlopen is. Om dit te voorkomen is in de nieuwe dialoogbox een knop ‘Afbreken’aangebracht, zodat het programma tussentijds afgebroken kan worden. Naast het gewicht, het volume, het oppervlak en de massatraagheidsmomenten is er een knop aangemaakt waarmee geoptimaliseerd kan worden terwijl er naar de spanningen in het onderdeel wordt gekeken. Zoals gezegd is in Inventor een module van Ansys geïntegreerd. Hiermee kunnen de spanningen in een onderdeel berekend worden. Deze kunnen net als het gewicht hoger of lager worden bij een bepaalde lengte of vorm. Daarnaast is er een knop ‘Sluiten’aangebracht, zodat de dialoogbox afgesloten kan worden. Naast de knop ‘Sluiten’komt een getal te staan dat het aantal berekeningen weergeeft. Dit is gedaan om een beter beeld te krijgen over de snelheid van de verschillende optimalisatietechnieken.
- Nijmegen -
19
- Optimalisatie in Inventor -
5.2 Convergentiesnelheid Aan de hand van een voorbeeld wordt duidelijk welke methode, de halveringsmethode of de kwadratische interpolatie, de grootste convergentiesnelheid heeft. Er wordt uitgegaan van de functie f(x) = sin x. Het maximum van de sinus moet gevonden worden tussen 0 en p. Het maximum van een sinus tussen 0 en p is 1. In tabel 1 staan de waarde bij de verschillende stappen die beide methode nodig hebben. Halveringsmethode
Kwadratische interpolatie
x 25 50 75 100 125 112,5 100 87,5 75 81,25 87,5 93,75 90,625
y=sinx x y=sinx 0,4226 25 0,4226 0,766 50 0,766 0,9659 75 0,9659 0,9848 100 0,9848 0,8191 125 0,8191 0,9238 H ieru it volgt: y = 1,019 0,9848 0,999 0,9659 0,9883 0,999 0,9978 0,9999
Tabel 1: Stappen per optimalisatiemethode
De halveringsmethode heeft twaalf stappen nodig om tot het maximum te komen. Bij kwadratische interpolatie loopt de waarde bij de vierde stap weer terug. Na dit punt pakt de kwadratische interpolatie de laatste drie punten en berekent het maximum.
x1 = 75
x 2 = 100
x 3 = 125
y1 = 0,9659
y 2 = 0,9848
y 3 = 0,8191
Door deze waarde in bijlage 2 in te vullen, kan het maximum van de functie bepaald worden. Door de verschillende waarde in te vullen kan y bepaald worden. Na de berekening blijkt dat y=1,019. Hieruit blijkt dat een computer het maximum met de kwadratische interpolatie veel sneller berekend dan met de halveringsmethode. De convergentiesnelheid van de kwadratische interpolatie is dus daadwerkelijk groter.
5.3 Conclusie Tegenover de halveringtechniek ligt de convergentiesnelheid van de kwadratische interpolatie methode dus veel hoger. Een groot nadeel dat echter nog steeds niet verholpen is, is dat zowel de halveringtechniek als de kwadratische interpolatie toepasbaar zijn voor maar één variabele. Als er meerdere variabelen geoptimaliseerd moeten worden is een meer uitgebreide optimalisatietechniek nodig, zoals bijvoorbeeld de Steepest-Descent methode. Deze wordt in het volgende hoofdstuk besproken.
- Nijmegen -
20
- Optimalisatie in Inventor -
6. Steepest-Descent methode Doordat de halveringsmethode en de kwadratische interpolatie beperkt zijn tot het variëren van één variabele is er verder gekeken naar technieken waarbij wel meerdere parameters geoptimaliseerd kunnen worden. Zo gauw er meerdere parameters geoptimaliseerd moeten worden is er geen sprake meer van een 2D grafiek, maar gaat het om een 3 dimensionaal probleem. De eerste optimalisatietechniek, waarbij meerdere parameters geoptimaliseerd worden, die in het boek van Daniels [3] besproken wordt is de Steepest-Descent methode. De Steepest-Descent methode zoekt naar het minimum van een functie door middel van de gradiënt.
Figuur 7: Schematische weergave heuvellandschap
6.1 Hoe werkt de Steepest-Descent methode? Om de Steepest-Descent te begrijpen is het handig de functie die geminimaliseerd moet worden voor te stellen als een heuvellandschap, waarbij de dalen het minimum voorstellen en de pieken het maximum. In figuur 7 is een heuvel schematisch weergegeven met behulp van zogenaamde hoogtelijnen. De bedoeling is om het diepste dal te vinden zonder in een lokaal minimum te blijven hangen. Bij de Steepest-Descent methode is het zo, dat vanuit een bepaalde startpositie heuvelafwaarts (in de richting tegengesteld aan de gradiënt) wordt gezocht. Allereerst wordt bekeken waar de heuvel het hardst naar beneden loopt. Er wordt een stap heuvelafwaarts gemaakt die zo groot is dat bij een nog grotere stap weer heuvelopwaarts zou worden gegaan. Op dit lokale minimum wordt weer de grootste helling berekent. De procedure bestaat dus eigenlijk uit twee afzonderlijke subprocedures, namelijk een voor de bepaling van de steilste richting (Steepest-Descent) en de ander voor het zoeken langs deze richting naar het optimum. Dit laatste gebeurt door middel van kwadratische interpolatie. Deze iteratieve methoden kan wiskundig geschreven worden in de vorm:
x k + 1 = x k + α ⋅S k De vector S geeft de richting aan waarlangs gezocht wordt en de grootheid α bepaald de afstand waarover de richting S moet worden gevolgd. Het superscript k geeft het iteratie nummer weer. Het proces wordt in figuur 8 getoond. Het proces begint bij startpositie x0. Vervolgens wordt de richting S bepaald. Dit is dus de richting waar de helling het steilst loopt. Daarna wordt de afstand bepaald met behulp van de kwadratische interpolatie. Op x1 wordt wederom de steilste helling bepaald. In de figuur is te zien dat een bepaald bereik opgegeven is. Het bereik waarbinnen een optimum gevonden moet worden is omlijnd door de schuine arcering. Doordat de richting S1 buiten dit bereikt dreigt te gaan, wordt op punt x2 opnieuw de steilste helling gezocht. Dit net zolang totdat het minimum bereikt is.
- Nijmegen -
21
- Optimalisatie in Inventor -
Figuur 8: Schematische weergave Steepest-Descent
Een nadeel van deze zoekmethode is dat de optimalisatie stopt zo gauw een lokaal optimum bereikt wordt (zie figuur 8). Daarom is het verstandig om een optimalisatie vaker uit te voeren en steeds met andere startwaarde. Zo is de kans groter dat het echte minimum gevonden wordt. In figuur 8 is te zien dat tijdens de tweede optimalisatie wel het globale optimum gevonden wordt, terwijl tijdens de eerste optimalisatie een lokaal optimum gevonden wordt.
6.2 Conclusie De Steepest-Descent methode zoekt dus eerst na de steilste helling op een bepaald punt en gaat vanaf dat punt naar een minimum zoeken. Een 3-dimensionaal probleem wordt dus vereenvoudigd tot een 2dimensionaal grafiek en vanaf dan wordt wederom de kwadratische interpolatie toegepast. De Steepest-Descent methode voldoet aan vrijwel alle eisen die in hoofdstuk 3.1 opgesteld zijn. Doordat de methode voldoet aan de eisen en doordat de tijd het niet toelaat is deze methode verder uitgewerkt en zijn de meer specifieke methode zoals de Fletcher Powell methode niet verder onderzocht.
- Nijmegen -
22
- Optimalisatie in Inventor -
7. Dialoogbox Nadat gekeken is naar de verschillende optimalisatietechnieken is dus uiteindelijk gekozen voor de Steepest-Descent methode in combinatie met kwadratische interpolatie. Tijdens het bestuderen van de verschillende optimalisatietechnieken is de interface van de dialoogbox, die verschijnt wanneer de optimalisatie routine gestart wordt, al reeds besproken. Omdat alle instellingen voor de optimalisatie in deze dialoogbox plaatsvinden, is de dialoogbox een belangrijk aspect binnen dit project. Daarom zal er in dit hoofdstuk dieper op ingegaan worden.
7.1 Actiegestuurd programmeren Voordat de uiteindelijke routine in VBA geschreven kan worden, moet een definitieve interface worden ontworpen. Een interface moet logisch opgebouwd zijn en moet vooral overzichtelijk zijn. In VBA kan een programma op twee manieren geprogrammeerd worden, namelijk door middel van: • Procedurele programmering; • Actiegestuurde programmering. Bij procedurele programmering wordt een programma in een vaste volgorde doorlopen. Bij actiegestuurde programmering doorloopt het programma verschillende delen van de code afhankelijk van de actie van de gebruiker. Deze programma’s laten een scherm zien met daarop een aantal controls zoals knoppen of iconen. Afhankelijk van de knop die ingedrukt wordt zal een ander deel van het programma doorlopen worden. Actiegestuurde programma’s zijn veel effectiever dan procedurele programma’s. Het venster in figuur 9 (zie volgende pagina) is hier een voorbeeld van. De verschillende controls kunnen met VBA eenvoudig geplaatst worden en door daarna op de desbetreffende control te dubbelklikken kan de code geschreven worden die bij de desbetreffende actie hoort. In figuur 9 staan rechtsonder bijvoorbeeld de knoppen Start en Sluiten. Onder de knop Start moet de code voor de optimalisatietechniek geschreven worden terwijl bij de knop Sluiten juist een heel andere code staat, namelijk die voor het sluiten van het venster.
7.2 Opbouw dialoogbox Het uiteindelijke venster dat verschijnt zo gauw de optimalisatie routine aangestuurd wordt is te zien in figuur 9. Door de logische opbouw van de dialoogbox is het voor iedere ontwerper direct te gebruiken zonder dat er extra hulp nodig is om de optimalisatie correct te laten verlopen. Zo moet allereerst gekozen worden of er een minimum of een maximum gezocht moet worden. Daar direct onder moet worden aangegeven op welk criterium geoptimaliseerd moet worden. Daaronder kan aangevinkt worden of er rekening gehouden wordt met spanningen, die in Inventor op het desbetreffende onderdeel zijn aangebracht. Daarbij moet aangegeven worden met welke veiligheidsfactor rekening gehouden moet worden. Linksonder kan aangeven worden met welke en met hoeveel parameters geoptimaliseerd moet worden. Daarbij kan per parameter het bereik opgegeven worden waarbinnen de optimalisatie plaats moet vinden.
- Nijmegen -
23
- Optimalisatie in Inventor -
Figuur 9: Optimalisatie dialoogbox
Aan de rechterkant van het venster verschijnen de verschillende waarden zodat een goed overzicht ontstaat over de optimalisatie. De eerste twee waarden zijn respectievelijk de eerste en de tweede parameter, in dit geval d13 en d16. De derde waarde is de waarde van het criterium dat geoptimaliseerd wordt. In dit geval is dit dus het gewicht. Het gewicht is in dit geval van 0,36 kg geoptimaliseerd naar 0,19 kg. Bij deze waarden heeft het onderdeel dus haar minimale gewicht terwijl de maximale spanning in het onderdeel niet overschreden wordt. Daaronder staat aangegeven hoeveel berekeningen in totaal nodig zijn geweest (24) en wat het uiteindelijke gewicht van het onderdeel (0,194136) is geworden. Daaronder de start knop, een knop om de routine af te breken en een knop om het venster te sluiten.
- Nijmegen -
24
- Optimalisatie in Inventor -
8. Optimalisatieroutine In bijlage 7 staat de uiteindelijke routine die geprogrammeerd is in VBA. In dit verslag zal niet verder ingegaan worden op de technische programmering binnen VBA. Wel zullen nog enkele zogenaamde bugs besproken worden die tijdens het testen van de routine naar voren zijn gekomen.
8.1 Programmeerfouten Nadat de routine geschreven was, in VBA, moest de optimalisatie gestest worden. Tijdens het bestuderen van de verschillende optimalisatietechnieken zijn al verschillende problemen opgelost. Hieronder worden ze besproken. 8.1.1 Randvoorwaarde Tijdens het testen zijn verschillende aspecten naar voren gekomen waardoor de routine niet tot het eindresultaat kwam. Het eerste probleem was dat als voor de ene parameter een optimum gevonden was de gehele optimalisatie stopte, terwijl een andere parameter nog niet goed geoptimaliseerd was. De optimalisatie stopte zo gauw één parameter dicht bij de randvoorwaarde kwam. Het bereik dat van te voren ingesteld kon worden werd dan bereikt. Door in de routine enkele regels toe te voegen, kan er voor gezorgd worden dat wanneer één parameter bij een randvoorwaarde terecht komt, langs deze rand gelopen wordt om zo te kijken of het resultaat beter wordt. De routine stopt op deze manier niet en het optimum wordt alsnog gevonden. 8.1.2 Boetefunctie Omdat de parameters soms buiten hun bereik doorliepen moest er een zogenaamde boetefunctie geschreven worden. Deze boetefunctie zorgt ervoor dat zo gauw een parameter buiten zijn bereik komt er een boete op de waarde y komt. Y is de waarde waarop geoptimaliseerd wordt, bijvoorbeeld het gewicht. Als naar het minimum gezocht wordt, wordt de boete bij y opgeteld en als naar een maximum gezocht wordt, dan wordt de boete van y afgehaald. Doordat deze waarde nu dus enorm toeneemt of afneemt, door toedoen van de boetefunctie, zal het gebied als een grootte piek of als een groot dal aangezien worden. Door middel van de Steepest-Descent methode zal nu dus de andere kant op gezocht worden. Door middel van de boetefunctie zullen de parameters precies naar het opgegeven bereik lopen. In dit geval wil dat zeggen dat de optimale waarde binnen het gewenste bereik wordt, terwijl de meeste optimale waarde misschien wel net buiten het bereik valt.
- Nijmegen -
25
- Optimalisatie in Inventor -
8.1.3 Overflow Op, tot nu toe, onverklaarbare wijze lopen de waarde van de massatraagheidsmomenten soms zo gigantisch vlug op dat een zogenaamde overflow ontstaat. Een overflow ontstaat wanneer een waarde zo groot wordt dat de computer deze waarde niet meer goed kan weergeven. Als twee binaire bytes opgeteld worden, zoals bij de volgende 8-bits getallen; 10110010 10100100 + (1)01010110 dan valt op dat het resultaat niet past in een 8 bits byte. (Het meest linker bit dat tussen haken staat) De twee linker enen die opgeteld worden kunnen niet meer weergegeven worden. Het eerste bit geeft aan of een getal positief of negatief is. Bij een overflow worden dus totaal verkeerde waarde opgegeven. De optimalisatie loopt zo helemaal mis. In het meest gunstige geval stopt de optimalisatie en in het meest ongunstige geval crasht de computer. 8.1.4 Verkeerde eenheid Omdat Inventor intern met centimeters werkt en de instellingen in de dialoogbox in millimeters opgegeven worden, moesten de waarde in de routine gedeeld worden door tien om zo met de juiste eenheden te werken. De waarde van het oppervlak wordt in Inventor op de volgende manier weergegeven: 1,477E+004 mm^2. Dit is dus 14770 mm2. In het venster van de dialoogbox waar de berekeningen worden weergegeven staat 147,7329 mm2. Om de waarde goed weer te geven zou in de routine het oppervlak vermenigvuldigd kunnen worden met 100, om zo toch de goede waarde weer te geven. Nadat de routine echter aangepast was bleek dat de waardes enorm opliepen totdat een overflow error ontstond. De waarde voor het oppervlak die nu weergegeven worden moeten dus nog vermenigvuldigd worden met 100. Voor het volume geldt hetzelfde, deze waarde moeten echter vermenigvuldigd worden met 1000 om de juiste uitkomst te verkrijgen.
8.2 Aansturen routine In Inventor kunnen iconen aangemaakt worden waarmee de routine geactiveerd kan worden. Door met de muis op het desbetreffende icoon te klikken verschijnt de dialoogbox (figuur 9). Aan het icoon zit een zogenaamde macro gekoppeld die verwijst naar de routine die in VBA geprogrammeerd is.
- Nijmegen -
26
- Optimalisatie in Inventor -
9. Optimalisatie voorbeelden Doordat de optimalisatie mogelijkheden binnen Inventor in de cursussen getoond moeten gaan worden zijn er voorbeelden bedacht waarbij duidelijk de voordelen van het optimaliseren naar voren komen. Door middel van de volgende voorbeelden kan het principe van optimalisatie gedemonstreerd worden.
9.1 Drijfstang Om een goed beeld te krijgen van de werking van de optimalisatie routine is als voorbeeld een vereenvoudigde drijfstang geschetst. In figuur 10 is de drijfstang te zien. De twee parameters die geoptimaliseerd gaan worden zijn als eerste de dikte van de verticale buitenwand (d13) en als tweede de dikte van de horizontale binnenplaat (d16). d13
d16
Figuur 10: Drijfstang
9.1.1 Gewicht optimaliseren De drijfstang kan op verschillende manieren geoptimaliseerd worden. In bijlage 3 staan afbeeldingen van Inventor waarbij de drijfstang is geoptimaliseerd aan de hand van het gewicht. In de eerste afbeelding in bijlage 3 is het minimum aan gewicht gezocht. Het minimale gewicht wordt verkregen zo gauw de variabele parameters zo klein mogelijk zijn. In de tweede afbeelding is het maximale gewicht van de drijfstang gevonden. Dit wordt bereikt zo gauw de twee parameters maximaal zijn. Doordat er een maximum aangegeven is tot waar de twee parameters mogen gaan, ligt bij dit maximum van de twee parameters het grootste gewicht van het onderdeel. In de afbeelding van bijlage 3 lopen de parameters precies naar deze waarde, in dit geval respectievelijk 10 en 20 millimeter.
- Nijmegen -
27
- Optimalisatie in Inventor -
9.1.2 Oppervlak optimaliseren In theorie zou het minimale oppervlak van de drijfstang bereikt worden als en de wanddikte (d13) zo klein mogelijk is, in dit geval dus tot het minimale bereik en dat is 1 mm, en de dikte van de binnenplaat (d16) even dik zou worden als de totale extrusiehoogte van de drijfstang. De drijfstang is dan aan de boven- en aan de onderkant vlak. Hierdoor is het oppervlak minimaal. In de eerste afbeelding in bijlage 4 is te zien dat de routine deze optimalisatie goed uitvoert. De eerste parameter loopt naar het minimum en de tweede parameter loopt naar de 18. De extrusiehoogte van de drijfstang is ook 18 mm. In het rechter venster is te zien dat de waarde, op de afronding na, naar de goede waarde zijn gelopen. Naast de 0,8565 mm en 18,0335 mm van de parameters staat het oppervlak weergegeven. In de tweede afbeelding in bijlage 4 is te zien dat als het maximale oppervlak gezocht wordt de wanddikte (d13) juist zo groot mogelijk is en dat de binnenplaat (d16) juist zo klein mogelijk wordt. Zo ontstaat het grootste oppervlak.
9.1.3 Gewicht optimaliseren rekening houdend met spanning Door de steeds strengere milieumaatregelen die aan een verbrandingsmotor gesteld worden wat brandstofgebruik betreft is het zaak om een motor zo licht mogelijk te ontwerpen. Het gewicht van een motor heeft rechtstreeks uitwerking op de verbruiksreductie van de motor. De drijfstang is een onderdeel van de motor en door deze zo licht mogelijk te ontwerpen kan de totale motor verbeterd worden. De drijfstang verbindt de zuiger met de krukas en zet de drukkracht van de zuiger om in draaikracht. Er werken dus flinke krachten op een drijfstang en dus moet er tijdens het ontwerp rekening gehouden met deze krachten. In bijlage 5 is de drijfstang geoptimaliseerd op gewicht terwijl er rekening gehouden werd met de krachten die op de drijfstang werken. Het gewicht van de drijfstang moet zo laag mogelijk worden, terwijl de maximale spanning in de drijfstang niet overschreven mag worden. De waarde van de parameters lopen nu niet helemaal terug naar het minimum. Het gewicht moet zo laag mogelijk worden, maar de maximale spanning mag niet overschreden worden. De parameters d13 en d16 lopen respectievelijk naar 2,2 en 4,2 mm. Het gewicht van de drijfstang bedraagt nu 0,19 kg.
- Nijmegen -
28
- Optimalisatie in Inventor -
9.2 Balk Een tweede voorbeeld is die van een ingeklemde balk. Hiermee kan bewezen worden dat de optimalisatie goed werkt. Een ingeklemde balk is aan één kant vast bevestigd en aan de andere kant vrij. De balk heeft een rechthoekige doorsnede en wordt aan het uiteinde belast door een kracht. (zie figuur 11)
F
Figuur 11: Ingeklemde balk
Om de werking van de optimalisatieroutine te controleren is een balk getekend in Inventor. Door aan de ene kant van de balk een kracht te plaatsen en door de andere kant volledig vast te zetten wordt een ingeklemde balk gecreëerd. De balk wordt zo geschetst dat de breedte van de balk op drie plaatsen opgegeven kan worden, namelijk aan beide uiteinde en in het midden van de balk.
Figuur 12: Spanningen in eenzijdig ingeklemde balk
In figuur 12 worden de spanningen in de balk schematisch weergegeven. De doorgetrokken lijnen geven de hoofdtrekspanningen aan en de gestippelde lijnen geven de hoofddrukspanningen weer. Zoals te zien is in de figuur, zijn de spanningen aan het uiteinde niet zo groot als middenin de balk. Als de balk nu geoptimaliseerd zou worden op gewicht, dan zou er theoretisch dus materiaal op de hoekpunten weggehaald kunnen worden, zonder dat de maximale spanning overschreden wordt.
- Nijmegen -
29
- Optimalisatie in Inventor -
De balk zou er dus theoretisch uit moeten komen zien zoals in figuur 13.
F
Figuur 13: Ingeklemde balk na optimalisatie
In bijlage 6 is de balk te zien nadat deze geoptimaliseerd is. Door de instellingen in de dialoogbox, wordt er gezocht naar het minimale gewicht, terwijl de spanningen in de balk niet overschreden mogen worden. Zoals voorspeld wordt op de hoekpunten materiaal weggehaald. Er ontstaat als het ware een driehoek. In bijlage 6 is aan de rode kleur te zien dat in het midden van de balk, waar de tweede parameter aangepast kan worden, de spanning het hoogst oploopt. Dit komt waarschijnlijk doordat de balk geschetst is met rechte lijnen. In het midden komen de twee lijnstukken samen en lopen niet vloeiend over. Hierdoor hopen de spanningen in dit punt op. Beter is het om de balk te schetsten met een vloeiende kromme. Dit kan bereikt worden door in plaats van een rechte lijn een boog te tekenen. Door twee bogen op beide uiteinde te bematen en in het midden van de boog een maat te plaatsen zou hetzelfde resultaat bereikt kunnen worden, alleen loopt een boog wel vloeiend door.
- Nijmegen -
30
- Optimalisatie in Inventor -
Conclusie Doordat Inventor een parametrisch programma is en omdat alle geometrische informatie van een onderdeel beschikbaar is, is het pakket uitermate geschikt om een routine in te bouwen die een onderdeel kan optimaliseren. Het onderzoek heeft aangetoond dat onderdeel optimalisatie in Inventor goed toepasbaar is. Deze optimalisatie is toepasbaar op alle informatie die Inventor geeft over een bepaald onderdeel. Daarnaast kan er rekening gehouden worden met de spanningen in het onderdeel doordat in de nieuwste versie van Inventor een module van de eindige elementen methode, Ansys, is ingebouwd Er zijn verschillende optimalisatietechnieken die in Inventor geïntegreerd kunnen worden. Bij de eerste technieken die onderzocht zijn bleek echter steeds dat de bepaalde methode niet aan de verwachtingen kon voldoen. Nadat de verschillende optimalisatietechnieken, waaronder de halveringsmethode en de kwadratische interpolatie bestudeerd zijn is duidelijk geworden dat de Steepest-Descent methode het best toepasbaar is binnen Inventor. Deze methode voldoet aan alle eisen die vooraf opgesteld zijn. Hierbij moet wel worden vastgesteld dat de andere technieken zoals de Fletcher Powell methode niet verder zijn onderzocht. De doelstelling van het onderzoek is verwezenlijkt doordat er enkele voorbeelden zijn bedacht die getoond kunnen worden in de cursussen. Door middel van een drijfstang en een eenzijdig ingeklemde balk kunnen de verschillende manieren van optimaliseren gedemonstreerd worden tijdens de Inventor cursussen.
Aanbevelingen In een eventueel vervolgonderzoek kunnen allereerst de meer specifieke optimalisatietechnieken, waaronder de Fletcher Powell methode onderzocht worden. De belangrijkste vraagstelling in een dergelijk onderzoek is of een andere methode een meerwaarde heeft tegenover de Steepest-Descent methode. De routine tot nu toe werkt naar behoren, maar deze kan nog verbeterd worden. In hoofdstuk 8 worden enkele problemen besproken die tot op heden niet opgelost zijn. De routine moet aangepast worden zodat een overflow niet meer voorkomt en de waarde van het oppervlak en het volume goed weergegeven worden. Daarnaast kunnen er nog meer praktische voorbeelden bedacht en uitgewerkt worden waardoor de mogelijkheden van optimalisatie binnen Inventor nog duidelijker worden.
- Nijmegen -
31
- Optimalisatie in Inventor -
Literatuurlijst
Boeken • Daniels, R.W., An Introduction to Numerical Methods and Optimalization Techniques; Elsevier North Holland inc., New York [3] ISBN 0-444-00263-4 • A. Wismer, Introduction ton nonlinear optimaization Elsevier North Holland inc., New York ISBN 0-44400234-0 • Hibbeler, Russel C., Sterkteleer voor technici Academic Service, Schoonhoven ISBN 90-3950537-3 • Boeklagen, Ir. R., Inventor 9 TEC/CADCollege, Nijmegen ISBN 90-72487-43-5 • Boeklagen, Ir. R., AutoCAD 2005 TEC/CADCollege, Nijmegen ISBN 90-72487-41-9
Overige documentatie • Optimalisatie van de steel van de Heupprothese Boeklagen, Ir. R. • CIM, Computer Integrated Manufacturing [2] Dictaat nummer 338184
Internet • www.cadcollege.nl • www.autodesk.nl [1] • www.inventorusers.nl
- Nijmegen -
32
- Optimalisatie in Inventor -
Bijlage 1: Artikel in CADMagazine RUBRIEK: INTERVIEW (KOP) TEC/CAD College zoekt naar nieuwe mogelijkheden (SUB) Uitwisseling brengt leerlingen telkens een stapje verder
Door: Lambert-Jan Koops (INTRO) TEC/CAD College bereikte laatst een mijlpaal met de 175e inschrijving voor de HBOopleiding van het bedrijf. Een mooie aanleiding om eens bij te praten met trainingsdocent Ronald Boeklagen over trainingen, de toekomst van 2D en de zoektocht naar nieuwe mogelijkheden. Er zijn twee soorten HBO-opleidingen in Nederland. TEC/CAD-college valt, net als de andere Autodesk Authorized Training Centers (ATC’s), onder het niet-bekostigd onderwijs en dat betekent dat de overheid niet meebetaalt aan de kosten van het onderwijs. Degenen die onderwijs willen volgen betalen hiervoor dus ook het volle pond. Ondanks dat gaat het niet slecht met de inschrijvingen bij het CAD-college. Boeklagen: “In vergelijking met de andere ATC’s gaat het niet slecht. We hebben wel een dip gehad, maar die trekt nu weer aan. We hebben ook niet echt last van conjunctuurgevoeligheid. Als het slechter gaat met de economie levert dat voor ons geen echte problemen op. Want als er binnen een bedrijf minder te doen is worden werknemers vaak op cursus gestuurd. En als dat geld op is zijn er vaak juist weer mensen zonder baan die zich willen laten omscholen of hun niveau willen aanpassen aan de eisen van de arbeidsmarkt.”
Automatiseringsgolven De HBO-opleiding bij TEC trok in eerste instantie vooral zogenaamde system managers. Dit waren beheerders van CAD-stations die wel op HBO-niveau werkten maar nog niet in het bezit waren van een officieel diploma. De opleiding werd dan ook vooral gevolgd om hun positie duidelijker te maken binnen een bedrijf. Tegenwoordig zijn de cursisten vaker mensen die met een nieuwe versie van AutoCAD gaan werken of die overstappen van 2D naar 3D. Deze laatste groep is opmerkelijk groot volgens Boeklagen. “Sinds de jaren tachtig zijn er drie golven geweest. De eerste was het CADtekenen op de UNIX-stations. De tweede was de opkomst van AutoCAD en de derde is het 3Dmodelleren in Inventor en concurrerende pakketten als SolidWorks en SolidEdge. Het is mij opgevallen dat de omslag van 2D naar 3D minstens twee keer zo snel gaat als de overstap van de tekenplank naar tekensoftware. Momenteel komt dan ook zestig procent van onze cursisten voor de HBO-opleiding Inventor en de rest voor AutoCAD.” Ondanks de grote belangstelling voor 3D op dit moment gelooft Boeklagen niet dat 2D ooit zal verdwijnen. “Momenteel is 2D het grootst en dat zal voorlopig niet veranderen. Dat komt vooral omdat ik denk dat de bouw geen behoefte heeft aan 3D. Daar zijn veel te veel kleine bedrijfjes die kleine en simpele tekeningen moeten maken en dat gewoon met AutoCAD willen doen.”
3D-Standaard Bij de overstap naar 3D is het een gegeven dat bedrijven vrijelijk kunnen kiezen uit willekeurige programma’s. Er ontstaat dus geen nieuwe standaard zoals AutoCAD dat was in de 2D-wereld met een marktaandeel van boven de tachtig procent. Dat is iets wat Boeklagen graag anders had gezien. “Het is natuurlijk makkelijker om een standaardpakket te hebben dat bijna iedereen gebruikt. Aan de andere kant worden veel van de 3D-pakketten gebruikt in de metaalsector en daar worden maar weinig tekeningen uitgewisseld. Er is daarom vanuit die bedrijven weinig noodzaak voor een standaard. Voor wat betreft de opleidingen zouden we er natuurlijk voordeel aan hebben gehad als Inventor de nieuwe standaard zou worden. Aan de andere kant leren we hier mensen niet alleen maar met een programma omgaan, we leren ze vooral in 3D te denken. “Hoewel ik de andere 3D-pakketten niet ken, denk ik dan ook dat het toch wel mogelijk moet zijn om over te stappen van bijvoorbeeld Inventor naar - Nijmegen -
I
- Optimalisatie in Inventor -
SolidWorks. De manier waarop je naar iets kijkt is belangrijker dan dat je weet waar de knopjes zitten.”
Internettoets Naast de opleiding verzorgt Boeklagen ook ondersteunende activiteiten. Zo is er op de .com-site van TEC/CAD-College een toets te vinden voor zowel AutoCAD als Inventor. Studenten kunnen hier hun kennis toetsen van de pakketten en aan de hand van de score bepalen of ze op schema liggen. De test is echter ook voor niet-studenten toegankelijk. Boeklagen: “Ja, we hebben hem nu toch gemaakt, dus het maakt ons niet uit of er ook anderen zijn die er gebruik van maken. Ik weet dat Cadac bijvoorbeeld ook cursisten onze toetsen laat maken. Dat mag. Ik vind het alleen maar leuk als iets wat we hebben gebouwd ook veel wordt gebruikt. Bovendien kan ik in een overzicht precies zien wie wanneer met welk resultaat de test heeft gemaakt. De AutoCAD-toets is nu sinds augustus beschikbaar en er is 407 keer op ingelogd met een gemiddeld cijfer van een 5,6. Dat is leuk om te weten.” Het viel Boeklagen overigens nog niet mee om de vragen voor de toetsen scherp te omlijnen. “Het is heel apart om acties in een programma terug te brengen naar een vraag waarvoor vier multiple choiceantwoorden te bedenken zijn. Dat vergt toch een bepaalde benaderingswijze die ik niet gewend was.”
Contact Een andere ondersteunende activiteit via Internet is het informatienetwerk dat Boeklagen daar heeft aangemaakt. Hier kunnen studenten en oud-leerlingen hun eigen pagina bijhouden met daarop hun scripties, uitgedachte routines en andere relevante zaken. Een alternatief voor het contact dat normale leerlingen op school hebben. “Bij een full-time opleiding is er veel meer contact tussen de leerlingen en dat missen wij natuurlijk wel. Hier kan een leerling echter ook informatie aan een ander vragen, verslagen bekijken en zo voortborduren op de reeds uitgevoerde projecten. Op die manier blijft het natuurlijk ook interessant. Anders zou het alleen maar een herhalingsoefening blijven waarbij studenten telkens weer hetzelfde wiel uitvinden.”
Optimalisatie Dat Boeklagen echt op zoek is naar de nieuwe mogelijkheden blijkt ook uit een van de opdrachten die momenteel bij TEC wordt uitgevoerd. Paul Arts richt zich op het ontwikkelen van een optimalisatieroutine voor Inventor. Boeklagen legt enthousiast uit waarom dit handig is. “Veel ontwerpers hebben geleerd een onderdeel te ontwerpen om vervolgens te controleren of het een goed ontwerp is. Dit kan nu standaard in Inventor Professional dankzij de geïntegreerde eindige elementensoftware van Ansys. Als het ontwerp voldoet dan neemt de ontwerper daar vaak genoegen mee, het is immers een goed ontwerp. Het is echter niet het beste ontwerp. Het leuke van de routine die Paul nu schrijft is dat deze automatisch op zoek gaat naar een optimaal ontwerp. Dit kan het ontwerp zijn met het minste gewicht of het kleinste volume of oppervlakte. Het mooie is bovendien dat we hem nu weliswaar gebruiken voor een drijfstang maar dat de routine in principe geschikt is voor alle modellen.”
Toekomst Boeklagen is niet bang dat er in de toekomst geen nieuwe ideeën voor afstudeerprojecten zullen ontstaan. “Er is nog zo veel te bedenken. Bovendien: alle simpele dingen zijn al gedaan en dus verkennen we telkens weer iets nieuws. Dat maakt het zo leuk,” aldus de docent. Een nieuw onderdeel wat hij zelf graag zou willen verkennen is de wereld van het 3D-printen. Boeklagen straalt bijna als het onderwerp ter sprake komen.“Dit is echt iets wat ik graag wil en het komt steeds dichter bij. De prijzen van de machines zijn behoorlijk gedaald in de afgelopen jaren. Tegenwoordig zijn er al modellen beschikbaar voor zo’n 20 duizend euro. Misschien dat we nog een tijdje wachten tot de prijs nog wat gedaald is, maar er moet zeker zo’n ding in het klaslokaal komen te staan. Ik kijk er nu al naar uit om er mee te kunnen experimenteren.”
- Nijmegen -
II
- Optimalisatie in Inventor -
www.cadcollege.nl www.cadcollege.com
- Nijmegen -
III
- Optimalisatie in Inventor -
Bijlage 2: Berekening kwadratische interpolatie y1 = ax12 + bx1 + c y 2 = ax 22 + bx 2 + c y 3 = ax 32 + bx 3 + c
y1 − y 2 = A ⋅( x12 − x 22 ) + B ⋅( x1 − x 2 ) y 2 − y 3 = A ⋅( x 22 − x 32 ) + B ⋅( x 2 − x 3 )
( y1 − y 2 ) ⋅( x 2 − x 3 ) − ( y 2 − y 3 ) ⋅( x1 − x 2 ) = A ⋅(( x12 − x 22 ) ⋅( x 2 − x 3 ) − ( x 22 − x 32 ) ⋅( x1 − x 2 )) A=
( y1 − y 2 ) ⋅( x 2 − x 3 ) − ( y 2 − y 3 ) ⋅( x1 − x 2 ) ( x12 − x 22 ) ⋅( x 2 − x3 ) − ( x 22 − x 32 ) ⋅( x1 − x 2 )
B=
( y1 − y 2 ) − A ⋅( x12 − x 22 ) ( x1 − x 2 )
( y1 − y 2 ) − B=
( y1 − y 2 ) ⋅( x 2 − x3 ) − ( y 2 − y 3 ) ⋅( x1 − x 2 ) ( x − x ) ⋅( x 2 − x 3 ) − ( x − x ) ⋅( x1 − x 2 ) ( x1 − x 2 ) 2 1
2 2
2 2
2 3
⋅( x12 − x 22 )
Minimum of maximum bepalen:
y1 = ax + bx + c 0 = 2ax + b − b x= 2a
- Nijmegen -
IV
- Optimalisatie in Inventor -
Bijlage 3: Drijfstang optimum gewicht
- Nijmegen -
V
- Optimalisatie in Inventor -
Bijlage 4: Drijfstang optimum oppervlak
- Nijmegen -
VI
- Optimalisatie in Inventor -
Bijlage 5: Drijfstang optimum gewicht/spanning
- Nijmegen -
VII
- Optimalisatie in Inventor -
Bijlage 6: Balk optimum gewicht/spanning
- Nijmegen -
VIII
- Optimalisatie in Inventor -
Bijlage 7: VBA Routine Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim
oPartDoc As Inventor.PartDocument oMassProps As MassProperties oParams As Parameters oModelParams As ModelParameters StopOptimalisatie As Boolean n As Byte ParameterSpanning As Parameter RekSpanning As Double BreukSpanning As Double Veiligheidsfactor As Double
Private Sub CmdAfbreken_Click() Stop End Sub Private Sub CmdSluiten_Click() Me.Hide Unload Me End Sub Private Sub txtMinimaleWaarde_Change() If VBA.IsNumeric(Me.txtMinimaleWaarde.Text) Then Me.txtMinimaleWaarde.BackColor = vbWhite Else Me.txtMinimaleWaarde.BackColor = vbYellow End If Me.txtMinimaleWaarde.Text = VBA.Replace(Me.txtMinimaleWaarde.Text, ".", ",") End Sub Private Sub cmdVervers_Click() Dim X(1 To 10) As Double X(1) = Me.X1 / 10 If n >= 2 Then X(2) = Me.X2 / 10 If n >= 3 Then X(3) = Me.X3 / 10 y = Error(X) Call VulResultatenlijst(X, y) End Sub Private Sub Parameter1_Change() tdl = oModelParams.Item(Me.Parameter1.Text).Value X1 = tdl * 10 End Sub Private Sub PArameter2_Change() tdl = oModelParams.Item(Me.PArameter2.Text).Value X2 = tdl * 10 End Sub Private Sub PArameter3_Change() tdl = oModelParams.Item(Me.Parameter3.Text).Value X3 = tdl * 10 End Sub Private Sub SpinButton1_SpinUp() If n > 1 Then n = n - 1 MaakControlsZichtbaar End Sub Private Sub SpinButton1_SpinDown() If n < 3 Then n = n + 1 MaakControlsZichtbaar End Sub
- Nijmegen -
IX
- Optimalisatie in Inventor -
Sub MaakControlsZichtbaar() For Each Control In Me.Controls nummer = Right(Control.Name, 1) If (Not IsNumeric(nummer)) Or nummer <= n Then Control.Visible = True Else Control.Visible = False End If Next Control Me.Resultaat.ColumnCount = n + 1 End Sub Private Sub SpinButtonVeiligheidsfactor_SpinDown() If Veiligheidsfactor > 1 Then Veiligheidsfactor = Veiligheidsfactor - 0.5 Toonveiligheidsfactor End Sub Private Sub SpinButtonVeiligheidsfactor_SpinUp() Veiligheidsfactor = Veiligheidsfactor + 0.5 Toonveiligheidsfactor End Sub Sub Toonveiligheidsfactor() Me.lblVeiligheidsfactor = "Veiligheidsfactor: " & Format(Veiligheidsfactor, "#.0") End Sub Private Sub UserForm_Initialize() 'oPartDoc is het actieve onderdeel 'oModelParams zijn de parameters 'oMassProps zijn de iProperties van het actieve document Set Set Set Set
oPartDoc = ThisApplication.ActiveDocument oParams = oPartDoc.ComponentDefinition.Parameters oModelParams = oParams.ModelParameters oMassProps = oPartDoc.ComponentDefinition.MassProperties
Dim Parameter As Parameter For Each Parameter In oModelParams Me.Parameter1.AddItem (Parameter.Name) Me.PArameter2.AddItem (Parameter.Name) Me.Parameter3.AddItem (Parameter.Name) Next Parameter Me.Parameter1.ListIndex = 0 Me.PArameter2.ListIndex = 1 Me.Parameter3.ListIndex = 2 Me.StapGrootte = 1 / 10 n = 1 Veiligheidsfactor = 2 Toonveiligheidsfactor MaakControlsZichtbaar End Sub Private Sub Start_Click()
Me.Aantalberekeningen = 0 Dim a1 As Double Dim a2 As Double Dim startwaarde As Double Dim eindwaarde As Double Dim Parameter As String 'Maak de lijst met resultaten schoon Me.Resultaat.Clear
- Nijmegen -
X
- Optimalisatie in Inventor -
Dim Dim Dim Dim Dim Dim
E(1 To 10) As Double Grad(1 To 10) As Double S(1 To 10) As Double X(1 To 10) As Double X1(1 To 10) As Double X2(1 To 10) As Double
X(1) = Me.X1 / 10 If n >= 2 Then X(2) = Me.X2 / 10 If n >= 3 Then X(3) = Me.X3 / 10 e0 = Error(X) Call VulResultatenlijst(X, e0) 'Vind stijlste helling regel_22: For i = 1 To n delta = 0.01 * X(i) If (Abs(X(i)) < 0.001) Then delta = 0.001 xsave = X(i) X(i) = X(i) + delta Grad(i) = (Error(X) - e0) / delta X(i) = xsave Next i ' volgende regels toegevoegd door Ronald om randvoorwaarden goed door te voeren ' Het komt erop neer dat er op 1 mm afstand van de rand ' langs de rand gelopen wordt, met een kleine afwijking om te kijken of het beter wordt. 'zonder deze toevoeging zou de optimalisatie kunnen stoppen langs de rand. ' De eerste controle is of ze beide langs de rand lopen. Dan kun je beter stoppen, want er is dan een singulier punt. If n = 2 And Abs(X(1) - Me.xmin1 / 10) < 0.05 And Abs(X(2) - Me.Xmin2 / 10) < 0.05 Then Exit Sub If n = 3 And Abs(X(1) - Me.xmin1 / 10) < 0.05 And Abs(X(2) - Me.Xmin2 / 10) < 0.05 And Abs(X(3) - Me.Xmin3 / 10) < 0.05 Then Exit Sub If n = 2 And Abs(X(1) - Me.Xmax1 / 10) < 0.05 And Abs(X(2) - Me.Xmax2 / 10) < 0.05 Then Exit Sub If n = 3 And Abs(X(1) - Me.Xmax1 / 10) < 0.05 And Abs(X(2) - Me.Xmax2 / 10) < 0.05 And Abs(X(3) - Me.XMax3 / 10) < 0.05 Then Exit Sub
If Abs(X(1) - Me.xmin1 / 10) < 0.05 Then Grad(1) = Grad(1) / 100000 If n > 1 And Abs(X(2) - Me.Xmin2 / 10) < 0.05 Then Grad(2) = Grad(2) / 100000 If n > 2 And Abs(X(3) - Me.Xmin3 / 10) < 0.05 Then Grad(3) = Grad(3) / 100000 If Abs(X(1) - Me.Xmax1 / 10) < 0.05 Then Grad(1) = Grad(1) / 100000 If n > 1 And Abs(X(2) - Me.Xmax2 / 10) < 0.05 Then Grad(2) = Grad(2) / 100000 If n > 2 And Abs(X(3) - Me.XMax3 / 10) < 0.05 Then Grad(3) = Grad(3) / 100000 ' tot hier toegevoegd
- Nijmegen -
XI
- Optimalisatie in Inventor -
'Vind richting S For i = 1 To n S(i) = -Grad(i) Next i 'Kwadratische interpolatie 'Vind alpha1 a1 = Me.StapGrootte regel_53:
For i = 1 To n X1(i) = X(i) + a1 * S(i) Next i e1 = Error(X1) If (e1 < e0) Then GoTo regel_63 a1 = a1 / 2 If a1 < Me.StapGrootte / 10 Then Exit Sub GoTo regel_53 'Vind alpha2 regel_63: a2 = a1 regel_64: a2 = 2 * a2 For i = 1 To n X2(i) = X(i) + a2 * S(i) Next i e2 = Error(X2) If (e2 > e1) Then GoTo regel_74 a1 = a2 e1 = e2 GoTo regel_64 'Vind alpha regel_74: a = 0.5 * ((a1 * a1 - a2 * a2) * e0 + a2 * a2 * e1 - a1 * a1 * e2) / ((a1 - a2) * e0 + a2 * e1 - a1 * e2) 'Vind nieuwe x For i = 1 To n X(i) = X(i) + a * S(i) Next i e0 = Error(X) If (e0 < e1) Then GoTo regel_95 For i = 1 To n X(i) = X(i) + (a1 - a) * S(i) Next i e0 = Error(X) regel_95: Call VulResultatenlijst(X, e0) GoTo regel_22 End Sub
Sub VulResultatenlijst(X, y) AantalCijfers = "#.0000" Call Me.Resultaat.AddItem(Format(X(1) * 10, AantalCijfers) & ", ")
- Nijmegen -
XII
- Optimalisatie in Inventor -
For i = 2 To n Me.Resultaat.List(Me.Resultaat.ListCount - 1, i - 1) = Format(X(i) * 10, AantalCijfers) & ": " Next i Me.Resultaat.List(Me.Resultaat.ListCount - 1, n) = Format(Abs(y), AantalCijfers) End Sub Function Error(X) As Double
'Voordat de berekening wordt doorgevoerd worden de parameters gecontroleerd 'of deze niet het maximum of minimum overschrijden, want tenslotte kan Inventor dan vastlopen.
If n > 0 Then Select Case True Case X(1) < Me.xmin1 / 10 oModelParams.Item(Me.Parameter1.Value).Value = xmin1 / 10 Case X(1) > Me.Xmax1 / 10 oModelParams.Item(Me.Parameter1.Value).Value = Xmax1 / 10 Case Else oModelParams.Item(Me.Parameter1.Value).Value = X(1) End Select End If If n > 1 Then Select Case True Case X(2) < Me.Xmin2 / 10 oModelParams.Item(Me.PArameter2.Value).Value = Xmin2 / 10 Case X(2) > Me.Xmax2 / 10 oModelParams.Item(Me.PArameter2.Value).Value = Xmax2 / 10 Case Else oModelParams.Item(Me.PArameter2.Value).Value = X(2) End Select End If If n > 2 Then Select Case True Case X(3) < Me.Xmin3 / 10 oModelParams.Item(Me.Parameter3.Value).Value = Xmin3 / 10 Case X(3) > Me.XMax3 / 10 oModelParams.Item(Me.Parameter3.Value).Value = XMax3 / 10 Case Else oModelParams.Item(Me.Parameter3.Value).Value = X(3) End Select End If 'Update het model oPartDoc.Update VBA.DoEvents 'Bereken het resultaat If Me.ZoekMinimum Then boete = 1 Else boete = -1 End If
Error = waarde If X(1) < Me.xmin1 / 10 Then Error1 = waarde * (boete * (X(1) - Me.xmin1 / 10) ^ 2) If X(1) > Me.Xmax1 / 10 Then Error1 = waarde * (boete * (X(1) - Me.Xmax1 / 10) ^ 2)
- Nijmegen -
XIII
- Optimalisatie in Inventor -
If n >= 2 Then If X(2) < Me.Xmin2 / 10 Then Error2 = waarde * (boete * (X(2) - Me.Xmin2 / 10) ^ 2) If X(2) > Me.Xmax2 / 10 Then Error2 = waarde * (boete * (X(2) - Me.Xmax2 / 10) ^ 2) End If If n >= 3 Then If X(3) < Me.Xmin3 / 10 Then Error3 = waarde * (boete * (X(3) - Me.Xmin3 / 10) ^ 2) If X(3) > Me.XMax3 / 10 Then Error3 = waarde * (boete * (X(3) - Me.XMax3 / 10) ^ 2) End If Error = waarde + Error1 + Error2 + Error3 If Me.Spanning Then Call BerekenVonMisesStress On Error Resume Next MaximaleSpanning = ParameterSpanning.Value If Err Then Call VindVonMisisParameter MaximaleSpanning = ParameterSpanning.Value End If
If Veiligheidsfactor * MaximaleSpanning > RekSpanning Then Error = Error * (1 + (Veiligheidsfactor * MaximaleSpanning - RekSpanning) * (Veiligheidsfactor * MaximaleSpanning - RekSpanning) / 10000000000#) Me.lblVeiligheidsfactor.ForeColor = vbRed Else Me.lblVeiligheidsfactor.ForeColor = vbBlack End If End If If Me.ZoekMinimum Then Error = Error Else Error = -Error End If Me.X1 = Format(X(1) * 10, "#.####") Me.X2 = Format(X(2) * 10, "#.####") Me.X3 = Format(X(3) * 10, "#.####") Me.Aantalberekeningen = Me.Aantalberekeningen + 1 Me.LblError = Format(Error, "#.######") End Function Function waarde() Dim Ixx As Double: Dim Iyy As Double: Dim Izz As Double Dim Ixy As Double: Dim Iyz As Double: Dim Ixz As Double
Select Case True Case Me.Volume waarde = oMassProps.Volume Case Me.Oppervlak waarde = oMassProps.Area Case Me.Gewicht waarde = oMassProps.Mass Case Me.Ixx Call oMassProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz) waarde = Ixx * 100000
- Nijmegen -
XIV
- Optimalisatie in Inventor -
Case Me.Iyy Call oMassProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz) waarde = Iyy * 100000 Case Me.Ixy Call oMassProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz) waarde = Ixy * 100000 End Select End Function Function VindVonMisisParameter() As Double Set oPartDoc = ThisApplication.ActiveDocument Set oParams = oPartDoc.ComponentDefinition.Parameters Set ouserParams = oParams.UserParameters Dim Parameter As Parameter For Each Parameter In ouserParams If Parameter.Comment = "Max Equivalent Stress" Then Set ParameterSpanning = Parameter Next Parameter Dim oMaterial As Material Set oMaterial = oPartDoc.Materials.Item(1) Dim Set Dim Set
oCompDef As ComponentDefinition oCompDef = oPartDoc.ComponentDefinition Material As Material Materiaal = oCompDef.Material
RekSpanning = 10000 * Materiaal.YieldStrength BreukSpanning = 10000 * Materiaal.UltimateTensileStrength End Function Sub BerekenVonMisesStress() Dim oControlDefs As ControlDefinitions Set oControlDefs = ThisApplication.CommandManager.ControlDefinitions ThisApplication.CommandManager.ControlDefinitions.Item("AIPStress_Update").Execute 'Om de een of andere reden gaat het programma wel eens te snel verder 'daarom wacht het programma 30 seconden tussen de berekeningen door. tijd = VBA.Timer Do VBA.DoEvents Loop Until VBA.Timer - tijd < 30 Set oControlDefs = Nothing End Sub Private X2.Text End Sub Private X1.Text End Sub Private X3.Text End Sub
Sub X2_Change() = Replace(X2.Text, ".", ",") Sub X1_Change() = Replace(X1.Text, ".", ",") Sub X3_Change() = Replace(X3.Text, ".", ",")
Private Sub Xmax1_Change() End Sub
- Nijmegen -
XV