Blogginlägg Volupe

Simcenter Amesims inbyggda optimeringsfunktioner

denna Simcenter Amesim post vi kommer att ta en titt på funktioner och metoder för optimering finns i Simcenter Amesim, och förhoppningsvis ger en viss inblick i området optimering i allmänhet. 

"Optimering, även känd som matematisk programmering, är en samling matematiska principer och metoder som används för att lösa kvantitativa problem inom många discipliner, inklusive fysik, biologi, teknik, ekonomi och affärsverksamhet." - Britannica.com

Som ingenjör som arbetar med systemsimulering är ditt mål när du konstruerar ett system eller en komponent vanligtvis att förbättra systemet och förbättra det så mycket som möjligt. Vanligtvis innebär detta att jämföra och dubbelkontrollera resultaten med en stor uppsättning krav, undersöka kompromisser och ha en realistisk uppfattning om de kostnader som är involverade. Om produkten ersätter en befintlig produkt måste den vara minst lika bra som den gamla, eller ännu hellre betydligt bättre än den gamla. Andra aspekter är att göra den redo för marknaden på kortare tid, billigare, lättare att underhålla, lägre energibehov och så vidare. Ett realistiskt sätt att hantera de ständigt ökande kraven och se till att ingen sten lämnas orörd under utvecklingen är att utnyttja optimering.

Optimering i Simcenter Amesim

Konfigurera och definiera optimeringsfall i Simcenter Amesim görs via Study Manager, figur 1. Här samlas både oberoende och beroende variabler in från den underliggande Simcenter Amesim-modellen och inkluderas i definitionen av studieparametrar. Under samma mapp placeras optimeringsmål, dvs. målfunktioner, tillsammans med eventuella begränsningar.

Figur 1, Simcenter Amesims Study Manager som visar en vald optimeringsprocess.

I Simcenter Amesim finns följande två optimeringsalgoritmer tillgängliga:

   NLPQL

   Genetisk algoritm

Icke-lineär programmering med kvadratisk lagrangian (NLPQL) är en gradientbaserad algoritm för icke-linjära problem. Metoden använder sig av målfunktionens gradienter, eller ungefärliga gradienter, för att stegvis förbättra en målfunktion och är i allmänhet väl lämpad för lokala sökningar.

Ett kännetecken för denna gradientbaserade metod är att den stannar när den hittar ett lokalt minimum. Därför kan den slutliga optimala lösningen bero på ditt val av startpunkt, dvs. dina ursprungliga parametervärden. För många optimeringsproblem är detta kanske inte ett problem eftersom det kanske bara finns ett minimum, t.ex. för en cirkulär paraboloid. Men om problemet är mer komplext i den meningen att det innehåller flera lokala optima, så kallade multimodala, kan det hända att denna algoritm inte lyckas hitta den optimala lösningen.

Som med alla optimeringsstudier kan man vinna mycket på att studera och förstå problemet innan man bestämmer sig för vilken metod man ska använda. Nedan i figur 2 visas en tvådimensionell funktion som kallas Schwefel-funktionen. Liknande funktioner används för att testa optimeringsalgoritmer och utvärdera deras beteende.

Figur 2, en tvådimensionell Schwefel-funktion som innehåller flera lokala minima och maxima.

Den genetiska algoritmen inside Simcenter Amesim är en så kallad evolutionär algoritm och denna typ av algoritm används ofta för att öka chanserna att hitta det globala optimumet. Algoritmen förlitar sig inte på en gradient för att bestämma lösningens riktning. Istället börjar den sitt breda sökande genom att slumpmässigt generera och köra en uppsättning simuleringsfall, ungefär som en begränsad experimentplaneringsstudie (DoE). Resultatet från varje simulering utvärderas sedan och de fall som förbättrar målfunktionen mest behålls. Algoritmen fortsätter sedan genom att välja nya fall (barn) från de tidigare fallen (föräldrar) och genom att välja parametervärden som ligger nära dessa föräldrar. Varje barnfall tar parametervärden från två av föräldrafallen, och optimeringen fortsätter under flera generationer, dvs. iterationer, tills det maximala antalet generationer har uppnåtts.

Figur 3, Standardinställningar för den genetiska algoritmen

I figur 3 ovan visas inställningarna för den genetiska algoritmen. Befolkningsstorlek anger antalet individer/fall som ska köras under varje iteration. Reproduktionsförhållande talar om för optimeraren hur många fall som ska ersättas med nya fall i varje iteration. Standardvärdet 80 [%] innebär att de bästa 20 [%] av fallen behålls för nästa iteration. Maximalt antal generationer anger det totala antalet iterationer som ska utföras. Sannolikhet för mutation tillämpas endast i scenarier där diskreta parametrar har valts och förser algoritmen med sannolikheten för att dessa parametrar ska förändras. Mutationsamplituden säkerställer att det finns utrymme för mer utforskning av konstruktionen och begränsar risken för att konvergera mot ett lokalt optimum. Om värdena sätts nära noll kommer lösningen troligen att konvergera snabbare, men med risken att fastna i ett lokalt optimum. Slutligen har vi Utsäde, som ger en startpunkt för den pseudo slumpmässiga talgeneratorn. Om två optimeringar körs med samma Seed och utan att ändra några andra inställningar kommer du att få exakt samma resultat från båda studierna. Om man i stället väljer ett annat Seed-värde kommer både startpunkten och den efterföljande sökningen att vara annorlunda.

