Software: CAD - Tutorial - Optimierung - Lokale Suche: Unterschied zwischen den Versionen

Aus OptiYummy
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 27: Zeile 27:
* Für die Optimierung wählen wir das '''Hooke-Jeeves-Verfahren''' mit '''Startschrittweite=Standard'''.  
* Für die Optimierung wählen wir das '''Hooke-Jeeves-Verfahren''' mit '''Startschrittweite=Standard'''.  
* Wir erhöhen die Zahl der '''Optimierungsschritte=1000''' (mittels manuellem Stop können wir jederzeit die Berechnung anhalten).
* Wir erhöhen die Zahl der '''Optimierungsschritte=1000''' (mittels manuellem Stop können wir jederzeit die Berechnung anhalten).
* Für alle Nennwerte und Bewertungsgrößen öffnen wir ein Nennwert-Diagramm, indem wir mit dem Cursor die Größe einfach in den Grafikbereich ziehen.
* Für alle Nennwerte und Bewertungsgrößen öffnen wir ein Nennwert-Diagramm, indem wir mit dem Cursor jede Größe einzeln in den Grafikbereich ziehen.


'''''Wichtig:'''''<br>Bevor wir die Berechnung starten, überprüfen wir jedesmal im Windows-Taskmanager, ob der Prozess '''Inventor.exe''' bereits aktiv ist. Wenn ja, so beenden wir diesen Prozess, weil ansonsten zusätzlich eine weiterer gestartet wird und der Hauptspeicher irgendwann überläuft!
'''''Wichtig:'''''<br>Bevor wir die Berechnung starten, überprüfen wir jedesmal im Windows-Taskmanager, ob der Prozess '''Inventor.exe''' bereits aktiv ist. Wenn ja, so beenden wir diesen Prozess, weil ansonsten zusätzlich eine weiterer gestartet wird und der Hauptspeicher irgendwann überläuft!
Zeile 35: Zeile 35:
* Um eine möglichst große Resonanzfrequenz zu erreichen, werden alle Abmessungen zielstrebig verkleinert!  
* Um eine möglichst große Resonanzfrequenz zu erreichen, werden alle Abmessungen zielstrebig verkleinert!  
* Das Optimum liegt in der Nähe von Null und wird dann nur durch die maximal mögliche Belastung begrenzt.
* Das Optimum liegt in der Nähe von Null und wird dann nur durch die maximal mögliche Belastung begrenzt.
* Da haben wir eine wichtige Anforderung vergessen: Eine maximal sinnvolle Durchbiegung '''s=0,1''' (in 100%) bezogen auf die Feder-Länge!
* Da haben wir eine wichtige Anforderung vergessen: Eine maximal sinnvolle Durchbiegung, z.B. '''s=0,1''' (in 100%) bezogen auf die Feder-Länge!


=== Problem-Reduktion durch Erkenntnis ===
=== Problem-Reduktion durch Erkenntnis ===


