15.01.2013 Views

OPTIMALISATIE IN INVENTOR - CAD College

OPTIMALISATIE IN INVENTOR - CAD College

OPTIMALISATIE IN INVENTOR - CAD College

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>OPTIMALISATIE</strong> <strong>IN</strong><br />

<strong>IN</strong>VENTOR<br />

Paul Arts<br />

Nijmegen<br />

Februari 2005


- Optimalisatie in Inventor -<br />

ONDERZOEK NAAR <strong>OPTIMALISATIE</strong><br />

MOGELIJKHEDEN B<strong>IN</strong>NEN <strong>IN</strong>VENTOR<br />

Project: Optimalisatie in Inventor.<br />

Auteur: Paul Arts.<br />

Begeleider docent: Dhr. Boeklagen.<br />

Bedrijf: TEC/<strong>CAD</strong><strong>College</strong>.<br />

Locatie: Nijmegen.<br />

Datum: Februari 2005.<br />

- Nijmegen - ii


- Optimalisatie in Inventor -<br />

Samenvatting<br />

Dit is het verslag van de opdracht ‘Optimalisatie in Inventor’ die tijdens de opleiding voor Mechanical<br />

Designer is uitgevoerd bij TEC/Cadcollege te Nijmegen. TEC staat voor Twente Engineering<br />

Consultancy en is een bedrijf dat kennisoverdracht in Computer Aided Design (<strong>CAD</strong>) verzorgt. Sinds<br />

een aantal jaren verzorgt TEC ook cursussen voor het pakket Inventor. De cursussen worden door dhr.<br />

Boeklagen gegeven. Vlak na zijn afstuderen heeft dhr. Boeklagen, tijdens een onderzoek naar de<br />

optimale vorm van een heupprothese, verschillende optimalisatietechnieken onderzocht. Hieruit is het<br />

idee ontstaan om te onderzoeken of deze optimalisatietechnieken ook in Inventor geïntegreerd kunnen<br />

worden. Door middel van praktische voorbeelden zouden de mogelijkheden van optimalisatie in de<br />

cursussen getoond kunnen worden.<br />

‘Welke optimalisatietechnieken bestaan er en welke techniek kan het beste toegepast worden binnen<br />

Inventor’ is de belangrijkste probleemstelling binnen dit onderzoek. De doelstelling van het onderzoek<br />

is om een demonstratieproject op te zetten dat laat zien hoe onderdelen binnen het ontwerppakket<br />

Inventor geoptimaliseerd kunnen worden.<br />

Inventor is een parametrisch 3D ontwerpprogramma voornamelijk bedoeld voor de machinebouw.<br />

Omdat een onderdeel in Inventor volledig parametrisch gemaakt kan worden en wijzigingen dus<br />

eenvoudig aangebracht kunnen worden en omdat de geometrische informatie van een onderdeel te alle<br />

tijde beschikbaar is, is het programma in theorie uitermate geschikt voor optimalisatie. Tijdens<br />

optimalisatie van een onderdeel wordt er gezocht naar het minimum of naar het maximum. Dit kan het<br />

minimale of maximale gewicht, volume, oppervlak of massatraagheidsmoment zijn. Doordat in<br />

Inventor 9 Professional een module van Ansys geïntegreerd is, kan een onderdeel ook geoptimaliseerd<br />

worden terwijl er rekening gehouden wordt met de spanningen in het onderdeel. De optimalisatie<br />

routine wordt door middel van Visual Basic for Applications in Inventor geschreven.<br />

Voordat de verschillende optimalisatietechnieken bestudeerd worden, is er een pakket van eisen<br />

opgesteld waar de uiteindelijke optimalisatietechniek binnen Inventor aan moet voldoen. De techniek<br />

moet onder andere meerdere parameters kunnen optimaliseren en moet op alle geometrische<br />

informatie die Inventor over het onderdeel geeft toepasbaar zijn.<br />

Het optimum moet zo snel mogelijk gevonden worden en de routine moet universeel zijn, dus niet<br />

geschreven voor een specifiek onderdeel, maar toepasbaar op allerlei onderdelen.<br />

Een optimalisatietechniek is een iteratieve zoekmethode. Iteratief betekent dat de verschillende<br />

uitkomsten van de berekeningen met elkaar vergeleken worden, waarna de berekeningen bijgestuurd<br />

worden om zo het uiteindelijke doel te benaderen. Bij iteratieve zoekmethoden kan onderscheid<br />

gemaakt worden tussen methode die gebruik maken van gradiëntinformatie en methode die geen<br />

gebruik maken van de afgeleiden van een functie.<br />

- Nijmegen - iii


- Optimalisatie in Inventor -<br />

Er zijn een aantal optimalisatie methoden bestudeerd. De Steepest-Descent methode voldeed aan de<br />

eisen die opgesteld waren. Hierdoor en doordat er weinig tijd over was om de meer uitgebreide<br />

technieken te bestuderen is de Steepest-Descent methode gekozen en is deze methode verder<br />

uitgewerkt.<br />

De Steepest-Descent methode bepaalt het optimum door eerst de steilste helling te zoeken op een<br />

bepaald punt van een 3-dimensionale functie. Waar de helling het steilst loopt wordt het lokale<br />

minimum gezocht. Deze procedure wordt herhaald totdat het globale minimum gevonden wordt. Om<br />

de Steepest-Descent te begrijpen is het handig de functie die geminimaliseerd moet worden voor te<br />

stellen als een heuvellandschap, waarbij de dalen het minimum voorstellen en de pieken het maximum.<br />

De bedoeling is om het diepste dal te vinden zonder in een lokaal minimum te blijven hangen.<br />

Om de optimalisatietechniek aan te sturen is een dialoogbox ontwikkeld die door iedere ontwerper<br />

direct te gebruiken is zonder dat er extra hulp nodig is om de optimalisatie correct te laten verlopen. Zo<br />

moet allereerst gekozen worden of er een minimum of een maximum gezocht moet worden. Daarnaast<br />

moet aangegeven worden op welk criterium geoptimaliseerd moet worden en kan aangevinkt worden<br />

of er rekening gehouden wordt met spanningen.<br />

In de dialoogbox kan aangegeven worden hoeveel parameters geoptimaliseerd moeten worden en<br />

binnen welk bereik. De berekeningen worden in een venster getoond zodat in één oogopslag zowel de<br />

beginwaarde als de resultaten bekeken kunnen worden.<br />

Nadat de optimalisatie routine in Inventor geschreven is, is de routine uitgebreid getest. Hieruit zijn<br />

enkele programmeerfouten naar boven gekomen die opgelost moesten worden omdat de optimalisatie<br />

anders niet goed verliep. Als laatste zijn verschillende voorbeelden bedacht waarmee de werking en<br />

het nut van de optimalisatietechniek binnen Inventor duidelijk gemaakt wordt. Hiermee kan in de<br />

cursussen gedemonstreerd worden wat optimalisatie is.<br />

Doordat de verschillende optimalisatietechnieken bestudeerd zijn en hierbij duidelijk geworden is dat<br />

de Steepest-Descent methode het best toepasbaar is binnen Inventor is de belangrijkste vraag in het<br />

onderzoek beantwoord. Hierbij moet wel de kanttekening geplaatst worden dat nog niet alle<br />

technieken uitgebreid onderzocht zijn. In een eventueel vervolgonderzoek moet er gekeken worden of<br />

deze technieken een meerwaarde hebben tegenover de Steepest-Descent methode. Daarnaast kan de<br />

uiteindelijke routine nog verbeterd worden.<br />

De doelstelling van het onderzoek is verwezenlijkt doordat er enkele voorbeelden zijn die getoond<br />

kunnen worden in de cursussen. Door middel van een drijfstang en een eenzijdig ingeklemde balk<br />

kunnen de verschillende manieren van optimaliseren getoond worden.<br />

- Nijmegen - iv


- Optimalisatie in Inventor -<br />

Voorwoord<br />

Tijdens dit project ben ik werkzaam geweest bij TEC/Cadcollege. TEC staat voor Twente Engineering<br />

Consultancy en is een bedrijf dat kennisoverdracht in Computer Aided Design (<strong>CAD</strong>) verzorgd. Deze<br />

kennisoverdracht kan men globaal in drie groepen onderverdelen:<br />

• Cursusinstituut voor <strong>CAD</strong> opleidingen;<br />

• Uitgeverij van <strong>CAD</strong> leerboeken;<br />

• Uitgeverij van educatieve software voor tekening maken en –lezen.<br />

Al deze producten worden door TEC zelf ontwikkeld, geproduceerd en verkocht. TEC is een <strong>CAD</strong>specialist<br />

sinds het eerste geautomatiseerde tekensysteem. Cursussen worden dagelijks gevolgd door<br />

tekenaars en constructeurs. Tevens heeft TEC een bekende positie verworven door hun eigen boeken<br />

serie. TEC heeft dan ook de titel: AutoDesk Authorized Training Center (ATC). Hiermee is TEC dus<br />

verbonden met Autodesk, de makers van Auto<strong>CAD</strong>. TEC is bevoegd om een Autodesk-certificaat te<br />

leveren. De docent ir. Ronald Boeklagen is deskundig op het gebied van <strong>CAD</strong> en EEM. Al vanaf 1984<br />

begeleidt hij bedrijven en scholen bij de keuze en invoering van <strong>CAD</strong> en doceert hij in het tekenen met<br />

<strong>CAD</strong> systemen. Hij is ook de man achter de boeken "Auto<strong>CAD</strong>, Computer Ondersteund Ontwerpen".<br />

In bijlage 1 staat een artikel dat in februari verschijnt in het <strong>CAD</strong>Magazine. Dit is een vakblak voor<br />

constucteurs/tekenaars. In dit artikel worden de verschillende activiteiten van TEC besproken en wordt<br />

ook een stukje geschreven over deze opdracht.<br />

Via dit voorwoord wil ik enkele personen bedanken die mij geholpen hebben om deze opdracht<br />

succesvol en met plezier af te ronden. Dit zijn alle mensen die de afgelopen periode tijd voor mij<br />

hebben vrijgemaakt om mij bij te staan indien ik vragen had. In het bijzonder bedank ik mijn<br />

stagebegeleiders vanuit TEC, dit zijn Ronald Boeklagen en Leonie Bergsma.<br />

Paul Arts<br />

februari 2005<br />

- Nijmegen - v


- Optimalisatie in Inventor -<br />

Inhoud<br />

SAMENVATT<strong>IN</strong>G..............................................................................................................................III<br />

VOORWOORD .....................................................................................................................................V<br />

1. <strong>IN</strong>LEID<strong>IN</strong>G ........................................................................................................................................7<br />

1.1 PROBLEEMSTELL<strong>IN</strong>G.......................................................................................................................7<br />

1.2 DOELSTELL<strong>IN</strong>G ...............................................................................................................................7<br />

1.3 AANPAK..........................................................................................................................................8<br />

1.4 OPBOUW VAN HET VERSLAG ..........................................................................................................8<br />

2. AUTODESK <strong>IN</strong>VENTOR .................................................................................................................9<br />

2.1 2D NAAR 3D ...................................................................................................................................9<br />

2.2 PARAMETRISCH ONTWERPEN .........................................................................................................9<br />

2.3 PARAMETRISCH ONTWERPEN <strong>IN</strong> <strong>IN</strong>VENTOR .................................................................................10<br />

2.4 PREDICTIVE MODELL<strong>IN</strong>G. .............................................................................................................11<br />

2.4.1 Eindige Elementen Methode (EEM) ......................................................................................11<br />

2.4.2 EEM in Inventor ....................................................................................................................12<br />

2.5 <strong>OPTIMALISATIE</strong> MODELL<strong>IN</strong>G ........................................................................................................12<br />

2.6 VISUAL BASIC FOR APPLICATIONS...............................................................................................12<br />

2.7 CONCLUSIE ...................................................................................................................................12<br />

3. <strong>OPTIMALISATIE</strong>TECHNIEK......................................................................................................13<br />

3.1 PAKKET VAN EISEN.......................................................................................................................13<br />

3.2 ITERATIEVE ZOEKMETHODEN.......................................................................................................13<br />

3.3 <strong>OPTIMALISATIE</strong>METHODEN <strong>IN</strong>TEGREREN <strong>IN</strong> VBA........................................................................14<br />

4. HALVER<strong>IN</strong>GSMETHODE ............................................................................................................15<br />

4.1 HOE WERKT DE HALVER<strong>IN</strong>GSMETHODE?......................................................................................15<br />

4.2 CONCLUSIE ...................................................................................................................................17<br />

5. KWADRATISCHE <strong>IN</strong>TERPOLATIE...........................................................................................18<br />

5.1 HOE WERKT DE KWADRATISCHE <strong>IN</strong>TERPOLATIE METHODE?........................................................18<br />

5.2 CONVERGENTIESNELHEID ............................................................................................................20<br />

5.3 CONCLUSIE ...................................................................................................................................20<br />

6. STEEPEST-DESCENT METHODE..............................................................................................21<br />

6.1 HOE WERKT DE STEEPEST-DESCENT METHODE? .........................................................................21<br />

6.2 CONCLUSIE ...................................................................................................................................22<br />

- Nijmegen - vi


- Optimalisatie in Inventor -<br />

7. DIALOOGBOX ................................................................................................................................23<br />

7.1 ACTIEGESTUURD PROGRAMMEREN ..............................................................................................23<br />

7.2 OPBOUW DIALOOGBOX.................................................................................................................23<br />

8. <strong>OPTIMALISATIE</strong>ROUT<strong>IN</strong>E.........................................................................................................25<br />

8.1 PROGRAMMEERFOUTEN................................................................................................................25<br />

8.1.1 Randvoorwaarde ...................................................................................................................25<br />

8.1.2 Boetefunctie ...........................................................................................................................25<br />