Nedan finns några allmänna riktlinjer som kan vara till hjälp när du bestämmer algoritm-inställningar.

Antalet totala simulations som ska köras ges av följande ekvation.

, där N = populationsstorlek, R = reproduktionskvot och G = maximalt antal generationer.

Populationsstorleken bör väljas i enlighet med antalet parametrar. Försök visar att populationsstorlek ≥ 4,5 x antalet parametrar ofta ger goda resultat.

Ett högt reproduktionsförhållande leder ofta till snabb konvergens, men det är också troligt att det leder till lokal konvergens. Ett reproduktionsförhållande mellan 50% och 85% ger ofta goda resultat.

Antalet generationer beror på hur många körningar du är beredd att acceptera när det gäller beräkningstid, men det måste vara större än 10 för att få relevanta resultat.

Ytterligare överväganden

Målfunktioner i Simcenter Amesim bestäms genom att beräkna det absoluta värdet av den valda beroende variabeln, t.ex. modellutgången, som optimeringsalgoritmen sedan försöker minimera. Detta är tillräckligt för optimering med ett enda mål, men i situationer där flera målfunktioner ska användas krävs en optimeringsmetod med flera mål.

När vi löser ett optimeringsproblem med flera mål försöker vi hitta den globala Pareto-optimala uppsättningen. Den pareto-optimala uppsättningen är den uppsättning punkter där det inte finns några andra punkter som är bättre än dessa punkter, och där varje förbättring av ett mål sker på bekostnad av de andra målen. Om vi plottar alla dessa punkter i en och samma plott får vi Pareto-fronten/gränsen, och i ett scenario med två målfunktioner ger detta den optimala avvägningskurvan.

För närvarande finns det inget direkt alternativ för att köra Pareto-optimering i Study Manager, men genom att kombinera Simcenter Amesim med Simcenter HEEDSMed Simcenters multidisciplinära programvara för optimering av konstruktion är ett sådant tillvägagångssätt möjligt.

Ett alternativ till att lösa problem med flera mål med hjälp av Pareto-optimering är att definiera en enda funktion från två eller flera målfunktioner och sedan optimera denna enda funktion. Detta tillvägagångssätt är känt som metoden med viktad summa och är en allmänt använd metod. Metoden använder vikter för att specificera den relativa betydelsen av varje mål, och skalar sedan de olika storlekarna av alla mål med hjälp av en process som kallas normalisering.

Metoden med viktade summor är lämplig för att lösa problem som kan klassificeras som konvexa målområden, vilket är ganska vanligt för många tekniska problem. Om lika stor vikt tilldelas, vilket innebär att alla mål anses vara lika viktiga, kommer metoden med vägd summa att hitta denna punkt på Paretogränsen. Om man väljer olika vikter kommer man att hitta olika optimala lösningar på Paretogränsen, vilket framgår av figur 4 nedan.

Figur 4, till vänster, ett problem med ett konvext målområde med olika vikter. Figuren till höger visar ett icke-konvext exempel. [1][2]

För icke-konvexa problem som visas till höger i figur 4 misslyckas metoden med viktade summor när det gäller att bestämma optimala punkter mellan A och B. Detta beror på att vikterna bildar en linje som skär A eller B före någon punkt däremellan. Ett optimum kommer ändå att hittas, men inte det bästa för de givna vikterna. För att hitta de optimala avvägningarna i denna situation måste Pareto-optimering användas.

Optimering som ämne är omfattande och dess tillämplighet likaså. I mer direkta problem kan optimering effektivt användas för att fastställa parameterinställningar för t.ex. en backventil för att uppfylla vissa krav på flödet, eller för att matcha en modell av en turboladdare i Simcenter Amesim med testade resultat. I mer avancerade fall används optimering för att fastställa förhållandet och avvägningarna mellan olika systemattribut i ett komplext system som innehåller flera målfunktioner, många indata och mer än ett fåtal begränsningar.  

Dessa problem kan naturligtvis angripas med hjälp av mer heuristiska metoder, t.ex. trial and error, men med nackdelarna av ett mindre systematiskt arbetsflöde, inga garantier för att man faktiskt hittar optimalitet och den stora risken att man inte vänder på några mycket viktiga stenar.

I enn kommande blogg vi kommer att gå igenom hur man ansluter Simcenter HEEDS till Simcenter Amesim. Under tiden kan vie hoppas att du har hittat detta artikel intressant. Om du har några frågor eller kommentarer, gärna kontakta oss på följande adress support@volupe.com 

Författare

Fabian Hasselby, M.sc.
+46733661021

[1] https://www.lancaster.ac.uk/stor-i-student-sites/peter-greenstreet/2020/04/24/weighted-sum-approach/

[2] https://www.lancaster.ac.uk/stor-i-student-sites/peter-greenstreet/2020/04/26/issues-with-weighted-sum-approach-for-non-convex-sets/

Fler blogginlägg

sv_SESwedish