Man könnte nun eine zusätzliche '''Restriktionsgröße "Biegung"''' im Workflow ergänzen, deren oberer Grenzwert die maximal zulässige prozentuale Durchbiegung beschreibt:
Man könnte nun eine zusätzliche '''Restriktionsgröße "Biegung"''' im Workflow ergänzen, deren oberer Grenzwert die maximal zulässige prozentuale Durchbiegung beschreibt:
* Darauf verzichten wir jedoch, weil im Ergebnis die Länge der Biegefeder sich exakt auf das maximal zulässige Verhältnis einstellen würde. Dies ist dadurch bedingt, dass die Biegefeder wegen der geforderten hohen Resonanzfrequenz möglichst klein wird.
* Darauf verzichten wir jedoch, weil im Ergebnis die Länge der Biegefeder sich exakt auf das maximal zulässige Verhältnis einstellen würde. Dies ist dadurch bedingt, dass die Biegefeder wegen der geforderten hohen Resonanzfrequenz möglichst sein klein wird.
* Wir können deshalb mit dieser Erkenntnis das Optimierungsproblem vereinfachen, indem wir die '''Laenge als Konstante''' einstellen und den Wert vorgeben:  
* Wir können deshalb mit dieser Erkenntnis das Optimierungsproblem vereinfachen, indem wir die '''Laenge als Konstante''' einstellen und den Wert vorgeben:  
*:'''Laenge'''&nbsp;=&nbsp;10&nbsp;*&nbsp;s =&nbsp;10&nbsp;*&nbsp;F/c_Feder =&nbsp;10&nbsp;*&nbsp;1&nbsp;N/140&nbsp;N/m '''=&nbsp;0,0714&nbsp;m'''
*:'''Laenge'''&nbsp;=&nbsp;10&nbsp;*&nbsp;s =&nbsp;10&nbsp;*&nbsp;F/c_Feder =&nbsp;10&nbsp;*&nbsp;1&nbsp;N/140&nbsp;N/m '''=&nbsp;0,0714&nbsp;m'''
* Nun wird die geforderte Federkonstante sehr schnell erreicht, wobei sich die Resonanzfrequenz verringert:  
* Nun wird die geforderte Federkonstante sehr schnell erreicht, wobei sich die Resonanzfrequenz verringert:  
<div align="center"> [[Bild:Software_CAD_-_Tutorial_-_Optimierung_-_Lokale_Suche_-_Optimierung_mit_Laenge_konstant.gif|.]] </div>
<div align="center"> [[Bild:Software_CAD_-_Tutorial_-_Optimierung_-_Lokale_Suche_-_Optimierung_mit_Laenge_konstant.gif|.]] </div>
* Nach Erreichen der zulässigen Federkonstante sollte das Optimierungsverfahren sich nun eigentlich der Erhöhung der Resonanzfrequenz widmen.
* Nach Erreichen der zulässigen Federkonstante sollte das Optimierungsverfahren sich nun eigentlich der Erhöhung der Resonanzfrequenz widmen, da diese als Gütekriterium definiert ist.
* Leider scheint dies mit der aktuellen Konfiguration unseres Optimierungsexperiments nicht zu gelingen.
* Leider scheint dies mit der aktuellen Konfiguration unseres Optimierungsexperiments nicht zu gelingen.


=== Problem der Randoptima ===
=== Problem der Randoptima ===


