OPTIMALISATIE IN INVENTOR - CAD College
OPTIMALISATIE IN INVENTOR - CAD College
OPTIMALISATIE IN INVENTOR - CAD College
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