8.1.3 Overflow ................................................................................................................................26<br />

8.1.4 Verkeerde eenheid .................................................................................................................26<br />

8.2 AANSTUREN ROUT<strong>IN</strong>E...................................................................................................................26<br />

9. <strong>OPTIMALISATIE</strong> VOORBEELDEN ...........................................................................................27<br />

9.1 DRIJFSTANG..................................................................................................................................27<br />

9.1.1 Gewicht optimaliseren...........................................................................................................27<br />

9.1.2 Oppervlak optimaliseren .......................................................................................................28<br />

9.1.3 Gewicht optimaliseren rekening houdend met spanning.......................................................28<br />

9.2 BALK.............................................................................................................................................29<br />

CONCLUSIE ........................................................................................................................................31<br />

AANBEVEL<strong>IN</strong>GEN.............................................................................................................................31<br />

LITERATUURLIJST ..........................................................................................................................32<br />

BIJLAGE 1: ARTIKEL <strong>IN</strong> <strong>CAD</strong>MAGAZ<strong>IN</strong>E ...................................................................................I<br />

BIJLAGE 2: BEREKEN<strong>IN</strong>G KWADRATISCHE <strong>IN</strong>TERPOLATIE........................................... IV<br />

BIJLAGE 3: DRIJFSTANG OPTIMUM GEWICHT.......................................................................V<br />

BIJLAGE 4: DRIJFSTANG OPTIMUM OPPERVLAK................................................................ VI<br />

BIJLAGE 5: DRIJFSTANG OPTIMUM GEWICHT/SPANN<strong>IN</strong>G..............................................VII<br />

BIJLAGE 6: BALK OPTIMUM GEWICHT/SPANN<strong>IN</strong>G..........................................................VIII<br />

BIJLAGE 7: VBA ROUT<strong>IN</strong>E ............................................................................................................ IX<br />

- Nijmegen - vii


- Optimalisatie in Inventor -<br />

1. Inleiding<br />

Sinds een aantal jaren verzorgt TEC ook cursussen voor het pakket Inventor. De Autodesk Inventor<br />

Serie is een 3D-ontwerpsoftware voornamelijk bedoeld voor de werktuigbouwkundige sector. Inventor<br />

is een 3D parametrisch programma voor het aanmaken van vorm- en maatvarianten. Met<br />

parametrische modelleertechnieken kan veel tijd bespaard worden tijdens het ontwerpen omdat snel<br />

verschillende varianten van een ontwerp aangemaakt kunnen worden.<br />

Na de studie Mechanica aan de Universiteit Twente heeft dhr. Boeklagen een onderzoek uitgevoerd<br />

naar de optimale vorm van de steel van een heupprothese. Tijdens dit onderzoek heeft dhr. Boeklagen<br />

verschillende wiskundige optimalisatietechnieken toegepast. Deze optimalisatietechnieken zijn<br />

gebaseerd op de relatie tussen de ontwerpparameters (bijvoorbeeld de vorm) en de eigenschappen van<br />

het ontwerp (bijvoorbeeld de spanning). Bij een optimalisatietechniek definieert de ontwerper de<br />

eigenschap en berekent de computer de vorm die daarbij past. Dit in tegenstelling tot een veel<br />

gebruikte werkwijze waarbij de ontwerper de vorm vastlegt en achteraf controleert of het ontwerp<br />

voldoet. In zijn huidige functie als docent is bij dhr. Boeklagen de behoefte ontstaan om bij het geven<br />

van cursussen de mogelijkheden van optimalisatie met behulp van parameters te tonen.<br />

Omdat Inventor een parametrisch ontwerpprogramma is, zou binnen deze omgeving een<br />

optimalisatietechniek geïntegreerd kunnen worden. Het idee bestond om de mogelijkheden te gaan<br />

bestuderen om bepaalde optimalisatietechnieken binnen Inventor te integreren. Hieruit is deze<br />

opdracht ontstaan.<br />

1.1 Probleemstelling<br />

‘Welke optimalisatietechnieken bestaan er en welke techniek kan het beste toegepast worden binnen<br />

Inventor’ is de belangrijkste probleemstelling binnen deze opdracht. Om deze vraag op te lossen zullen<br />

er dus verschillende aandachtsgebieden bestudeerd moeten worden. Allereerst zal het nieuwste<br />

Inventor pakket bestudeerd moeten worden. Daarnaast zullen de verschillende optimalisatietechnieken<br />

bekeken worden en zal met behulp van Visual Basis for Applications (VBA) een programma<br />

geschreven en getest moeten worden.<br />

1.2 Doelstelling<br />

De doelstelling van het project is om een demonstratieproject op te zetten dat laat zien hoe onderdelen<br />

binnen het ontwerppakket Inventor geoptimaliseerd kunnen worden. Om dit te bereiken zal een<br />

optimalisatieroutine moeten worden geschreven. Daarna moeten voorbeelden bedacht worden die<br />

tijdens de cursussen getoond kunnen worden.<br />

- Nijmegen - 7


- Optimalisatie in Inventor -<br />

1.3 Aanpak<br />

Omdat er al allerlei verschillen soorten wiskundige optimalisatietechnieken bestaan, is het niet nodig<br />

om een nieuwe optimalisatietechniek te ontwikkelen. Het is juist de bedoeling om de verschillende<br />

optimalisatietechnieken te bestuderen en te kijken welke het beste voldoet aan de vooraf gestelde<br />

eisen.<br />

Om de optimalisatietechnieken goed te begrijpen is begonnen met de ‘eenvoudigere’ technieken.<br />

Daarna is stap voor stap een andere techniek bekeken. Tijdens dit proces zijn er verschillende<br />

problemen naar boven gekomen. Deze zijn steeds ondervangen, zodat uiteindelijk een representatieve<br />

routine is ontstaan.<br />

1.4 Opbouw van het verslag<br />

Allereerst zal er dieper ingegaan worden in het pakket Inventor en het parametrisch ontwerpen.<br />

Daarna zullen de verschillende optimalisatietechnieken besproken worden en zal uiteindelijk de meest<br />

gunstige techniek gekozen worden. Om deze techniek te kunnen toepassen zal een dialoogbox<br />

gemaakt moeten worden, dit wordt besproken in hoofdstuk 7. In hoofdstuk 8 worden de problemen<br />

besproken die tijdens het testen van de routine naar voren zijn gekomen. In het laatste hoofdstuk<br />

worden de verschillende voorbeelden behandeld die opgezet zijn om in de toekomst in cursussen te<br />

tonen. Als laatste volgt de conclusie waarin de belangrijkste bevindingen nogmaals worden aangestipt.<br />

- Nijmegen - 8


- Optimalisatie in Inventor -<br />

2. Autodesk Inventor<br />

Met de introductie van Auto<strong>CAD</strong> in 1982 creëerde Autodesk een markt voor ontwerpsoftware voor<br />

pc’s. Vandaag de dag wordt Auto<strong>CAD</strong> ingezet in alle mogelijke ontwerpdisciplines, van<br />

architectonische en civiele applicaties tot mechanische ontwerp- en productietoepassingen. Auto<strong>CAD</strong><br />

is wereldwijd de absolute nummer één op het gebied van ontwerpsoftware. Naast het basispakket<br />

Auto<strong>CAD</strong> zijn er branche gerichte Auto<strong>CAD</strong> varianten. Voor de bouw en architectuur: Architectural<br />

Desktop en Revit, voor de landmeetsector: LandDevelopment Desktop en AutoDesk MAP, voor de<br />

visualisatie en animatie: AutoDesk VIZ en Studio Max en voor de werktuigbouw: Mechanical Desktop<br />

en Inventor.<br />

In 1999 wordt AutoDesk Inventor officieel gelanceerd. Met Inventor heeft Autodesk een 3D<br />

ontwerpsoftware op de markt gebracht die van de grond af aan helemaal opnieuw is opgebouwd.<br />

Autodesk profileert Inventor als zijnde het 3D-<strong>CAD</strong> pakket voor de toekomst. Het pakket is volledig<br />

nieuw opgebouwd en niet zoals bij Mechanical Desktop gebaseerd op Auto<strong>CAD</strong>. Autodesk geeft ook<br />

aan dat de nadruk voor de toekomst zal komen te liggen bij Inventor en dat de wijzigingen bij de<br />

toekomstige versies van Mechanical Desktop minimaal zullen zijn. Intussen is Inventor de meest<br />

verkochte 3D software ter wereld. [1] Naast Inventor zijn er nog meerdere 3D pakketen zoals<br />

SolidWorks, maar omdat TEC zich uitsluitend oriënteert op AutoDesk gerelateerde pakketen zal er in<br />

dit verslag niet verder op ingegaan worden. De laatste versie van Inventor die AutoDesk op de markt<br />

heeft gebracht is Inventor 9 Professional.<br />

2.1 2D naar 3D<br />

De invoering van <strong>CAD</strong> in de jaren ’80 liep over het algemeen vrij probleemloos. De gehanteerde<br />

ontwerpprocedures konden eenvoudig van de tekenplank worden omgezet naar het 2D <strong>CAD</strong>-systeem.<br />

Het probleem bleef echter dat er een vertaalslag gemaakt moest worden tussen het 3D product en de<br />

2D tekening. Via een technische tekening kan een ontwerper communiceren over een bepaald ontwerp.<br />

Mensen die echter geen technische kennis hebben en dan met name het tekeninglezen, zijn vaak niet in<br />

staat om een 2D tekening te lezen. Bij een 3D model is dit niet meer het geval omdat het 3D model<br />

eigenlijk een virtueel prototype van het ontwerp is.<br />

Dit is een van de voordelen van 3D. Hieronder staan nog enkele voordelen van 3D ontwerpen.<br />

• De communicatie door de gehele organisatie en met klanten verbeterd;<br />

• Visualisatie van een ontwerp wordt sterk verbeterd;<br />

• Maken van prototype is meestal overbodig;<br />

• Ontwerpfouten worden eerder ontdekt.<br />

Daarnaast kan met het 3D pakket Inventor parametrisch ontworpen worden.<br />

2.2 Parametrisch ontwerpen<br />

Onder parametrisch ontwerpen verstaat men het in een <strong>CAD</strong> model inbrengen van bijvoorbeeld de<br />

afmetingen in de vorm van parameters ofwel variabelen, die op elk tijdstip naar believen kunnen<br />

worden aangepast. [2] De ontwerper kan in het model via wiskundige methoden bepaalde<br />

samenhangen en criteria, zogenaamde constraints, vastleggen, waardoor men bepaalde parameters kan<br />

optimaliseren. In de volgende hoofdstukken waar de optimalisatietechnieken besproken worden zal<br />

hier dieper op ingegaan worden.<br />

Bij veel bedrijven zijn de producten afgeleiden van elkaar. Dit kan zowel in het klein, zoals<br />

bijvoorbeeld bij onderdelen, maar ook in het groot, zoals bij complete systemen, het geval zijn. Er<br />

worden daarbij zowel in het ontwerp, de productie, maar ook bij inkoop en werkvoorbereiding steeds<br />

dezelfde berekeningen gemaakt, maar met andere waarden. Deze herhaalde berekeningen vergen veel<br />

- Nijmegen - 9


- Optimalisatie in Inventor -<br />

tijd en worden daardoor vaak door ervaringsgegevens vervangen. De betrouwbaarheid van het ontwerp<br />

neemt daardoor af.<br />

Parametrisch ontwerpen structureert deze berekeningen zodat alleen de variabelen moeten worden<br />

gegeven waarna het systeem alle benodigde gegevens genereert. Hierbij kan een koppeling worden<br />

gelegd tussen de berekeningen, zodat slechts eenmaal de kernvariabelen moeten worden gegeven.<br />

Parametrisch ontwerpen versnelt het ontwerpproces en maakt het mogelijk om ook kleine, maar<br />

belangrijke, details te automatiseren. De betrouwbaarheid van het ontwerp neemt toe en de kostprijs<br />

van het product wordt verlaagd. Zo kan men met weinig moeite een ander alternatief evalueren zodat<br />

een kwalitatief beter product wordt verkregen.<br />

2.3 Parametrisch ontwerpen in Inventor<br />

Tevens is Inventor een zogenaamde ‘Feature based solid modeler’. Dit houdt in dat iedere ontwerpstap<br />

wordt onthouden en opgeslagen als intelligente geometrie: een feature. Het grote voordeel hiervan is<br />

dat te alle tijde het model gewijzigd kan worden. Het model blijft volledig parametrisch, zodat<br />

wijzigingen eenvoudig zijn door te voeren. De stappen tijdens het ontwerpen worden opgeslagen,<br />

zodat eenvoudig de chronologische opbouw van het model bekeken kan worden. Dat Inventor een<br />

solid modeler is, houdt in dat van het model alle geometrische informatie te alle tijde beschikbaar is.<br />

Dit is onder andere het gewicht, het volume, en de massatraagheidsmomenten. In Inventor kan deze<br />

informatie gevonden worden vanuit het pulldown menu ‘File’ onder het item ‘iProperties’.<br />

- Nijmegen - 10


- Optimalisatie in Inventor -<br />

2.4 Predictive modelling.<br />

Met predictive modelling bedoelt men het met behulp van computersimulaties en berekeningen<br />

vroegtijdig voorspellen en analyseren van het gedrag van een toekomstig ontwerp, of via een degelijke<br />

analyse een bestaande constructie verbeteren.<br />

Als tijdens het ontwerpen een fout in een onderdeel sluipt en deze tijdig, dus tijdens het ontwerpen,<br />

ontdekt wordt, dan zijn de kosten voor het corrigeren van de fout gering. Als dezelfde fout echter in<br />

een later stadium moet worden hersteld, zijn de kosten vele malen groter. Daarom stelt de technische<br />