Bei technischen Problemstellungen wird die optimale Lösung meist an Restriktionsgrenzen liegen. Das wird mit großer Wahrscheinlichkeit zu Problemen mit der Konvergenz in Richtung einer optimalen Lösung führen:
Bei technischen Problemstellungen wird die optimale Lösung meist an Restriktionsgrenzen liegen, weil die zu berücksichtigenden Anforderungen oft entgegensetzt wirken. Das führt mit großer Wahrscheinlichkeit zu Problemen der Konvergenz in Richtung einer optimalen Lösung an Restriktionsgrenzen:
* Bei der in OptiY verwendeten hierarchischen Optimierungsstrategie wird aus den aktuellen Restriktionsverletzungen der Wert einer Straf-Funktion berechnet.  
* Bei der in ''OptiY'' verwendeten hierarchischen Optimierungsstrategie wird aus den aktuellen Restriktionsverletzungen der Wert einer Straf-Funktion berechnet.  
* Um zuerst alle Forderungen zu erfüllen, hat die Minimierung des Straf-Funktionswertes die höchste Priorität.  
* Um zuerst alle Forderungen zu erfüllen, hat die Minimierung des Straf-Funktionswertes die höchste Priorität.  
* Erst wenn alle Forderungen erfüllt sind (Straf-Funktionswert=0), widmet sich die Optimierungsstrategie der Verfolgung unserer Wünsche (Minimierung der Gütekriterien).  
* Erst wenn alle Forderungen erfüllt sind (Straf-Funktionswert=0), widmet sich die Optimierungsstrategie der Verfolgung unserer Wünsche (Minimierung der Gütekriterien).  
* Eine bessere Erfüllung unserer Wünsche (Resonanzfrequenz vergrößern) führt zwangsläufig wieder zu Restriktionsverletzungen (zu große Federkonstante).  
* Eine bessere Erfüllung unserer Wünsche (Resonanzfrequenz vergrößern) führt zwangsläufig wieder zu Restriktionsverletzungen (zu große Federkonstante).  
* Damit schaltet der Optimierungsprozess an dieser Stelle ständig zwischen zwei Zielfunktionen hin und her (Forderungen und Wünsche).  
* Damit schaltet der Optimierungsprozess an dieser Stelle ständig zwischen zwei Zielfunktionen hin und her (Forderungen und Wünsche).  
* Die Konvergenz zur optimalen Lösung wird damit meist verhindert!  
* Die Konvergenz zur optimalen Lösung wird damit meist "zuverlässig" verhindert!  
Dieses Problem lässt sich zum Glück einfach lösen, indem man alle Wünsche als Forderungen formuliert:
Dieses Problem lässt sich zum Glück einfach lösen, indem man alle Wünsche als Forderungen formuliert:
* Diese Änderung führen wir über den Workflow-Editor durch.  
* Diese Änderung führen wir über den Workflow-Editor durch.  
* Wir löschen das Gütekriterium "'''f1'''".
* Wir löschen das Gütekriterium "'''f1'''" und ergänzen eine neue Restriktionsgröße, die wir ebenfalls "'''f1'''" nennen.  
* Ergänzen einer neuen Restriktionsgröße, die wir ebenfalls "'''f1'''" nennen und mit der richtigen Maßeinheit versehen.  
* Wir verknüpfen diese Restriktionsgröße mit der zugehörigen Ausgangsgröße "'''-f1'''" des Modells, das negative Vorzeichen ist nun nicht mehr erforderlich!  
* Wir verknüpfen diese Restriktionsgröße mit der zugehörigen Ausgangsgröße des Modells, das negative Vorzeichen ist nun nicht mehr erforderlich!  
* Als unteren Grenzwert geben wir auf Grund unserer Vorkenntnisse eine anzustrebende Resonanzfrequenz ein (z.B. '''300&nbsp;Hz''').  
* Als unteren Grenzwert geben wir auf Grund unserer Vorkenntnisse eine anzustrebende Resonanzfrequenz ein (z.B. '''300&nbsp;Hz''').  
* Der obere Grenzwert sollte um den gleichen Wert ('''300&nbsp;Hz''') darüber liegen, weil die Breite des zulässigen Wertebereiches einen Einfluss auf den Strafwert bei Restriktionsverletzung hat.
* Der obere Grenzwert sollte ungefähr um den gleichen Wert ('''300&nbsp;Hz''') darüber liegen, weil die Breite des zulässigen Wertebereiches einen Einfluss auf den Strafwert bei Restriktionsverletzung hat.
* Unser Gütekriterium "Resonanzfrequenz" ist nun selbst Bestandteil der Straf-Funktion und es existieren keine separaten Gütekriterien.
* Unser Gütekriterium "Resonanzfrequenz" ist nun selbst Bestandteil der Straf-Funktion und es existieren keine separaten Gütekriterien.
* Damit entfällt das Umschalten zwischen den Zielfunktionen an den Restriktionsgrenzen und das Verfahren sollte numerisch stabil auf der Straf-Funktion zum Optimum konvergieren:  
* Damit entfällt das Umschalten zwischen den Zielfunktionen an den Restriktionsgrenzen und das Verfahren sollte numerisch stabil auf der Straf-Funktion zum Optimum konvergieren:  
Zeile 69: Zeile 68:
** Ein relativ zum Absolutwert sehr schmaler zulässiger Bereich wird als sehr wichtig angesehen. Kleine Abweichungen werden damit überbewertet und die Optimierung verfängt sich in diesem schmalen Bereich.
** Ein relativ zum Absolutwert sehr schmaler zulässiger Bereich wird als sehr wichtig angesehen. Kleine Abweichungen werden damit überbewertet und die Optimierung verfängt sich in diesem schmalen Bereich.
** Die Federkonstante tendiert aufgrund der Maximierung der Resonanzfrequenz zu höheren Werten.  
** Die Federkonstante tendiert aufgrund der Maximierung der Resonanzfrequenz zu höheren Werten.  
** Wir setzen die '''untere Grenze''' für '''c_Feder=0&nbsp;N/m'''.  
** Wir können deshalb die '''untere Grenze c_Feder=0&nbsp;N/m''' setzen.  
* Dadurch wird die Strafzielfunktion insgesamt "sanfter" und die Optimierung sollte voranschreiten:
* Dadurch wird die Strafzielfunktion insgesamt "sanfter" und die Optimierung sollte voranschreiten:
<div align="center"> [[Datei:Software_CAD_-_Tutorial_-_Optimierung_-_Lokale_Suche_-_Optimierung_f1_als_Restriktion.gif|.]] </div>
<div align="center"> [[Datei:Software_CAD_-_Tutorial_-_Optimierung_-_Lokale_Suche_-_Optimierung_f1_als_Restriktion.gif|.]] </div>
Zeile 76: Zeile 75:
* Wir erweitern die Grenzen für beide Maße auf '''0,3...8&nbsp;mm''' und starten die Optimierung erneut:  
* Wir erweitern die Grenzen für beide Maße auf '''0,3...8&nbsp;mm''' und starten die Optimierung erneut:  
<div align="center"> [[Datei:Software_CAD_-_Tutorial_-_Optimierung_-_Lokale_Suche_-_Optimierung_mit_Hochkantfeder.gif|.]] </div>
<div align="center"> [[Datei:Software_CAD_-_Tutorial_-_Optimierung_-_Lokale_Suche_-_Optimierung_mit_Hochkantfeder.gif|.]] </div>
* Das Ergebnis tendiert zu '''Dicke >> Breite''' ("Hochkant-Feder") praktisch unbrauchbar:
* Das Ergebnis tendiert zu '''Dicke >> Breite''' ("Hochkant-Feder") und wird dadurch praktisch unbrauchbar:
*# Die Feder könnte nun zur Seite wegknicken.
*# Die Feder könnte nun zur Seite wegknicken.
*# Die Frequenz der seitlichen Grundschwingung wird minimiert, was kontraproduktiv zur Maximierung der Resonanzfrequenz ist.
*# Die Frequenz der seitlichen Grundschwingung wird minimiert, was kontraproduktiv zur Maximierung der Resonanzfrequenz ist.
Die im Sinne maximaler Resonanzfrequenz optimierte Feder muss also einen quadratischen Querschnitt besitzen (Dicke=Breite):
Die im Sinne maximaler Resonanzfrequenz optimierte Feder muss also einen quadratischen Querschnitt besitzen ('''Dicke=Breite'''):
* Auch hier verzichten wir auf das Hinzufügen einer weiteren Restriktion, welche "Hochkant-Federn" verhindert.
* Auch hier verzichten wir auf das Hinzufügen einer weiteren Restriktion, welche "Hochkant-Federn" verhindert.
* Wir vereinfachen stattdessen das Optimierungsproblem auf eine Optimierungsvariable ('''Breite''' als Kantenlänge des Quadrats):
* Wir vereinfachen stattdessen das Optimierungsproblem auf eine Optimierungsvariable ('''Breite''' als Kantenlänge des Quadrats):

Version vom 31. Januar 2015, 12:55 Uhr

Lokale Suche

Bei der globalen Suche haben wir den Einfluss unterschiedlicher Feder-Dicken aufgrund mangelnder Anschaulichkeit und langer Rechenzeiten nicht berücksichtigt. Dies werden wir jetzt bei Anwendung eines lokalen Suchverfahrens nachholen:

  • Die lokale Suche beginnt bei einer Ausgangslösung.
  • Sie bewegt sich im Lösungsraum zielgerichtet zu kleineren Werten der Straf-Funktion, bis ein Minimum erreicht wird (möglichst Strafe=0).
  • Wurde eine gültige Lösung gefunden (Strafe=0), so bewegt sich ein lokales Suchverfahren zielgerichtet zu kleineren Werten der Gütekriterien, bis ein Minimum erreicht ist.
  • Die erreichten Minima können bei ungünstigen Zielfunktionen auch lokale Minima sein (Senken in der Oberfläche).
  • Man weiß bei komplexen Problemen meist nicht, ob man wirklich das globale Optimum erreicht hat.

Die Zielfunktion in unserem Beispiel ist "gutmütig". Die Bewertungsgrößen werden repräsentiert durch stetige gekrümmte, nicht wellige Funktionen.

Experiment duplizieren

Software SimX - Nadelantrieb - Wirkprinzip - experiment duplizieren.gif