industrie steeds hogere eisen aan de methoden die gebruikt worden om nieuwe producten te<br />

ontwerpen.<br />

In de laatst uitgekomen versie van Inventor, namelijk Inventor 9 Professional, zit een vereenvoudigde<br />

module van het Eindige Elementen pakket Ansys geïntegreerd. Met deze simulatietool kan een<br />

ontwerp doorgerekend worden op bijvoorbeeld sterkte of doorzakking. Met behulp van dit pakket kan<br />

dus de Eindige Elementen Methode (EEM) toegepast worden.<br />

2.4.1 Eindige Elementen Methode (EEM)<br />

De sterkte en stijfheid van een constructie kan vaak zeer goed geanalyseerd worden met behulp van de<br />

Eindige Elementen Methode. Hierdoor is de constructie beter te optimaliseren en ontstaan vaak nieuwe<br />

en betere ideeën over het te volgen ontwerp.<br />

Door een constructie of onderdeel hiervan op sterkte en stijfheid door te rekenen met behulp van de<br />

EEM ontstaat een verbeterd inzicht in de spanningen en de vervormingen, zodat een meer optimale en<br />

vaak lichtere constructie kan worden verkregen.<br />

Bij veel constructies kan een verhoging van de functionaliteit en een kostprijs verlaging worden<br />

verkregen indien men het gewicht kan reduceren. Vaak wordt door onzekerheid van de inwendige<br />

spanningen een hoge veiligheidsfactor gekozen hetgeen tot te zware constructies leidt. Doorrekening<br />

met behulp van de EEM geeft een goed inzicht in de spanningen en de vervormingen zodat een<br />

optimale constructie kan worden gekozen.<br />

- Nijmegen - 11


- Optimalisatie in Inventor -<br />

2.4.2 EEM in Inventor<br />

Doordat in Inventor 9 Professional een vereenvoudigde module van het pakket Ansys geïntegreerd is,<br />

is het pakket geschikt voor predictive modelling. Doordat deze tool in Inventor ingebouwd is heeft een<br />

constructeur enkele belangrijke voordelen tijdens het ontwerpen, hieronder worden ze genoemd:<br />

• Goed inzicht in de spanningen en vervormingen van de constructie, waardoor een hogere<br />

betrouwbaarheid wordt verkregen;<br />

• Massa- en dus kostprijsverlaging van het product;<br />

• Inzicht in de mogelijkheden tot alternatieve constructies, waardoor nieuwe product ideeën<br />

mogelijk zijn.<br />

2.5 Optimalisatie modelling<br />

Door een optimalisatietechniek in Inventor te integreren kan een ontwerper anders gaan ontwerpen. Bij<br />

predictive modelling maakt de constructeur een ontwerp en gaat daarna analyseren of het ontwerp<br />

voldoet aan bepaalde eigenschappen, bijvoorbeeld de spanningen in het ontwerp. Bij optimalisatie<br />

modelling wordt de eigenschap opgegeven en berekent de computer de vorm. Neem als voorbeeld het<br />

ontwerpen van een aandrijfas. Bij predictive modelling ontwerpt de constructeur een aandrijfas met<br />

een bepaalde dikte en gaat analyseren of de as voldoet. Bij optimalisatie modelling wordt juist de<br />

eigenschap opgegeven waaraan de as moet voldoen, bijvoorbeeld een bepaald torsie moment, en de<br />

computer zal dan de dikte van de as bepalen. Bij predictive modelling is de kans aanwezig dat de as<br />

voldoet aan de gestelde eisen, doordat een as ontworpen is die veel dikker is dan strikt noodzakelijk.<br />

Het is dus een goed ontwerp, maar niet het beste ontwerp. Bij optimalisatie modelling wordt meteen<br />

het beste ontwerp verkregen.<br />

2.6 Visual Basic for Applications<br />

Visual Basic (VB) bestaat als een alleenstaand programmeer programma. Het is een programmeertaal<br />

en een ontwikkelomgeving ontwikkeld door Microsoft. VB maakt het mogelijk om programma's te<br />

schrijven die draaien onder Windows. Het woord "Visual" slaat op het maken van de grafische<br />

gebruikers interface. In plaats van met talloze regels code te omschrijven waar een lijn op het scherm<br />

komt te staan, plaatst de VB-ontwikkelaar met de muis een lijn op de juiste plek. Het is te vergelijken<br />

met het maken van een afbeelding in Paint. De VB-editor genereert dan de code die nodig is om die<br />

lijn te tekenen. Het woord "Basic" refereert aan de programmeertaal BASIC.<br />

Onder de naam Visual Basic for Applications (VBA) is VB ingebouwd in meer dan 500 applicaties.<br />

Wanneer bijvoorbeeld Microsoft Word op een systeem is geïnstalleerd, dan is ook automatisch Visual<br />

Basic for Applications geïnstalleerd. In de pakketen van Autodesk zoals Auto<strong>CAD</strong> en Inventor zit<br />

VBA ook ingebouwd. Zo kunnen er programma’s geschreven worden binnen Inventor.<br />

2.7 Conclusie<br />

Omdat een onderdeel in Inventor volledig parametrisch is en wijzigingen dus eenvoudig aangebracht<br />

kunnen worden en omdat de geometrische informatie van een onderdeel, zoals bijvoorbeeld het<br />

gewicht, te alle tijde beschikbaar is, is het programma in theorie uitermate geschikt voor optimalisatie.<br />

Een parameter (x), bijvoorbeeld de lengte van een onderdeel, kan gekoppeld worden aan het gewicht<br />

(y). Door deze parameter te laten variëren kan of het maximale gewicht of het minimale gewicht<br />

gevonden worden. Daarnaast kan met behulp van VBA een routine aangemaakt worden zodat een<br />

programma in Inventor geschreven kan worden. Voordat de routine geschreven wordt moeten de<br />

verschillende optimalisatie technieken bekeken worden.<br />

- Nijmegen - 12


- Optimalisatie in Inventor -<br />

3. Optimalisatietechniek<br />

Voordat de verschillende technieken bekeken worden, is er een pakket van eisen opgesteld waar de<br />

uiteindelijke optimalisatietechniek binnen Inventor aan moet voldoen. Hieronder staan de voorwaarden<br />

waar de routine met de toegepaste optimalisatietechniek aan moet voldoen.<br />

3.1 Pakket van eisen<br />

• De routine moet op alle geometrische informatie die Inventor over het onderdeel geeft, dus het<br />

gewicht, het oppervlak, het volume en de massatraagheidsmomenten, toepasbaar zijn;<br />

• Daarnaast moeten deze geoptimaliseerd kunnen worden terwijl er rekening gehouden moet<br />

worden met de maximaal toelaatbare spanningen in het onderdeel;<br />

• Het programma moet stabiel zijn, zodat Inventor en/of de computer niet vastlopen;<br />

• Meerdere parameters moeten kunnen worden geoptimaliseerd;<br />

• Voor de verschillende parameters moet een bereik kunnen worden opgegeven, waarbinnen het<br />

optimum gevonden moet worden;<br />

• Het optimum moet zo snel mogelijk gevonden worden;<br />

• De routine moet universeel zijn, dus niet geschreven voor een specifiek onderdeel, maar<br />

toepasbaar op allerlei onderdelen.<br />

Om er achter te komen welke techniek voldoet aan bovengenoemde eisen, zijn er verschillende<br />

technieken toegepast. Voor het bestuderen van de verschillende optimalisatietechnieken is<br />

voornamelijk de literatuur van Daniels [3] gebruikt.<br />

3.2 Iteratieve zoekmethoden<br />

Vooral door de steeds groter wordende rekencapaciteit van de computer zijn er de laatste decennia veel<br />

optimalisatietechnieken ontwikkeld. Een optimalisatietechniek is een iteratieve zoekmethode. Iteratief<br />

betekent dat de verschillende uitkomsten van de berekeningen met elkaar vergeleken worden, waarna<br />

de berekeningen bijgestuurd worden om zo het uiteindelijke doel te benaderen. Bij iteratieve<br />

zoekmethoden kan onderscheid gemaakt worden tussen twee verschillende technieken.<br />

• Optimalisatie algoritmen die gebruik maken van analytische gradiëntinformatie;<br />

• Optimalisatie algoritmen die geen gradiëntinformatie gebruiken.<br />

Bij de optimalisatie algoritmen die geen gebruik maken van gradiëntinformatie wordt de zoekrichting<br />

van te voren vastgelegd. De halveringsmethode en de simplex methode zijn hier voorbeelden van. De<br />

halveringsmethode wordt besproken in hoofdstuk 4.<br />

- Nijmegen - 13


- Optimalisatie in Inventor -<br />

In de literatuur worden vooral de gradiëntmethoden besproken. Deze gradiëntmethoden maken gebruik<br />

van de eerste en soms zelfs de tweede afgeleiden. Als alleen eerste afgeleide informatie gebruikt wordt<br />

spreekt men van eerste-orde methoden. De methode van de steilste helling (Steepest-Descent) is hier<br />

een voorbeeld van. Een nog uitgebreidere methode is de Fletcher Powell methode, deze maakt gebruik<br />

van de tweede afgeleide en is dus een tweede-orde methode. De convergentiesnelheid van deze<br />

gradiëntmethoden zijn vele malen groter dan de optimalisatie technieken die hier geen gebruik van<br />

maken. Dit wil zeggen dat het minimum of maximum sneller gevonden wordt. Deze methode hebben<br />

dus minder berekeningen nodig om tot het eindresultaat te komen.<br />

Bij een optimalisatietechniek wordt er gezocht naar of het maximum of naar het minimum van een<br />

bepaalde functie. Op een maximum of minimum is de eerste afgeleide gelijk aan nul. In figuur 1 is het<br />

minimum van een bepaalde functie in het blauw weergegeven.<br />

Figuur 1: Functie met minimum.<br />

3.3 Optimalisatiemethoden integreren in VBA<br />

Nadat de verschillende technieken bekeken zijn is het zaak om deze in VBA te programmeren. In het<br />

boek van Daniels [3] staan naast de uitleg van de verschillende optimalisatietechnieken ook routines<br />

van de verschillende methoden. Het enige nadeel is dat deze routines in de programmeertaal Fortran<br />

geschreven zijn. Fortran is een programmeertaal die speciaal ontwikkeld is voor wetenschappelijke<br />

doeleinden. Het woord Fortran is een samentrekking van FORmula TRANslation. Fortran was een van<br />

de eerste programmeertalen. De eerste versie van de Fortranstandaard is in 1966 ontwikkeld. De taal<br />

verschilt echter niet veel van VBA, sommige notaties moesten worden aangepast, maar in het<br />

algemeen konden de routines zo in VBA geprogrammeerd worden.<br />

- Nijmegen - 14


- Optimalisatie in Inventor -<br />

4. Halveringsmethode<br />

Om te kijken of de optimalisatietechnieken daadwerkelijk in Inventor geïntegreerd kunnen worden is<br />

met de ‘eenvoudigere’ methoden begonnen. Dit om zogenaamde programmeerfouten (bugs) te kunnen<br />

ondervangen en om de werking van de verschillende technieken beter te doorgronden.<br />

4.1 Hoe werkt de halveringsmethode?<br />

Allereerst is de halveringsmethode toegepast. Aan de hand van een voorbeeld wordt deze techniek<br />

uitgelegd.<br />

Figuur 2: Halveringsmethode<br />

In het linker venster van figuur 2 is de dialoogbox te zien die verschijnt als de routine wordt gestart.<br />

Hoe een dergelijk formulier met verschillende controls aangemaakt wordt in VBA wordt besproken in<br />

hoofdstuk 7.<br />

De rechter afbeelding in figuur 2 is een onderdeel, dat in Inventor gemaakt is, met een gat erin. Dit gat<br />

is bemaat vanaf de onderkant van het onderdeel tot het center punt van het gat (d1). Deze maat is de<br />

variabele in deze optimalisatie. In het tekstvak ‘parameter’ moet de juiste variabele ingevuld worden<br />

(zie figuur 2). In dit geval dus d1. Deze parameter wordt in Inventor automatisch aangemaakt zo gauw<br />

een maat ingevoerd wordt. Daarnaast moet een bereik opgegeven worden waarbinnen het minimum<br />

gevonden moet worden. Deze twee tekstvakken, min. en max., moeten ingevuld worden in<br />

millimeters. Dit geldt overigens voor alle waarde die ingevuld moeten worden. Daarnaast kan de<br />

stapgrootte opgegeven worden. Dit is de grootte van de eerste stap. In figuur 3 wordt de eerste stap<br />

aangegeven met het getal 1. Deze stapgrootte kan aangepast worden. Naarmate het bereik groter is zal<br />

de stapgrootte ook vergroot kunnen worden. Zo zijn er minder stappen nodig om het optimum te<br />

vinden. Als laatste kan in de dialoogbox het desgewenst criterium aangevinkt worden waarop<br />

geoptimaliseerd moet worden. In dit geval dus het traagheidsmoment Ixx in kgmm 2 .<br />

d1<br />

- Nijmegen - 15


- Optimalisatie in Inventor -<br />

Zoals in hoofdstuk 2.3 besproken is Inventor een solid modeler, dit houdt in dat van het model alle<br />

geometrische informatie te allen tijde beschikbaar is. Dus kan op deze informatie geoptimaliseerd<br />

worden. Door een procedure binnen VBA te schrijven kan de massatraagheid om de x-as van de ene<br />

berekening vergeleken worden met de berekening van de volgende stap. Wanneer deze kleiner wordt,<br />

als tenminste naar een minimum gezocht wordt, kan dezelfde stap gemaakt worden en de<br />

massatraagheid weer berekend worden. Deze nieuwe waarde wordt met de voorgaande berekening<br />

vergeleken. Dit net zolang totdat de waarde gaat oplopen ten opzichte van de waarde van de vorige<br />

stap. In figuur 3 staat de grafiek weergegeven van de optimalisatie van het onderdeel uit figuur 2. De<br />

plaats van het gat in het onderdeel, oftewel de parameter d1, staat uitgezet op de x-as. De waarde van<br />

het massatraagheidsmoment Ixx staat uitgezet op de y-as.<br />

De methode begint dus door het gat op plaats x1 (zie figuur 3) te plaatsen. Parameter d1 krijgt nu dus<br />

de waarde x1. Hier wordt de eerste massatraagheid berekend en vervolgens wordt stap 1 gezet, met de<br />

stapgrootte die opgegeven kan worden. Het gat wordt nu op het punt x2 geplaatst en hier wordt<br />

opnieuw de massatraagheid berekend. Doordat de massatraagheid lager ligt wordt dezelfde stapgrootte<br />

aangehouden in dezelfde richting. Op x3 wordt wederom de massatraagheid berekend. Nu blijkt dat de<br />

massatraagheid weer oploopt tegenover x2, wordt de stapgrootte gehalveerd, vandaar de naam<br />

halveringsmethode, en wordt in de grafiek de andere kant opgelopen, zie figuur 3. Stap 3 en 4 lopen<br />

dus de andere kant op dan stap 1 en 2. Op punt x5 loopt de massatraagheid tegenover punt x4 weer op.<br />

De stap wordt wederom gehalveerd en loopt wederom de andere richting op. Dit gebeurt net zolang<br />

totdat de waarde van de massatraagheid weer oploopt. Dan wordt de stapgrootte weer gehalveerd en<br />

wordt weer de andere kant van de grafiek opgelopen. Deze methode kan oneindig doorgaan, dus moet<br />

er een stopcriterium aangemaakt worden. Dit stopcriterium is de minimale stapgrootte. Deze minimale<br />

stapgrootte kan in VBA aangepast worden. Als de minimale stapgrootte bereikt wordt is het verschil<br />

tussen de twee laatste massatraagheidswaarden zo klein dat het optimum nauwkeurig genoeg benaderd<br />

is.<br />

X1<br />

1<br />

X2/X5<br />

X6<br />

5<br />

4<br />

X7<br />

6<br />

7<br />

X4<br />

X3<br />

Figuur 3: Schematisch weergave halveringsmethode<br />

2<br />

3<br />

- Nijmegen - 16


- Optimalisatie in Inventor -<br />

Wanneer de routine klaar is en het optimum gevonden is worden de berekeningen getoond in een<br />

venster, zie figuur 4. In deze afbeelding is te zien dat naar een maximum gezocht is. Dit is te zien<br />

doordat bij 35 mm de waarde kleiner wordt. Na 35 wordt de stapgrootte gehalveerd en loopt deze<br />

terug. De stapgrootte begon met 5 en loopt nu dus met stappen van 2,5 terug. Totdat bij 27,5 de waarde<br />

van de berekening weer kleiner is. De stapgrootte wordt weer gehalveerd. Dit wordt net zolang gedaan<br />

totdat de minimale stapgrootte bereikt is.<br />

4.2 Conclusie<br />

Figuur 4: Berekeningen (x, y)<br />

Nadat deze methode in VBA uitgewerkt was bleek al gauw dat er enkele grote nadelen aan deze<br />

optimalisatietechniek zaten. Het grootste nadeel van de halveringsmethode is dat deze methode enkel<br />

geschikt is voor optimalisatie problemen waarbij slecht één parameter gevarieerd kan worden.<br />

Daarnaast zijn er relatief veel stappen nodig om tot het optimum te komen.<br />

Tevens zijn er in de dialoogbox (linker afbeelding in figuur 2) enkele gebreken aan het licht gekomen<br />

die in de uiteindelijke versie verbeterd moeten worden. Zo ontbreekt in dit formulier de functie om te<br />

kiezen of het minimum of het maximum gezocht moet worden. Daarnaast is het functioneler als het<br />

venster met de waarde (figuur 4) in het formulier verwerkt wordt zodat in één oogopslag zowel de<br />

beginwaarde als de resultaten bekeken kunnen worden.<br />

- Nijmegen - 17


- Optimalisatie in Inventor -<br />

5. Kwadratische interpolatie<br />

De tweede methode die bekeken is, is de optimalisatiemethode waarbij het minimum gevonden wordt<br />

met behulp van kwadratische interpolatie.<br />

5.1 Hoe werkt de kwadratische interpolatie methode?<br />

In de buurt van een minimum of maximum kan de functie waarna geoptimaliseerd wordt benaderd<br />

worden als een parabool. Omdat bij de halveringsmethode relatief veel stappen nodig zijn voordat het<br />

minimum van een functie gevonden wordt, is er gekeken naar een methode waarvan de<br />

convergentiesnelheid een stuk hoger ligt. Met kwadratische interpolatie zou dit het geval moeten zijn.<br />

Met kwadratische interpolatie kan het minimum van een functie op de volgende manier gevonden<br />

worden:<br />

Figuur 5: Schematische weergave kwadratische interpolatie<br />

Op een willekeurige kwadratische grafiek (zie figuur 5) worden drie punten gekozen. Zo ontstaan er<br />

drie vergelijkingen namelijk:<br />

y<br />

y<br />

y<br />

1<br />

2<br />

3<br />

= ax<br />

2<br />

1<br />

= ax<br />

= ax<br />

2<br />

2<br />

2<br />

3<br />

+<br />

+<br />

+<br />

bx<br />

bx<br />

bx<br />

1<br />

2<br />

3<br />

+<br />

+<br />

+<br />

c<br />

c<br />

c<br />

Y1<br />

Y2<br />

X1 X2 X3<br />

Doordat er drie punten in de grafiek gekozen worden ontstaan er drie vergelijkingen met drie<br />

onbekenden. Deze drie onbekenden kunnen nu uitgerekend worden. In bijlage 2 staat de berekening<br />

uitgewerkt. Zo gauw deze uitgerekend zijn is de gehele vergelijking bekend. Om nu het minimum van<br />

deze vergelijking te vinden moet de eerste afgeleide van de functie gelijk gesteld worden aan nul.<br />

Y3<br />

- Nijmegen - 18


- Optimalisatie in Inventor -<br />

Nadat de gebreken van de eerste optimalisatietechniek, de halveringmethode, aan het licht waren<br />

gekomen is er voor de kwadratische interpolatie methode een andere dialoogbox opgezet. Zo is er een<br />

zogenaamde checkbox aangemaakt, hiermee kan aangevinkt worden of het minimum bepaald moet<br />

worden (zie figuur 6). Wordt de checkbox niet aangevinkt dan wordt automatisch het maximum<br />

gezocht. De parameter die gevarieerd gaat worden hoeft niet meer zelf ingevuld te worden door de<br />

gebruiker, maar kan uit een lijst geselecteerd worden.<br />

Daarnaast is het venster waar de berekeningen getoond worden geïntegreerd in het formulier.<br />

Figuur 6: Interface kwadratische interpolatie<br />

In de dialoogbox dat verschijnt bij de halveringsmethode (zie figuur 2) is alleen een startknop<br />

geprogrammeerd. Zijn echter per ongeluk de verkeerde waarde ingegeven dan moet er gewacht<br />

worden totdat het gehele programma doorlopen is. Om dit te voorkomen is in de nieuwe dialoogbox<br />

een knop ‘Afbreken’ aangebracht, zodat het programma tussentijds afgebroken kan worden.<br />

Naast het gewicht, het volume, het oppervlak en de massatraagheidsmomenten is er een knop<br />

aangemaakt waarmee geoptimaliseerd kan worden terwijl er naar de spanningen in het onderdeel<br />

wordt gekeken. Zoals gezegd is in Inventor een module van Ansys geïntegreerd. Hiermee kunnen de<br />

spanningen in een onderdeel berekend worden. Deze kunnen net als het gewicht hoger of lager worden<br />

bij een bepaalde lengte of vorm.<br />

Daarnaast is er een knop ‘Sluiten’ aangebracht, zodat de dialoogbox afgesloten kan worden. Naast de<br />

knop ‘Sluiten’ komt een getal te staan dat het aantal berekeningen weergeeft. Dit is gedaan om een<br />

beter beeld te krijgen over de snelheid van de verschillende optimalisatietechnieken.<br />

- Nijmegen - 19


- Optimalisatie in Inventor -<br />

5.2 Convergentiesnelheid<br />

Aan de hand van een voorbeeld wordt duidelijk welke methode, de halveringsmethode of de<br />

kwadratische interpolatie, de grootste convergentiesnelheid heeft. Er wordt uitgegaan van de functie<br />

f(x) = sin x. Het maximum van de sinus moet gevonden worden tussen 0 en p. Het maximum van een<br />

sinus tussen 0 en p is 1. In tabel 1 staan de waarde bij de verschillende stappen die beide methode<br />

nodig hebben.<br />

Halveringsmethode Kwadratische interpolatie<br />

x y=sinx x y=sinx<br />

25 0,4226 25 0,4226<br />

50 0,766 50 0,766<br />

75 0,9659 75 0,9659<br />

100 0,9848 100 0,9848<br />

125 0,8191 125 0,8191<br />

112,5 0,9238 Hieruit volgt: y = 1,019<br />

100 0,9848<br />

87,5 0,999<br />

75 0,9659<br />

81,25 0,9883<br />

87,5 0,999<br />

93,75 0,9978<br />

90,625 0,9999<br />

Tabel 1: Stappen per optimalisatiemethode<br />

De halveringsmethode heeft twaalf stappen nodig om tot het maximum te komen. Bij kwadratische<br />

interpolatie loopt de waarde bij de vierde stap weer terug. Na dit punt pakt de kwadratische interpolatie<br />

de laatste drie punten en berekent het maximum.<br />

x = 75<br />

x = 100<br />

x = 125<br />

1<br />

2<br />

y1<br />

= 0,<br />

9659<br />

y 2 = 0,<br />

9848<br />

y3<br />

= 0,<br />

8191<br />

Door deze waarde in bijlage 2 in te vullen, kan het maximum van de functie bepaald worden. Door de<br />

verschillende waarde in te vullen kan y bepaald worden. Na de berekening blijkt dat y=1,019. Hieruit<br />

blijkt dat een computer het maximum met de kwadratische interpolatie veel sneller berekend dan met<br />

de halveringsmethode. De convergentiesnelheid van de kwadratische interpolatie is dus daadwerkelijk<br />

groter.<br />

5.3 Conclusie<br />

Tegenover de halveringtechniek ligt de convergentiesnelheid van de kwadratische interpolatie<br />

methode dus veel hoger. Een groot nadeel dat echter nog steeds niet verholpen is, is dat zowel de<br />

halveringtechniek als de kwadratische interpolatie toepasbaar zijn voor maar één variabele. Als er<br />

meerdere variabelen geoptimaliseerd moeten worden is een meer uitgebreide optimalisatietechniek<br />

nodig, zoals bijvoorbeeld de Steepest-Descent methode. Deze wordt in het volgende hoofdstuk<br />

besproken.<br />

3<br />

- Nijmegen - 20


- Optimalisatie in Inventor -<br />

6. Steepest-Descent methode<br />

Doordat de halveringsmethode en de kwadratische interpolatie beperkt zijn tot het variëren van één<br />

variabele is er verder gekeken naar technieken waarbij wel meerdere parameters geoptimaliseerd<br />

kunnen worden. Zo gauw er meerdere parameters geoptimaliseerd moeten worden is er geen sprake<br />

meer van een 2D grafiek, maar gaat het om een 3 dimensionaal probleem. De eerste<br />

optimalisatietechniek, waarbij meerdere parameters geoptimaliseerd worden, die in het boek van<br />

Daniels [3] besproken wordt is de Steepest-Descent methode. De Steepest-Descent methode zoekt naar<br />

het minimum van een functie door middel van de gradiënt.<br />

Figuur 7: Schematische weergave heuvellandschap<br />

6.1 Hoe werkt de Steepest-Descent methode?<br />

Om de Steepest-Descent te begrijpen is het handig de functie die geminimaliseerd moet worden voor<br />

te stellen als een heuvellandschap, waarbij de dalen het minimum voorstellen en de pieken het<br />

maximum. In figuur 7 is een heuvel schematisch weergegeven met behulp van zogenaamde<br />

hoogtelijnen. De bedoeling is om het diepste dal te vinden zonder in een lokaal minimum te blijven<br />

hangen. Bij de Steepest-Descent methode is het zo, dat vanuit een bepaalde startpositie heuvelafwaarts<br />

(in de richting tegengesteld aan de gradiënt) wordt gezocht. Allereerst wordt bekeken waar de heuvel<br />

het hardst naar beneden loopt. Er wordt een stap heuvelafwaarts gemaakt die zo groot is dat bij een<br />

nog grotere stap weer heuvelopwaarts zou worden gegaan. Op dit lokale minimum wordt weer de<br />

grootste helling berekent. De procedure bestaat dus eigenlijk uit twee afzonderlijke subprocedures,<br />

namelijk een voor de bepaling van de steilste richting (Steepest-Descent) en de ander voor het zoeken<br />

langs deze richting naar het optimum. Dit laatste gebeurt door middel van kwadratische interpolatie.<br />

Deze iteratieve methoden kan wiskundig geschreven worden in de vorm:<br />

k+<br />

1 k<br />

x = x + α ⋅<br />

S<br />

k<br />

De vector S geeft de richting aan waarlangs gezocht wordt en de grootheid α bepaald de afstand<br />

waarover de richting S moet worden gevolgd. Het superscript k geeft het iteratie nummer weer.<br />

Het proces wordt in figuur 8 getoond. Het proces begint bij startpositie x0. Vervolgens wordt de<br />