OptiY bietet die Möglichkeit, für ein Projekt mehrere Experimente zu verwalten. So können wir die bisherigen Einstellungen beibehalten und als Ausgangspunkt für ein neues Experiment nutzen:

  • Nach dem Duplizieren des Experiments erscheint im OptiY-Explorer die Kopie als Experiment2.
  • Dieses weitere Experiment besitzt am Anfang die gleiche Konfiguration wie das Original. Nur die Anzeigefenster muss man neu definieren.
  • Verwaltet man mehrere Experimente in einem Projekt, so sollte man mittels Umbenennen dafür sinnvolle Namen vergeben:
    • Das bisherige Experiment könnte man z.B. Globale Suche nennen.
    • Für das neue Experiment bietet sich die Bezeichnung Lokale Suche an:
      .

Lokale Suche konfigurieren

Für jedes Experiment wird von OptiY ein separater Workflow verwaltet, so dass darin unabhängig voneinander Änderungen vorgenommen werden können:

  • Zuerst selektieren wir die Lokale Suche über das Kontextmenü als Startup-Experiment, damit wir es bearbeiten können.
  • Wir aktivieren den Nennwert der Dicke als Variable in den Grenzen von 0,3 mm ... 0,8 mm.
  • Für die Optimierung wählen wir das Hooke-Jeeves-Verfahren mit Startschrittweite=Standard.
  • Wir erhöhen die Zahl der Optimierungsschritte=1000 (mittels manuellem Stop können wir jederzeit die Berechnung anhalten).
  • Für alle Nennwerte und Bewertungsgrößen öffnen wir ein Nennwert-Diagramm, indem wir mit dem Cursor jede Größe einzeln in den Grafikbereich ziehen.

Wichtig:
Bevor wir die Berechnung starten, überprüfen wir jedesmal im Windows-Taskmanager, ob der Prozess Inventor.exe bereits aktiv ist. Wenn ja, so beenden wir diesen Prozess, weil ansonsten zusätzlich eine weiterer gestartet wird und der Hauptspeicher irgendwann überläuft!

Nach dem Start der Optimierung ergibt sich folgende zielgerichtete Veränderung der Abmessungen:

.
  • Um eine möglichst große Resonanzfrequenz zu erreichen, werden alle Abmessungen zielstrebig verkleinert!
  • Das Optimum liegt in der Nähe von Null und wird dann nur durch die maximal mögliche Belastung begrenzt.
  • Da haben wir eine wichtige Anforderung vergessen: Eine maximal sinnvolle Durchbiegung, z.B. s=0,1 (in 100%) bezogen auf die Feder-Länge!

Problem-Reduktion durch Erkenntnis

Man könnte nun eine zusätzliche Restriktionsgröße "Biegung" im Workflow ergänzen, deren oberer Grenzwert die maximal zulässige prozentuale Durchbiegung beschreibt:

  • Darauf verzichten wir jedoch, weil im Ergebnis die Länge der Biegefeder sich exakt auf das maximal zulässige Verhältnis einstellen würde. Dies ist dadurch bedingt, dass die Biegefeder wegen der geforderten hohen Resonanzfrequenz möglichst sein klein wird.
  • Wir können deshalb mit dieser Erkenntnis das Optimierungsproblem vereinfachen, indem wir die Laenge als Konstante einstellen und den Wert vorgeben:
    Laenge = 10 * s = 10 * F/c_Feder = 10 * 1 N/140 N/m = 0,0714 m
  • Nun wird die geforderte Federkonstante sehr schnell erreicht, wobei sich die Resonanzfrequenz verringert:
.
  • Nach Erreichen der zulässigen Federkonstante sollte das Optimierungsverfahren sich nun eigentlich der Erhöhung der Resonanzfrequenz widmen, da diese als Gütekriterium definiert ist.
  • Leider scheint dies mit der aktuellen Konfiguration unseres Optimierungsexperiments nicht zu gelingen.

Problem der Randoptima