richting S bepaald. Dit is dus de richting waar de helling het steilst loopt. Daarna wordt de afstand<br />

bepaald met behulp van de kwadratische interpolatie. Op x1 wordt wederom de steilste helling bepaald.<br />

In de figuur is te zien dat een bepaald bereik opgegeven is. Het bereik waarbinnen een optimum<br />

gevonden moet worden is omlijnd door de schuine arcering. Doordat de richting S1 buiten dit bereikt<br />

dreigt te gaan, wordt op punt x2 opnieuw de steilste helling gezocht. Dit net zolang totdat het minimum<br />

bereikt is.<br />

- Nijmegen - 21


- Optimalisatie in Inventor -<br />

Figuur 8: Schematische weergave Steepest-Descent<br />

Een nadeel van deze zoekmethode is dat de optimalisatie stopt zo gauw een lokaal optimum bereikt<br />

wordt (zie figuur 8). Daarom is het verstandig om een optimalisatie vaker uit te voeren en steeds met<br />

andere startwaarde. Zo is de kans groter dat het echte minimum gevonden wordt.<br />

In figuur 8 is te zien dat tijdens de tweede optimalisatie wel het globale optimum gevonden wordt,<br />

terwijl tijdens de eerste optimalisatie een lokaal optimum gevonden wordt.<br />

6.2 Conclusie<br />

De Steepest-Descent methode zoekt dus eerst na de steilste helling op een bepaald punt en gaat vanaf<br />

dat punt naar een minimum zoeken. Een 3-dimensionaal probleem wordt dus vereenvoudigd tot een 2dimensionaal<br />

grafiek en vanaf dan wordt wederom de kwadratische interpolatie toegepast.<br />

De Steepest-Descent methode voldoet aan vrijwel alle eisen die in hoofdstuk 3.1 opgesteld zijn.<br />

Doordat de methode voldoet aan de eisen en doordat de tijd het niet toelaat is deze methode verder<br />

uitgewerkt en zijn de meer specifieke methode zoals de Fletcher Powell methode niet verder<br />

onderzocht.<br />

- Nijmegen - 22


- Optimalisatie in Inventor -<br />

7. Dialoogbox<br />

Nadat gekeken is naar de verschillende optimalisatietechnieken is dus uiteindelijk gekozen voor de<br />

Steepest-Descent methode in combinatie met kwadratische interpolatie.<br />

Tijdens het bestuderen van de verschillende optimalisatietechnieken is de interface van de dialoogbox,<br />

die verschijnt wanneer de optimalisatie routine gestart wordt, al reeds besproken. Omdat alle<br />

instellingen voor de optimalisatie in deze dialoogbox plaatsvinden, is de dialoogbox een belangrijk<br />

aspect binnen dit project. Daarom zal er in dit hoofdstuk dieper op ingegaan worden.<br />

7.1 Actiegestuurd programmeren<br />

Voordat de uiteindelijke routine in VBA geschreven kan worden, moet een definitieve interface<br />

worden ontworpen. Een interface moet logisch opgebouwd zijn en moet vooral overzichtelijk zijn. In<br />

VBA kan een programma op twee manieren geprogrammeerd worden, namelijk door middel van:<br />

• Procedurele programmering;<br />

• Actiegestuurde programmering.<br />

Bij procedurele programmering wordt een programma in een vaste volgorde doorlopen. Bij<br />

actiegestuurde programmering doorloopt het programma verschillende delen van de code afhankelijk<br />

van de actie van de gebruiker. Deze programma’s laten een scherm zien met daarop een aantal controls<br />

zoals knoppen of iconen. Afhankelijk van de knop die ingedrukt wordt zal een ander deel van het<br />

programma doorlopen worden. Actiegestuurde programma’s zijn veel effectiever dan procedurele<br />

programma’s. Het venster in figuur 9 (zie volgende pagina) is hier een voorbeeld van. De<br />

verschillende controls kunnen met VBA eenvoudig geplaatst worden en door daarna op de<br />

desbetreffende control te dubbelklikken kan de code geschreven worden die bij de desbetreffende actie<br />

hoort. In figuur 9 staan rechtsonder bijvoorbeeld de knoppen Start en Sluiten. Onder de knop Start<br />

moet de code voor de optimalisatietechniek geschreven worden terwijl bij de knop Sluiten juist een<br />

heel andere code staat, namelijk die voor het sluiten van het venster.<br />

7.2 Opbouw dialoogbox<br />

Het uiteindelijke venster dat verschijnt zo gauw de optimalisatie routine aangestuurd wordt is te zien in<br />

figuur 9. Door de logische opbouw van de dialoogbox is het voor iedere ontwerper direct te gebruiken<br />

zonder dat er extra hulp nodig is om de optimalisatie correct te laten verlopen. Zo moet allereerst<br />

gekozen worden of er een minimum of een maximum gezocht moet worden. Daar direct onder moet<br />

worden aangegeven op welk criterium geoptimaliseerd moet worden. Daaronder kan aangevinkt<br />

worden of er rekening gehouden wordt met spanningen, die in Inventor op het desbetreffende<br />

onderdeel zijn aangebracht. Daarbij moet aangegeven worden met welke veiligheidsfactor rekening<br />

gehouden moet worden.<br />

Linksonder kan aangeven worden met welke en met hoeveel parameters geoptimaliseerd moet worden.<br />

Daarbij kan per parameter het bereik opgegeven worden waarbinnen de optimalisatie plaats moet<br />

vinden.<br />

- Nijmegen - 23


- Optimalisatie in Inventor -<br />

Figuur 9: Optimalisatie dialoogbox<br />

Aan de rechterkant van het venster verschijnen de verschillende waarden zodat een goed overzicht<br />

ontstaat over de optimalisatie. De eerste twee waarden zijn respectievelijk de eerste en de tweede<br />

parameter, in dit geval d13 en d16. De derde waarde is de waarde van het criterium dat<br />

geoptimaliseerd wordt. In dit geval is dit dus het gewicht. Het gewicht is in dit geval van 0,36 kg<br />

geoptimaliseerd naar 0,19 kg. Bij deze waarden heeft het onderdeel dus haar minimale gewicht terwijl<br />

de maximale spanning in het onderdeel niet overschreden wordt. Daaronder staat aangegeven hoeveel<br />

berekeningen in totaal nodig zijn geweest (24) en wat het uiteindelijke gewicht van het onderdeel<br />

(0,194136) is geworden. Daaronder de start knop, een knop om de routine af te breken en een knop om<br />

het venster te sluiten.<br />

- Nijmegen - 24


- Optimalisatie in Inventor -<br />

8. Optimalisatieroutine<br />

In bijlage 7 staat de uiteindelijke routine die geprogrammeerd is in VBA. In dit verslag zal niet verder<br />

ingegaan worden op de technische programmering binnen VBA. Wel zullen nog enkele zogenaamde<br />

bugs besproken worden die tijdens het testen van de routine naar voren zijn gekomen.<br />

8.1 Programmeerfouten<br />

Nadat de routine geschreven was, in VBA, moest de optimalisatie gestest worden. Tijdens het<br />

bestuderen van de verschillende optimalisatietechnieken zijn al verschillende problemen opgelost.<br />

Hieronder worden ze besproken.<br />

8.1.1 Randvoorwaarde<br />

Tijdens het testen zijn verschillende aspecten naar voren gekomen waardoor de routine niet tot het<br />

eindresultaat kwam. Het eerste probleem was dat als voor de ene parameter een optimum gevonden<br />

was de gehele optimalisatie stopte, terwijl een andere parameter nog niet goed geoptimaliseerd was.<br />

De optimalisatie stopte zo gauw één parameter dicht bij de randvoorwaarde kwam. Het bereik dat van<br />

te voren ingesteld kon worden werd dan bereikt. Door in de routine enkele regels toe te voegen, kan er<br />

voor gezorgd worden dat wanneer één parameter bij een randvoorwaarde terecht komt, langs deze rand<br />

gelopen wordt om zo te kijken of het resultaat beter wordt. De routine stopt op deze manier niet en het<br />

optimum wordt alsnog gevonden.<br />

8.1.2 Boetefunctie<br />

Omdat de parameters soms buiten hun bereik doorliepen moest er een zogenaamde boetefunctie<br />

geschreven worden. Deze boetefunctie zorgt ervoor dat zo gauw een parameter buiten zijn bereik komt<br />

er een boete op de waarde y komt. Y is de waarde waarop geoptimaliseerd wordt, bijvoorbeeld het<br />

gewicht. Als naar het minimum gezocht wordt, wordt de boete bij y opgeteld en als naar een maximum<br />

gezocht wordt, dan wordt de boete van y afgehaald. Doordat deze waarde nu dus enorm toeneemt of<br />

afneemt, door toedoen van de boetefunctie, zal het gebied als een grootte piek of als een groot dal<br />

aangezien worden. Door middel van de Steepest-Descent methode zal nu dus de andere kant op<br />

gezocht worden. Door middel van de boetefunctie zullen de parameters precies naar het opgegeven<br />

bereik lopen. In dit geval wil dat zeggen dat de optimale waarde binnen het gewenste bereik wordt,<br />

terwijl de meeste optimale waarde misschien wel net buiten het bereik valt.<br />

- Nijmegen - 25


- Optimalisatie in Inventor -<br />

8.1.3 Overflow<br />

Op, tot nu toe, onverklaarbare wijze lopen de waarde van de massatraagheidsmomenten soms zo<br />

gigantisch vlug op dat een zogenaamde overflow ontstaat. Een overflow ontstaat wanneer een waarde<br />

zo groot wordt dat de computer deze waarde niet meer goed kan weergeven.<br />

Als twee binaire bytes opgeteld worden, zoals bij de volgende 8-bits getallen;<br />

10110010<br />

10100100 +<br />

(1)01010110<br />

dan valt op dat het resultaat niet past in een 8 bits byte. (Het meest linker bit dat tussen haken staat) De<br />

twee linker enen die opgeteld worden kunnen niet meer weergegeven worden. Het eerste bit geeft aan<br />

of een getal positief of negatief is. Bij een overflow worden dus totaal verkeerde waarde opgegeven.<br />

De optimalisatie loopt zo helemaal mis. In het meest gunstige geval stopt de optimalisatie en in het<br />

meest ongunstige geval crasht de computer.<br />

8.1.4 Verkeerde eenheid<br />

Omdat Inventor intern met centimeters werkt en de instellingen in de dialoogbox in millimeters<br />

opgegeven worden, moesten de waarde in de routine gedeeld worden door tien om zo met de juiste<br />

eenheden te werken.<br />

De waarde van het oppervlak wordt in Inventor op de volgende manier weergegeven:<br />

1,477E+004 mm^2. Dit is dus 14770 mm 2 . In het venster van de dialoogbox waar de berekeningen<br />

worden weergegeven staat 147,7329 mm 2 . Om de waarde goed weer te geven zou in de routine het<br />

oppervlak vermenigvuldigd kunnen worden met 100, om zo toch de goede waarde weer te geven.<br />

Nadat de routine echter aangepast was bleek dat de waardes enorm opliepen totdat een overflow error<br />

ontstond. De waarde voor het oppervlak die nu weergegeven worden moeten dus nog vermenigvuldigd<br />

worden met 100. Voor het volume geldt hetzelfde, deze waarde moeten echter vermenigvuldigd<br />

worden met 1000 om de juiste uitkomst te verkrijgen.<br />

8.2 Aansturen routine<br />

In Inventor kunnen iconen aangemaakt worden waarmee de routine geactiveerd kan worden. Door met<br />

de muis op het desbetreffende icoon te klikken verschijnt de dialoogbox (figuur 9). Aan het icoon zit<br />

een zogenaamde macro gekoppeld die verwijst naar de routine die in VBA geprogrammeerd is.<br />

- Nijmegen - 26


- Optimalisatie in Inventor -<br />

9. Optimalisatie voorbeelden<br />

Doordat de optimalisatie mogelijkheden binnen Inventor in de cursussen getoond moeten gaan worden<br />

zijn er voorbeelden bedacht waarbij duidelijk de voordelen van het optimaliseren naar voren komen.<br />

Door middel van de volgende voorbeelden kan het principe van optimalisatie gedemonstreerd worden.<br />

9.1 Drijfstang<br />

Om een goed beeld te krijgen van de werking van de optimalisatie routine is als voorbeeld een<br />

vereenvoudigde drijfstang geschetst. In figuur 10 is de drijfstang te zien. De twee parameters die<br />

geoptimaliseerd gaan worden zijn als eerste de dikte van de verticale buitenwand (d13) en als tweede<br />

de dikte van de horizontale binnenplaat (d16).<br />

d13<br />

Figuur 10: Drijfstang<br />

9.1.1 Gewicht optimaliseren<br />

De drijfstang kan op verschillende manieren geoptimaliseerd worden. In bijlage 3 staan afbeeldingen<br />

van Inventor waarbij de drijfstang is geoptimaliseerd aan de hand van het gewicht.<br />

In de eerste afbeelding in bijlage 3 is het minimum aan gewicht gezocht. Het minimale gewicht wordt<br />

verkregen zo gauw de variabele parameters zo klein mogelijk zijn.<br />

In de tweede afbeelding is het maximale gewicht van de drijfstang gevonden. Dit wordt bereikt zo<br />

gauw de twee parameters maximaal zijn. Doordat er een maximum aangegeven is tot waar de twee<br />

parameters mogen gaan, ligt bij dit maximum van de twee parameters het grootste gewicht van het<br />

onderdeel. In de afbeelding van bijlage 3 lopen de parameters precies naar deze waarde, in dit geval<br />

respectievelijk 10 en 20 millimeter.<br />

d16<br />

- Nijmegen - 27


- Optimalisatie in Inventor -<br />

9.1.2 Oppervlak optimaliseren<br />

In theorie zou het minimale oppervlak van de drijfstang bereikt worden als en de wanddikte (d13) zo<br />

klein mogelijk is, in dit geval dus tot het minimale bereik en dat is 1 mm, en de dikte van de<br />

binnenplaat (d16) even dik zou worden als de totale extrusiehoogte van de drijfstang. De drijfstang is<br />

dan aan de boven- en aan de onderkant vlak. Hierdoor is het oppervlak minimaal. In de eerste<br />

afbeelding in bijlage 4 is te zien dat de routine deze optimalisatie goed uitvoert. De eerste parameter<br />

loopt naar het minimum en de tweede parameter loopt naar de 18. De extrusiehoogte van de drijfstang<br />

is ook 18 mm. In het rechter venster is te zien dat de waarde, op de afronding na, naar de goede waarde<br />

zijn gelopen. Naast de 0,8565 mm en 18,0335 mm van de parameters staat het oppervlak weergegeven.<br />

In de tweede afbeelding in bijlage 4 is te zien dat als het maximale oppervlak gezocht wordt de<br />

wanddikte (d13) juist zo groot mogelijk is en dat de binnenplaat (d16) juist zo klein mogelijk wordt.<br />

Zo ontstaat het grootste oppervlak.<br />

9.1.3 Gewicht optimaliseren rekening houdend met spanning<br />

Door de steeds strengere milieumaatregelen die aan een verbrandingsmotor gesteld worden wat<br />

brandstofgebruik betreft is het zaak om een motor zo licht mogelijk te ontwerpen. Het gewicht van een<br />

motor heeft rechtstreeks uitwerking op de verbruiksreductie van de motor. De drijfstang is een<br />

onderdeel van de motor en door deze zo licht mogelijk te ontwerpen kan de totale motor verbeterd<br />

worden. De drijfstang verbindt de zuiger met de krukas en zet de drukkracht van de zuiger om in<br />

draaikracht. Er werken dus flinke krachten op een drijfstang en dus moet er tijdens het ontwerp<br />

rekening gehouden met deze krachten.<br />

In bijlage 5 is de drijfstang geoptimaliseerd op gewicht terwijl er rekening gehouden werd met de<br />

krachten die op de drijfstang werken. Het gewicht van de drijfstang moet zo laag mogelijk worden,<br />

terwijl de maximale spanning in de drijfstang niet overschreven mag worden.<br />

De waarde van de parameters lopen nu niet helemaal terug naar het minimum. Het gewicht moet zo<br />

laag mogelijk worden, maar de maximale spanning mag niet overschreden worden. De parameters d13<br />

en d16 lopen respectievelijk naar 2,2 en 4,2 mm. Het gewicht van de drijfstang bedraagt nu 0,19 kg.<br />

- Nijmegen - 28


- Optimalisatie in Inventor -<br />

9.2 Balk<br />

Een tweede voorbeeld is die van een ingeklemde balk. Hiermee kan bewezen worden dat de<br />

optimalisatie goed werkt. Een ingeklemde balk is aan één kant vast bevestigd en aan de andere kant<br />

vrij. De balk heeft een rechthoekige doorsnede en wordt aan het uiteinde belast door een kracht. (zie<br />

figuur 11)<br />

Figuur 11: Ingeklemde balk<br />

Om de werking van de optimalisatieroutine te controleren is een balk getekend in Inventor. Door aan<br />

de ene kant van de balk een kracht te plaatsen en door de andere kant volledig vast te zetten wordt een<br />

ingeklemde balk gecreëerd. De balk wordt zo geschetst dat de breedte van de balk op drie plaatsen<br />

opgegeven kan worden, namelijk aan beide uiteinde en in het midden van de balk.<br />

Figuur 12: Spanningen in eenzijdig ingeklemde balk<br />

In figuur 12 worden de spanningen in de balk schematisch weergegeven. De doorgetrokken lijnen<br />

geven de hoofdtrekspanningen aan en de gestippelde lijnen geven de hoofddrukspanningen weer.<br />

Zoals te zien is in de figuur, zijn de spanningen aan het uiteinde niet zo groot als middenin de balk. Als<br />

de balk nu geoptimaliseerd zou worden op gewicht, dan zou er theoretisch dus materiaal op de<br />

hoekpunten weggehaald kunnen worden, zonder dat de maximale spanning overschreden wordt.<br />

F<br />

- Nijmegen - 29


- Optimalisatie in Inventor -<br />

De balk zou er dus theoretisch uit moeten komen zien zoals in figuur 13.<br />

Figuur 13: Ingeklemde balk na optimalisatie<br />

In bijlage 6 is de balk te zien nadat deze geoptimaliseerd is. Door de instellingen in de dialoogbox,<br />

wordt er gezocht naar het minimale gewicht, terwijl de spanningen in de balk niet overschreden mogen<br />

worden.<br />

Zoals voorspeld wordt op de hoekpunten materiaal weggehaald. Er ontstaat als het ware een driehoek.<br />

In bijlage 6 is aan de rode kleur te zien dat in het midden van de balk, waar de tweede parameter<br />

aangepast kan worden, de spanning het hoogst oploopt. Dit komt waarschijnlijk doordat de balk<br />

geschetst is met rechte lijnen. In het midden komen de twee lijnstukken samen en lopen niet vloeiend<br />

over. Hierdoor hopen de spanningen in dit punt op. Beter is het om de balk te schetsten met een<br />

vloeiende kromme. Dit kan bereikt worden door in plaats van een rechte lijn een boog te tekenen. Door<br />

twee bogen op beide uiteinde te bematen en in het midden van de boog een maat te plaatsen zou<br />

hetzelfde resultaat bereikt kunnen worden, alleen loopt een boog wel vloeiend door.<br />

F<br />

- Nijmegen - 30


- Optimalisatie in Inventor -<br />

Conclusie<br />

Doordat Inventor een parametrisch programma is en omdat alle geometrische informatie van een<br />

onderdeel beschikbaar is, is het pakket uitermate geschikt om een routine in te bouwen die een<br />

onderdeel kan optimaliseren. Het onderzoek heeft aangetoond dat onderdeel optimalisatie in Inventor<br />

goed toepasbaar is. Deze optimalisatie is toepasbaar op alle informatie die Inventor geeft over een<br />

bepaald onderdeel. Daarnaast kan er rekening gehouden worden met de spanningen in het onderdeel<br />

doordat in de nieuwste versie van Inventor een module van de eindige elementen methode, Ansys, is<br />

ingebouwd<br />

Er zijn verschillende optimalisatietechnieken die in Inventor geïntegreerd kunnen worden. Bij de<br />

eerste technieken die onderzocht zijn bleek echter steeds dat de bepaalde methode niet aan de<br />

verwachtingen kon voldoen. Nadat de verschillende optimalisatietechnieken, waaronder de<br />

halveringsmethode en de kwadratische interpolatie bestudeerd zijn is duidelijk geworden dat de<br />

Steepest-Descent methode het best toepasbaar is binnen Inventor. Deze methode voldoet aan alle eisen<br />

die vooraf opgesteld zijn. Hierbij moet wel worden vastgesteld dat de andere technieken zoals de<br />

Fletcher Powell methode niet verder zijn onderzocht.<br />

De doelstelling van het onderzoek is verwezenlijkt doordat er enkele voorbeelden zijn bedacht die<br />

getoond kunnen worden in de cursussen. Door middel van een drijfstang en een eenzijdig ingeklemde<br />

balk kunnen de verschillende manieren van optimaliseren gedemonstreerd worden tijdens de Inventor<br />

cursussen.<br />

Aanbevelingen<br />

In een eventueel vervolgonderzoek kunnen allereerst de meer specifieke optimalisatietechnieken,<br />

waaronder de Fletcher Powell methode onderzocht worden. De belangrijkste vraagstelling in een<br />

dergelijk onderzoek is of een andere methode een meerwaarde heeft tegenover de Steepest-Descent<br />

methode.<br />

De routine tot nu toe werkt naar behoren, maar deze kan nog verbeterd worden. In hoofdstuk 8 worden<br />

enkele problemen besproken die tot op heden niet opgelost zijn. De routine moet aangepast worden<br />

zodat een overflow niet meer voorkomt en de waarde van het oppervlak en het volume goed<br />

weergegeven worden.<br />

Daarnaast kunnen er nog meer praktische voorbeelden bedacht en uitgewerkt worden waardoor de<br />

mogelijkheden van optimalisatie binnen Inventor nog duidelijker worden.<br />

- Nijmegen - 31


- Optimalisatie in Inventor -<br />

Literatuurlijst<br />

Boeken<br />

• Daniels, R.W., An Introduction to Numerical Methods and Optimalization Techniques;<br />

Elsevier North Holland inc., New York [3]<br />

ISBN 0-444-00263-4<br />

• A. Wismer, Introduction ton nonlinear optimaization Elsevier<br />

North Holland inc., New York ISBN 0-444-<br />

00234-0<br />

• Hibbeler, Russel C., Sterkteleer voor technici Academic<br />

Service, Schoonhoven ISBN 90-395-<br />

0537-3<br />

• Boeklagen, Ir. R., Inventor 9<br />

TEC/<strong>CAD</strong><strong>College</strong>, Nijmegen<br />

ISBN 90-72487-43-5<br />

• Boeklagen, Ir. R., Auto<strong>CAD</strong> 2005<br />

TEC/<strong>CAD</strong><strong>College</strong>, Nijmegen ISBN<br />

90-72487-41-9<br />

Overige documentatie<br />

• Optimalisatie van de steel van de Heupprothese<br />

Boeklagen, Ir. R.<br />

• CIM, Computer Integrated Manufacturing [2]<br />

Dictaat nummer 338184<br />

Internet<br />

• www.cadcollege.nl<br />

• www.autodesk.nl [1]<br />

• www.inventorusers.nl<br />

- Nijmegen - 32


- Optimalisatie in Inventor -<br />

Bijlage 1: Artikel in <strong>CAD</strong>Magazine<br />

RUBRIEK: <strong>IN</strong>TERVIEW<br />

(KOP) TEC/<strong>CAD</strong> <strong>College</strong> zoekt naar nieuwe mogelijkheden<br />

(SUB) Uitwisseling brengt leerlingen telkens een stapje verder<br />

Door: Lambert-Jan Koops<br />

(<strong>IN</strong>TRO) TEC/<strong>CAD</strong> <strong>College</strong> bereikte laatst een mijlpaal met de 175e inschrijving voor de HBOopleiding<br />

van het bedrijf. Een mooie aanleiding om eens bij te praten met trainingsdocent Ronald<br />

Boeklagen over trainingen, de toekomst van 2D en de zoektocht naar nieuwe mogelijkheden.<br />

Er zijn twee soorten HBO-opleidingen in Nederland. TEC/<strong>CAD</strong>-college valt, net als de andere<br />

Autodesk Authorized Training Centers (ATC’s), onder het niet-bekostigd onderwijs en dat betekent<br />

dat de overheid niet meebetaalt aan de kosten van het onderwijs. Degenen die onderwijs willen volgen<br />

betalen hiervoor dus ook het volle pond. Ondanks dat gaat het niet slecht met de inschrijvingen bij het<br />

<strong>CAD</strong>-college. Boeklagen: “In vergelijking met de andere ATC’s gaat het niet slecht. We hebben wel<br />

een dip gehad, maar die trekt nu weer aan. We hebben ook niet echt last van conjunctuurgevoeligheid.<br />

Als het slechter gaat met de economie levert dat voor ons geen echte problemen op. Want als er binnen<br />

een bedrijf minder te doen is worden werknemers vaak op cursus gestuurd. En als dat geld op is zijn er<br />

vaak juist weer mensen zonder baan die zich willen laten omscholen of hun niveau willen aanpassen<br />

aan de eisen van de arbeidsmarkt.”<br />

Automatiseringsgolven<br />

De HBO-opleiding bij TEC trok in eerste instantie vooral zogenaamde system managers. Dit waren<br />

beheerders van <strong>CAD</strong>-stations die wel op HBO-niveau werkten maar nog niet in het bezit waren van<br />

een officieel diploma. De opleiding werd dan ook vooral gevolgd om hun positie duidelijker te maken<br />

binnen een bedrijf. Tegenwoordig zijn de cursisten vaker mensen die met een nieuwe versie van<br />

Auto<strong>CAD</strong> gaan werken of die overstappen van 2D naar 3D. Deze laatste groep is opmerkelijk groot<br />

volgens Boeklagen. “Sinds de jaren tachtig zijn er drie golven geweest. De eerste was het <strong>CAD</strong>tekenen<br />

op de UNIX-stations. De tweede was de opkomst van Auto<strong>CAD</strong> en de derde is het 3Dmodelleren<br />

in Inventor en concurrerende pakketten als SolidWorks en SolidEdge. Het is mij<br />

opgevallen dat de omslag van 2D naar 3D minstens twee keer zo snel gaat als de overstap van de<br />

tekenplank naar tekensoftware. Momenteel komt dan ook zestig procent van onze cursisten voor de<br />

HBO-opleiding Inventor en de rest voor Auto<strong>CAD</strong>.”<br />

Ondanks de grote belangstelling voor 3D op dit moment gelooft Boeklagen niet dat 2D ooit zal<br />

verdwijnen. “Momenteel is 2D het grootst en dat zal voorlopig niet veranderen. Dat komt vooral<br />

omdat ik denk dat de bouw geen behoefte heeft aan 3D. Daar zijn veel te veel kleine bedrijfjes die<br />

kleine en simpele tekeningen moeten maken en dat gewoon met Auto<strong>CAD</strong> willen doen.”<br />

3D-Standaard<br />

Bij de overstap naar 3D is het een gegeven dat bedrijven vrijelijk kunnen kiezen uit willekeurige<br />