Bei technischen Problemstellungen wird die optimale Lösung meist an Restriktionsgrenzen liegen, weil die zu berücksichtigenden Anforderungen oft entgegensetzt wirken. Das führt mit großer Wahrscheinlichkeit zu Problemen der Konvergenz in Richtung einer optimalen Lösung an Restriktionsgrenzen:

  • Bei der in OptiY verwendeten hierarchischen Optimierungsstrategie wird aus den aktuellen Restriktionsverletzungen der Wert einer Straf-Funktion berechnet.
  • Um zuerst alle Forderungen zu erfüllen, hat die Minimierung des Straf-Funktionswertes die höchste Priorität.
  • Erst wenn alle Forderungen erfüllt sind (Straf-Funktionswert=0), widmet sich die Optimierungsstrategie der Verfolgung unserer Wünsche (Minimierung der Gütekriterien).
  • Eine bessere Erfüllung unserer Wünsche (Resonanzfrequenz vergrößern) führt zwangsläufig wieder zu Restriktionsverletzungen (zu große Federkonstante).
  • Damit schaltet der Optimierungsprozess an dieser Stelle ständig zwischen zwei Zielfunktionen hin und her (Forderungen und Wünsche).
  • Die Konvergenz zur optimalen Lösung wird damit meist "zuverlässig" verhindert!

Dieses Problem lässt sich zum Glück einfach lösen, indem man alle Wünsche als Forderungen formuliert:

  • Diese Änderung führen wir über den Workflow-Editor durch.
  • Wir löschen das Gütekriterium "f1" und ergänzen eine neue Restriktionsgröße, die wir ebenfalls "f1" nennen.
  • Wir verknüpfen diese Restriktionsgröße mit der zugehörigen Ausgangsgröße "-f1" des Modells, das negative Vorzeichen ist nun nicht mehr erforderlich!
  • Als unteren Grenzwert geben wir auf Grund unserer Vorkenntnisse eine anzustrebende Resonanzfrequenz ein (z.B. 300 Hz).
  • Der obere Grenzwert sollte ungefähr um den gleichen Wert (300 Hz) darüber liegen, weil die Breite des zulässigen Wertebereiches einen Einfluss auf den Strafwert bei Restriktionsverletzung hat.
  • Unser Gütekriterium "Resonanzfrequenz" ist nun selbst Bestandteil der Straf-Funktion und es existieren keine separaten Gütekriterien.
  • Damit entfällt das Umschalten zwischen den Zielfunktionen an den Restriktionsgrenzen und das Verfahren sollte numerisch stabil auf der Straf-Funktion zum Optimum konvergieren:
    • Leider wird das Ergebnis ähnlich schlecht aussehen, solange der zulässige Bereich für c_Feder=139...140 N/m sehr eng gewählt ist.
    • Ein relativ zum Absolutwert sehr schmaler zulässiger Bereich wird als sehr wichtig angesehen. Kleine Abweichungen werden damit überbewertet und die Optimierung verfängt sich in diesem schmalen Bereich.
    • Die Federkonstante tendiert aufgrund der Maximierung der Resonanzfrequenz zu höheren Werten.
    • Wir können deshalb die untere Grenze c_Feder=0 N/m setzen.
  • Dadurch wird die Strafzielfunktion insgesamt "sanfter" und die Optimierung sollte voranschreiten:
.
  • Die Erhöhung der Resonanzfrequenz erfolgt durch Vergrößern der Dicke und Verringern der Breite.
  • Bei letzterem stört der untere Grenzwert für die Breite.
  • Wir erweitern die Grenzen für beide Maße auf 0,3...8 mm und starten die Optimierung erneut:
.
  • Das Ergebnis tendiert zu Dicke >> Breite ("Hochkant-Feder") und wird dadurch praktisch unbrauchbar:
    1. Die Feder könnte nun zur Seite wegknicken.
    2. Die Frequenz der seitlichen Grundschwingung wird minimiert, was kontraproduktiv zur Maximierung der Resonanzfrequenz ist.

Die im Sinne maximaler Resonanzfrequenz optimierte Feder muss also einen quadratischen Querschnitt besitzen (Dicke=Breite):

  • Auch hier verzichten wir auf das Hinzufügen einer weiteren Restriktion, welche "Hochkant-Federn" verhindert.
  • Wir vereinfachen stattdessen das Optimierungsproblem auf eine Optimierungsvariable (Breite als Kantenlänge des Quadrats):
    1. ...


Hinweis: Bis hier wurde die Übungsanleitung schon als Entwurf erarbeitet!!!