programma’s. Er ontstaat dus geen nieuwe standaard zoals Auto<strong>CAD</strong> dat was in de 2D-wereld met een<br />

marktaandeel van boven de tachtig procent. Dat is iets wat Boeklagen graag anders had gezien. “Het is<br />

natuurlijk makkelijker om een standaardpakket te hebben dat bijna iedereen gebruikt. Aan de andere<br />

kant worden veel van de 3D-pakketten gebruikt in de metaalsector en daar worden maar weinig<br />

tekeningen uitgewisseld. Er is daarom vanuit die bedrijven weinig noodzaak voor een standaard. Voor<br />

wat betreft de opleidingen zouden we er natuurlijk voordeel aan hebben gehad als Inventor de nieuwe<br />

standaard zou worden. Aan de andere kant leren we hier mensen niet alleen maar met een programma<br />

omgaan, we leren ze vooral in 3D te denken. “Hoewel ik de andere 3D-pakketten niet ken, denk ik dan<br />

ook dat het toch wel mogelijk moet zijn om over te stappen van bijvoorbeeld Inventor naar<br />

- Nijmegen - I


- Optimalisatie in Inventor -<br />

SolidWorks. De manier waarop je naar iets kijkt is belangrijker dan dat je weet waar de knopjes<br />

zitten.”<br />

Internettoets<br />

Naast de opleiding verzorgt Boeklagen ook ondersteunende activiteiten. Zo is er op de .com-site van<br />

TEC/<strong>CAD</strong>-<strong>College</strong> een toets te vinden voor zowel Auto<strong>CAD</strong> als Inventor. Studenten kunnen hier hun<br />

kennis toetsen van de pakketten en aan de hand van de score bepalen of ze op schema liggen. De test is<br />

echter ook voor niet-studenten toegankelijk. Boeklagen: “Ja, we hebben hem nu toch gemaakt, dus het<br />

maakt ons niet uit of er ook anderen zijn die er gebruik van maken. Ik weet dat Cadac bijvoorbeeld<br />

ook cursisten onze toetsen laat maken. Dat mag. Ik vind het alleen maar leuk als iets wat we hebben<br />

gebouwd ook veel wordt gebruikt. Bovendien kan ik in een overzicht precies zien wie wanneer met<br />

welk resultaat de test heeft gemaakt. De Auto<strong>CAD</strong>-toets is nu sinds augustus beschikbaar en er is 407<br />

keer op ingelogd met een gemiddeld cijfer van een 5,6. Dat is leuk om te weten.”<br />

Het viel Boeklagen overigens nog niet mee om de vragen voor de toetsen scherp te omlijnen. “Het is<br />

heel apart om acties in een programma terug te brengen naar een vraag waarvoor vier multiple choiceantwoorden<br />

te bedenken zijn. Dat vergt toch een bepaalde benaderingswijze die ik niet gewend was.”<br />

Contact<br />

Een andere ondersteunende activiteit via Internet is het informatienetwerk dat Boeklagen daar heeft<br />

aangemaakt. Hier kunnen studenten en oud-leerlingen hun eigen pagina bijhouden met daarop hun<br />

scripties, uitgedachte routines en andere relevante zaken. Een alternatief voor het contact dat normale<br />

leerlingen op school hebben. “Bij een full-time opleiding is er veel meer contact tussen de leerlingen<br />

en dat missen wij natuurlijk wel. Hier kan een leerling echter ook informatie aan een ander vragen,<br />

verslagen bekijken en zo voortborduren op de reeds uitgevoerde projecten. Op die manier blijft het<br />

natuurlijk ook interessant. Anders zou het alleen maar een herhalingsoefening blijven waarbij<br />

studenten telkens weer hetzelfde wiel uitvinden.”<br />

Optimalisatie<br />

Dat Boeklagen echt op zoek is naar de nieuwe mogelijkheden blijkt ook uit een van de opdrachten die<br />

momenteel bij TEC wordt uitgevoerd. Paul Arts richt zich op het ontwikkelen van een<br />

optimalisatieroutine voor Inventor. Boeklagen legt enthousiast uit waarom dit handig is. “Veel<br />

ontwerpers hebben geleerd een onderdeel te ontwerpen om vervolgens te controleren of het een goed<br />

ontwerp is. Dit kan nu standaard in Inventor Professional dankzij de geïntegreerde eindige<br />

elementensoftware van Ansys. Als het ontwerp voldoet dan neemt de ontwerper daar vaak genoegen<br />

mee, het is immers een goed ontwerp. Het is echter niet het beste ontwerp. Het leuke van de routine<br />

die Paul nu schrijft is dat deze automatisch op zoek gaat naar een optimaal ontwerp. Dit kan het<br />

ontwerp zijn met het minste gewicht of het kleinste volume of oppervlakte. Het mooie is bovendien dat<br />

we hem nu weliswaar gebruiken voor een drijfstang maar dat de routine in principe geschikt is voor<br />

alle modellen.”<br />

Toekomst<br />

Boeklagen is niet bang dat er in de toekomst geen nieuwe ideeën voor afstudeerprojecten zullen<br />

ontstaan. “Er is nog zo veel te bedenken. Bovendien: alle simpele dingen zijn al gedaan en dus<br />

verkennen we telkens weer iets nieuws. Dat maakt het zo leuk,” aldus de docent.<br />

Een nieuw onderdeel wat hij zelf graag zou willen verkennen is de wereld van het 3D-printen.<br />

Boeklagen straalt bijna als het onderwerp ter sprake komen.“Dit is echt iets wat ik graag wil en het<br />

komt steeds dichter bij. De prijzen van de machines zijn behoorlijk gedaald in de afgelopen jaren.<br />

Tegenwoordig zijn er al modellen beschikbaar voor zo’n 20 duizend euro. Misschien dat we nog een<br />

tijdje wachten tot de prijs nog wat gedaald is, maar er moet zeker zo’n ding in het klaslokaal komen te<br />

staan. Ik kijk er nu al naar uit om er mee te kunnen experimenteren.”<br />

- Nijmegen - II


- Optimalisatie in Inventor -<br />

www.cadcollege.nl<br />

www.cadcollege.com<br />

- Nijmegen - III


- Nijmegen - IV<br />

- Optimalisatie in Inventor -<br />

Bijlage 2: Berekening kwadratische interpolatie<br />

c<br />

bx<br />

ax<br />

y<br />

c<br />

bx<br />

ax<br />

y<br />

c<br />

bx<br />

ax<br />

y<br />

+<br />

+<br />

=<br />

+<br />

+<br />

=<br />

+<br />

+<br />

=<br />

3<br />

2<br />

3<br />

3<br />

2<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

1<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

3<br />

2<br />

2<br />

3<br />

2<br />

2<br />

3<br />

2<br />

2<br />

1<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

x<br />

x<br />

B<br />

x<br />

x<br />

A<br />

y<br />

y<br />

x<br />

x<br />

B<br />

x<br />

x<br />

A<br />

y<br />

y<br />

−<br />

⋅<br />

+<br />

−<br />

⋅<br />

=<br />

−<br />

−<br />

⋅<br />

+<br />

−<br />

⋅<br />

=<br />

−<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

2<br />

1<br />

2<br />

3<br />

2<br />

2<br />

3<br />

2<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

3<br />

2<br />

3<br />

2<br />

2<br />

1<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

y<br />

y<br />

x<br />

x<br />

y<br />

y<br />

A<br />

−<br />

⋅<br />

−<br />

−<br />

−<br />

⋅<br />

−<br />

−<br />

⋅<br />

−<br />

−<br />

−<br />

⋅<br />

−<br />

=<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

2<br />

1<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

x<br />

x<br />

x<br />

x<br />

A<br />

y<br />

y<br />

B<br />

−<br />

−<br />

⋅<br />

−<br />

−<br />

=<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

2<br />

1<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

2<br />

3<br />

2<br />

2<br />

3<br />

2<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

3<br />

2<br />

3<br />

2<br />

2<br />

1<br />

2<br />

1<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

y<br />

y<br />

x<br />

x<br />

y<br />

y<br />

y<br />

y<br />

B<br />

−<br />

−<br />

⋅<br />

−<br />

⋅<br />

−<br />

−<br />

−<br />

⋅<br />

−<br />

−<br />

⋅<br />

−<br />

−<br />

−<br />

⋅<br />

−<br />

−<br />

−<br />

=<br />

Minimum of maximum bepalen:<br />

a<br />

b<br />

x<br />

b<br />

ax<br />

c<br />

bx<br />

ax<br />

y<br />

2<br />

2<br />

0<br />

1<br />

−<br />

=<br />

+<br />

=<br />

+<br />

+<br />

=<br />

))<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

((<br />

)<br />

(<br />

)<br />

(<br />

)<br />

(<br />

)<br />

( 2<br />

1<br />

2<br />

3<br />

2<br />

2<br />

3<br />

2<br />

2<br />

2<br />

2<br />

1<br />

2<br />

1<br />

3<br />

2<br />

3<br />

2<br />

2<br />

1<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

A<br />

x<br />

x<br />

y<br />

y<br />

x<br />

x<br />

y<br />

y −<br />

⋅<br />

−<br />

−<br />

−<br />

⋅<br />

−<br />

⋅<br />

=<br />

−<br />

⋅<br />

−<br />

−<br />

−<br />

⋅<br />


- Optimalisatie in Inventor -<br />

Bijlage 3: Drijfstang optimum gewicht<br />

- Nijmegen - V


- Optimalisatie in Inventor -<br />

Bijlage 4: Drijfstang optimum oppervlak<br />

- Nijmegen - VI


- Optimalisatie in Inventor -<br />

Bijlage 5: Drijfstang optimum gewicht/spanning<br />

- Nijmegen - VII


- Optimalisatie in Inventor -<br />

Bijlage 6: Balk optimum gewicht/spanning<br />

- Nijmegen - VIII


- Optimalisatie in Inventor -<br />

Bijlage 7: VBA Routine<br />

Dim oPartDoc As Inventor.PartDocument<br />

Dim oMassProps As MassProperties<br />

Dim oParams As Parameters<br />

Dim oModelParams As ModelParameters<br />

Dim StopOptimalisatie As Boolean<br />

Dim n As Byte<br />

Dim ParameterSpanning As Parameter<br />

Dim RekSpanning As Double<br />

Dim BreukSpanning As Double<br />

Dim Veiligheidsfactor As Double<br />

Private Sub CmdAfbreken_Click()<br />

Stop<br />

End Sub<br />

Private Sub CmdSluiten_Click()<br />

Me.Hide<br />

Unload Me<br />

End Sub<br />

Private Sub txtMinimaleWaarde_Change()<br />

If VBA.IsNumeric(Me.txtMinimaleWaarde.Text) Then<br />

Me.txtMinimaleWaarde.BackColor = vbWhite<br />

Else<br />

Me.txtMinimaleWaarde.BackColor = vbYellow<br />

End If<br />

Me.txtMinimaleWaarde.Text = VBA.Replace(Me.txtMinimaleWaarde.Text, ".", ",")<br />

End Sub<br />

Private Sub cmdVervers_Click()<br />

Dim X(1 To 10) As Double<br />

X(1) = Me.X1 / 10<br />

If n >= 2 Then X(2) = Me.X2 / 10<br />

If n >= 3 Then X(3) = Me.X3 / 10<br />

y = Error(X)<br />

Call VulResultatenlijst(X, y)<br />

End Sub<br />

Private Sub Parameter1_Change()<br />

tdl = oModelParams.Item(Me.Parameter1.Text).Value<br />

X1 = tdl * 10<br />

End Sub<br />

Private Sub PArameter2_Change()<br />

tdl = oModelParams.Item(Me.PArameter2.Text).Value<br />

X2 = tdl * 10<br />

End Sub<br />

Private Sub PArameter3_Change()<br />

tdl = oModelParams.Item(Me.Parameter3.Text).Value<br />

X3 = tdl * 10<br />

End Sub<br />

Private Sub SpinButton1_SpinUp()<br />

If n > 1 Then n = n - 1<br />

MaakControlsZichtbaar<br />

End Sub<br />

Private Sub SpinButton1_SpinDown()<br />

If n < 3 Then n = n + 1<br />

MaakControlsZichtbaar<br />

End Sub<br />

- Nijmegen - IX


- Optimalisatie in Inventor -<br />

Sub MaakControlsZichtbaar()<br />

For Each Control In Me.Controls<br />

nummer = Right(Control.Name, 1)<br />

If (Not IsNumeric(nummer)) Or nummer 1 Then Veiligheidsfactor = Veiligheidsfactor - 0.5<br />

Toonveiligheidsfactor<br />

End Sub<br />

Private Sub SpinButtonVeiligheidsfactor_SpinUp()<br />

Veiligheidsfactor = Veiligheidsfactor + 0.5<br />

Toonveiligheidsfactor<br />

End Sub<br />

Sub Toonveiligheidsfactor()<br />

Me.lblVeiligheidsfactor = "Veiligheidsfactor: " & Format(Veiligheidsfactor, "#.0")<br />

End Sub<br />

Private Sub UserForm_Initialize()<br />

'oPartDoc is het actieve onderdeel<br />

'oModelParams zijn de parameters<br />

'oMassProps zijn de iProperties van het actieve document<br />

Set oPartDoc = ThisApplication.ActiveDocument<br />

Set oParams = oPartDoc.ComponentDefinition.Parameters<br />

Set oModelParams = oParams.ModelParameters<br />

Set oMassProps = oPartDoc.ComponentDefinition.MassProperties<br />

Dim Parameter As Parameter<br />

For Each Parameter In oModelParams<br />

Me.Parameter1.AddItem (Parameter.Name)<br />

Me.PArameter2.AddItem (Parameter.Name)<br />

Me.Parameter3.AddItem (Parameter.Name)<br />

Next Parameter<br />

Me.Parameter1.ListIndex = 0<br />

Me.PArameter2.ListIndex = 1<br />

Me.Parameter3.ListIndex = 2<br />

Me.StapGrootte = 1 / 10<br />

n = 1<br />

Veiligheidsfactor = 2<br />

Toonveiligheidsfactor<br />

MaakControlsZichtbaar<br />

End Sub<br />

Private Sub Start_Click()<br />

Me.Aantalberekeningen = 0<br />

Dim a1 As Double<br />

Dim a2 As Double<br />

Dim startwaarde As Double<br />

Dim eindwaarde As Double<br />

Dim Parameter As String<br />

'Maak de lijst met resultaten schoon<br />

Me.Resultaat.Clear<br />

- Nijmegen - X


- Optimalisatie in Inventor -<br />

Dim E(1 To 10) As Double<br />

Dim Grad(1 To 10) As Double<br />

Dim S(1 To 10) As Double<br />

Dim X(1 To 10) As Double<br />

Dim X1(1 To 10) As Double<br />

Dim X2(1 To 10) As Double<br />

X(1) = Me.X1 / 10<br />

If n >= 2 Then X(2) = Me.X2 / 10<br />

If n >= 3 Then X(3) = Me.X3 / 10<br />

e0 = Error(X)<br />

Call VulResultatenlijst(X, e0)<br />

'Vind stijlste helling<br />

regel_22:<br />

For i = 1 To n<br />

delta = 0.01 * X(i)<br />

If (Abs(X(i)) < 0.001) Then delta = 0.001<br />

xsave = X(i)<br />

X(i) = X(i) + delta<br />

Grad(i) = (Error(X) - e0) / delta<br />

X(i) = xsave<br />

Next i<br />

' volgende regels toegevoegd door Ronald om randvoorwaarden goed door te voeren<br />

' Het komt erop neer dat er op 1 mm afstand van de rand<br />

' langs de rand gelopen wordt, met een kleine afwijking om te kijken of het beter<br />

wordt.<br />

'zonder deze toevoeging zou de optimalisatie kunnen stoppen langs de rand.<br />

' De eerste controle is of ze beide langs de rand lopen. Dan kun je beter stoppen,<br />

want er is dan een singulier punt.<br />

If n = 2 And Abs(X(1) - Me.xmin1 / 10) < 0.05 And Abs(X(2) - Me.Xmin2 / 10) < 0.05<br />

Then Exit Sub<br />

If n = 3 And Abs(X(1) - Me.xmin1 / 10) < 0.05 And Abs(X(2) - Me.Xmin2 / 10) < 0.05<br />

And Abs(X(3) - Me.Xmin3 / 10) < 0.05 Then Exit Sub<br />

If n = 2 And Abs(X(1) - Me.Xmax1 / 10) < 0.05 And Abs(X(2) - Me.Xmax2 / 10) < 0.05<br />

Then Exit Sub<br />

If n = 3 And Abs(X(1) - Me.Xmax1 / 10) < 0.05 And Abs(X(2) - Me.Xmax2 / 10) < 0.05<br />

And Abs(X(3) - Me.XMax3 / 10) < 0.05 Then Exit Sub<br />

If Abs(X(1) - Me.xmin1 / 10) < 0.05 Then Grad(1) = Grad(1) / 100000<br />

If n > 1 And Abs(X(2) - Me.Xmin2 / 10) < 0.05 Then Grad(2) = Grad(2) / 100000<br />

If n > 2 And Abs(X(3) - Me.Xmin3 / 10) < 0.05 Then Grad(3) = Grad(3) / 100000<br />

If Abs(X(1) - Me.Xmax1 / 10) < 0.05 Then Grad(1) = Grad(1) / 100000<br />

If n > 1 And Abs(X(2) - Me.Xmax2 / 10) < 0.05 Then Grad(2) = Grad(2) / 100000<br />

If n > 2 And Abs(X(3) - Me.XMax3 / 10) < 0.05 Then Grad(3) = Grad(3) / 100000<br />

' tot hier toegevoegd<br />

- Nijmegen - XI


- Optimalisatie in Inventor -<br />

'Vind richting S<br />

For i = 1 To n<br />

S(i) = -Grad(i)<br />

Next i<br />

'Kwadratische interpolatie<br />

'Vind alpha1<br />

a1 = Me.StapGrootte<br />

regel_53:<br />

For i = 1 To n<br />

X1(i) = X(i) + a1 * S(i)<br />

Next i<br />

e1 = Error(X1)<br />

If (e1 < e0) Then GoTo regel_63<br />

a1 = a1 / 2<br />

If a1 < Me.StapGrootte / 10 Then Exit Sub<br />

GoTo regel_53<br />

'Vind alpha2<br />

regel_63:<br />

a2 = a1<br />

regel_64:<br />

a2 = 2 * a2<br />

For i = 1 To n<br />

X2(i) = X(i) + a2 * S(i)<br />

Next i<br />

e2 = Error(X2)<br />

If (e2 > e1) Then GoTo regel_74<br />

a1 = a2<br />

e1 = e2<br />

GoTo regel_64<br />

'Vind alpha<br />

regel_74:<br />

a = 0.5 * ((a1 * a1 - a2 * a2) * e0 + a2 * a2 * e1 - a1 * a1 * e2) / ((a1 - a2) * e0<br />

+ a2 * e1 - a1 * e2)<br />

'Vind nieuwe x<br />

For i = 1 To n<br />

X(i) = X(i) + a * S(i)<br />

Next i<br />

e0 = Error(X)<br />

If (e0 < e1) Then GoTo regel_95<br />

For i = 1 To n<br />

X(i) = X(i) + (a1 - a) * S(i)<br />

Next i<br />

e0 = Error(X)<br />

regel_95:<br />

Call VulResultatenlijst(X, e0)<br />

GoTo regel_22<br />

End Sub<br />

Sub VulResultatenlijst(X, y)<br />

AantalCijfers = "#.0000"<br />

Call Me.Resultaat.AddItem(Format(X(1) * 10, AantalCijfers) & ", ")<br />

- Nijmegen - XII


- Optimalisatie in Inventor -<br />

For i = 2 To n<br />

Me.Resultaat.List(Me.Resultaat.ListCount - 1, i - 1) = Format(X(i) * 10,<br />

AantalCijfers) & ": "<br />

Next i<br />

Me.Resultaat.List(Me.Resultaat.ListCount - 1, n) = Format(Abs(y), AantalCijfers)<br />

End Sub<br />

Function Error(X) As Double<br />

'Voordat de berekening wordt doorgevoerd worden de parameters gecontroleerd<br />

'of deze niet het maximum of minimum overschrijden, want tenslotte kan Inventor dan<br />

vastlopen.<br />

If n > 0 Then<br />

Select Case True<br />

Case X(1) < Me.xmin1 / 10<br />

oModelParams.Item(Me.Parameter1.Value).Value = xmin1 / 10<br />

Case X(1) > Me.Xmax1 / 10<br />

oModelParams.Item(Me.Parameter1.Value).Value = Xmax1 / 10<br />

Case Else<br />

oModelParams.Item(Me.Parameter1.Value).Value = X(1)<br />

End Select<br />

End If<br />

If n > 1 Then<br />

Select Case True<br />

Case X(2) < Me.Xmin2 / 10<br />

oModelParams.Item(Me.PArameter2.Value).Value = Xmin2 / 10<br />

Case X(2) > Me.Xmax2 / 10<br />

oModelParams.Item(Me.PArameter2.Value).Value = Xmax2 / 10<br />

Case Else<br />

oModelParams.Item(Me.PArameter2.Value).Value = X(2)<br />

End Select<br />

End If<br />

If n > 2 Then<br />

Select Case True<br />

Case X(3) < Me.Xmin3 / 10<br />

oModelParams.Item(Me.Parameter3.Value).Value = Xmin3 / 10<br />

Case X(3) > Me.XMax3 / 10<br />

oModelParams.Item(Me.Parameter3.Value).Value = XMax3 / 10<br />

Case Else<br />

oModelParams.Item(Me.Parameter3.Value).Value = X(3)<br />

End Select<br />

End If<br />

'Update het model<br />

oPartDoc.Update<br />

VBA.DoEvents<br />

'Bereken het resultaat<br />

If Me.ZoekMinimum Then<br />

boete = 1<br />

Else<br />

boete = -1<br />

End If<br />

Error = waarde<br />

If X(1) < Me.xmin1 / 10 Then Error1 = waarde * (boete * (X(1) - Me.xmin1 / 10) ^ 2)<br />

If X(1) > Me.Xmax1 / 10 Then Error1 = waarde * (boete * (X(1) - Me.Xmax1 / 10) ^ 2)<br />

- Nijmegen - XIII


- Optimalisatie in Inventor -<br />

If n >= 2 Then<br />

If X(2) < Me.Xmin2 / 10 Then Error2 = waarde * (boete * (X(2) - Me.Xmin2 / 10) ^<br />

2)<br />

If X(2) > Me.Xmax2 / 10 Then Error2 = waarde * (boete * (X(2) - Me.Xmax2 / 10) ^<br />

2)<br />

End If<br />

If n >= 3 Then<br />

If X(3) < Me.Xmin3 / 10 Then Error3 = waarde * (boete * (X(3) - Me.Xmin3 / 10) ^<br />

2)<br />

If X(3) > Me.XMax3 / 10 Then Error3 = waarde * (boete * (X(3) - Me.XMax3 / 10) ^<br />

2)<br />

End If<br />

Error = waarde + Error1 + Error2 + Error3<br />

If Me.Spanning Then<br />

Call BerekenVonMisesStress<br />

On Error Resume Next<br />

MaximaleSpanning = ParameterSpanning.Value<br />

If Err Then<br />

Call VindVonMisisParameter<br />

MaximaleSpanning = ParameterSpanning.Value<br />

End If<br />

If Veiligheidsfactor * MaximaleSpanning > RekSpanning Then<br />

Error = Error * (1 + (Veiligheidsfactor * MaximaleSpanning - RekSpanning) *<br />

(Veiligheidsfactor * MaximaleSpanning - RekSpanning) / 10000000000#)<br />

Me.lblVeiligheidsfactor.ForeColor = vbRed<br />

Else<br />

Me.lblVeiligheidsfactor.ForeColor = vbBlack<br />

End If<br />

End If<br />

If Me.ZoekMinimum Then<br />

Error = Error<br />

Else<br />

Error = -Error<br />

End If<br />

Me.X1 = Format(X(1) * 10, "#.####")<br />

Me.X2 = Format(X(2) * 10, "#.####")<br />

Me.X3 = Format(X(3) * 10, "#.####")<br />

Me.Aantalberekeningen = Me.Aantalberekeningen + 1<br />

Me.LblError = Format(Error, "#.######")<br />

End Function<br />

Function waarde()<br />

Dim Ixx As Double: Dim Iyy As Double: Dim Izz As Double<br />

Dim Ixy As Double: Dim Iyz As Double: Dim Ixz As Double<br />

Select Case True<br />

Case Me.Volume<br />

waarde = oMassProps.Volume<br />

Case Me.Oppervlak<br />

waarde = oMassProps.Area<br />

Case Me.Gewicht<br />

waarde = oMassProps.Mass<br />

Case Me.Ixx<br />

Call oMassProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz)<br />

waarde = Ixx * 100000<br />

- Nijmegen - XIV


- Optimalisatie in Inventor -<br />

Case Me.Iyy<br />

Call oMassProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz)<br />

waarde = Iyy * 100000<br />

Case Me.Ixy<br />

Call oMassProps.XYZMomentsOfInertia(Ixx, Iyy, Izz, Ixy, Iyz, Ixz)<br />

waarde = Ixy * 100000<br />

End Select<br />

End Function<br />

Function VindVonMisisParameter() As Double<br />

Set oPartDoc = ThisApplication.ActiveDocument<br />

Set oParams = oPartDoc.ComponentDefinition.Parameters<br />

Set ouserParams = oParams.UserParameters<br />

Dim Parameter As Parameter<br />

For Each Parameter In ouserParams<br />

If Parameter.Comment = "Max Equivalent Stress" Then Set ParameterSpanning =<br />

Parameter<br />

Next Parameter<br />

Dim oMaterial As Material<br />

Set oMaterial = oPartDoc.Materials.Item(1)<br />

Dim oCompDef As ComponentDefinition<br />

Set oCompDef = oPartDoc.ComponentDefinition<br />

Dim Material As Material<br />

Set Materiaal = oCompDef.Material<br />

RekSpanning = 10000 * Materiaal.YieldStrength<br />

BreukSpanning = 10000 * Materiaal.UltimateTensileStrength<br />

End Function<br />

Sub BerekenVonMisesStress()<br />

Dim oControlDefs As ControlDefinitions<br />

Set oControlDefs = ThisApplication.CommandManager.ControlDefinitions<br />

ThisApplication.CommandManager.ControlDefinitions.Item("AIPStress_Update").Execute<br />

'Om de een of andere reden gaat het programma wel eens te snel verder<br />

'daarom wacht het programma 30 seconden tussen de berekeningen door.<br />

tijd = VBA.Timer<br />

Do<br />

VBA.DoEvents<br />

Loop Until VBA.Timer - tijd < 30<br />

Set oControlDefs = Nothing<br />

End Sub<br />

Private Sub X2_Change()<br />

X2.Text = Replace(X2.Text, ".", ",")<br />

End Sub<br />

Private Sub X1_Change()<br />

X1.Text = Replace(X1.Text, ".", ",")<br />

End Sub<br />

Private Sub X3_Change()<br />

X3.Text = Replace(X3.Text, ".", ",")<br />

End Sub<br />

Private Sub Xmax1_Change()<br />

End Sub<br />

- Nijmegen - XV

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!