مقدمه: این آموزش بر مبنای نرم افزار ansys 7.0 تهیه شده است. هدف این آموزش معرفی یک روش برای حل مساله ی بهینه سازی طراحی با استفاده از نرم افزار ansys است. این آموزش شامل ساخت پارامترهای هندسی یکه شده برای تمام متغیر ها، تصمیم گیری برای اینکه کدام متغیرها برای طراحی استفاده شوند، و کدام متغیر ها به عنوان متغیر حالت و هدف انتخاب شوند و تنظیم تلورانس درست برای مساله برای بدست آوردن یک حل دقیق و همگرا در کمترین زمان. استفاده از نقاط کلیدی یا گره (hardpoints) که برای اعمال کردن نیروها در وسط خطوط محدودیت ایجاد می کنند در این حل مد نظر قرار خواهد گرفت.
یک نیروی1000 نیوتنی به تیری مطابق شکل زیر اعمال شده است. هدف این مساله ی طراحی، کاهش وزن تیر بدون افزایش مقدار تنش های مجاز است. برای کاهش دادن جرم تیر یه حداقل ممکن باید cross sectional dimensions پیدا شوند. هر چند عرض و ارتفاع تیر نمی توانند از 10 mm کمتر شوند. تنش حداکثر در هر نقطه ای از تیر نمی تواند بیش از 200MPa باشد. همچنین تیر از فولاد با مدول الاستیسیته ی 200GPa ساخته شده است.
نوجه: به دلیل حجم بالای این مثال امکان ارائه ی آن در یک مطلب وجود ندارد و در نتیجه ادامه این مثال در بهینه سازی طراحی 2 آمده است.
پیش پردازش: تعریف مساله
1- انتخاب عنوان
در ابتدا این مسیر را برای تعیین عنوان انتخاب کنید.(ما عنوان را Design Optimization تعیین کردیم)
Utility Menu > File > Change Title ...
/title,
Design Optimization
2- تخمین اولیه داخلی برای متغیرها
برای حل کردن یک مساله ی بهینه سازی در ansys، پارامتر ها برای تمام متغیر های طراحی باید تعریف شوند.
مسیر زیر را انتخاب کنید:
Utility Menu > Parameters > Scalar Parameters...
در پنجره ای که باز می شود (مانند پنجره ی زیر) در بخش ""Selection بنویسید : W=20
بر روی گزینه "Accept" کلیک کنید پنجره ی "scaler parameters" باز خواهد ماند.
حال در بخش "SELECTION" بنویسید: H=20
سپس روی گزینه "Accept" کلیک کنید.
سپس در پنجره "Scaler parameters" بر روی گزینه "Close" کلیک کنید.
توجه: هیچ کدام از متغیر های تعریف شده درansys نمی توانند مقادیر منفی را اختیار کنند.
3- نقاط کلیدی
ما می خواهیم در این مساله دو نقطه ی کلیدی (keypoint ) تعریف کنیم.
Keypoints |
Coordinates (x,y) |
1 |
(0,0) |
2 |
(1000,0) |
نقاط کلیدی (keypoints) را از مسیر زیر تعریف کنید:
Preprocessor > Modeling > Create
> Keypoints > In Active CS...
K,#,x,y
4- ایجاد کردن خطوط:
مسیر زیر را انتخاب کنید:
Preprocessor > Modeling > Create
> Lines > Lines > In Active Coord
L,1,2
خطی را ایجاد کنید که از پیوستن نقاط کلیدی 1 و 2 بوجود می آید.
5- درست کردن نقاط کلیدی سخت (hard keypoint)
نقاط سخت معمولا زمانی استفاده می شوند که شما نیاز به اعمال محدودیت یا اعمال بار داشته باشید، اما نقاط کلیدی وجود نداشته باشند. در این مورد ما می خواهیم یک نیرو را به نقطه ای در طول 3/4 زیر تیر وارد کنیم. به دلیل این که اینجا هیچ نقطه ی کلیدی ای وجود ندارد و ما نمی توانیم تشخیص دهیم که آیا یکی از گره ها اینجا خواهد بود یا نه؛ نیاز به مشخص کردن نقطه ی سخت داریم.
مسیر زیر را انتخاب کنید:
Preprocessor > Modeling > Create > Keypoints > Hard PT on line > Hard PT by ratio
این به ما اجازه خواهد تا یک نقطه ی سخت را بوسیله ی تعریف نسبت موقعیت نقطه به اندازه ی خط ی روی آن ایجاد کنیم
خط را زمانی که promoted انتخاب کنید.
در پنجره ی "Create HardPT by Ratio" که ظاهر می شود نسبت 0.75 را وارد کنید.
شما هم اکنون یک "keypoint" در طول 3/4 زیر تیر ایجاد کرده اید که " Keypoint 3" نامیده می شود.
6- تعریف نوع المان
Preprocessor > Element Type > Add/Edit/Delete...
برای این مساله ما از Beam3 (تیر دو بعدی الاستیک) استفاده خواهیم کرد. این المان سه درجه آزادی دارد (انتقالی در راستای محورهای X و Y وچرخش حول محور Z ).
7- تعریف ثابت های هندسی
Preprocessor > Real Constants... > Add...
در پنجره ی " Real Constants for BEAM3" خواص هندسی زیر را وارد کنید (توجه کنید که برای علامت توان به جای علامت "^" از علامت "**" استفاده می شود).
· سطح مقطع : AREA: W*H
· گشتاور اینرسی سطح: IZZ: (W*H**3)/12
· ضخامت در راستای محور Y: H
توجه: مهم است که برای تعریف متغیر های وابسته مانند گشتاور اینرسی از متغیرهای مستقل استفاده شود. در طی بهینه سازی عرض و ارتفاع برای هر بار تکرار به طور مستقل تغییر می کنند. در نتیجه سایر متغیرها باید نسبت به عرض و ارتفاع تعریف شوند.
8- تعریف خواص ماده ی سازنده ی المان
Preprocessor > Material Props > Material Models > Structural > Linear > Elastic > Isotropic
در پنجره ای که ظاهر می شود خواص هندسی زیر را برای فولاد وارد کنید.
· مدول یانگ: EX:200000
· ضریب پواسون: PRXY: 0.3
9- تعریف سایز مش ها
مسیر زیر را انتخاب کنید:
Preprocessor > Meshing > Size Cntrls > ManualSize > Lines > All Lines...
برای این مثال طول ضلع المان را 100 mm مشخص می کنیم.(10 المان در طول خط وجود خواهد داشت.)
10- مش بندی قاب
مسیر زیر را انتخاب کنید:
Preprocessor > Meshing > Mesh > Lines
> click 'Pick All'
LMESH,ALL
فاز حل: بارگزاری و حل مساله
1- تعیین نوع آنالیز
مسیر زیر را انتخاب کنید:
Solution > Analysis Type > New Analysis
> Static
ANTYPE,0
2- اعمال شرایط مرزی
مسیر زیر را انتخاب کنید:
Solution > Define Loads > Apply > Structural > Displacement > On Keypoints
گره 1 را انتخاب کنید (محدودیت در راستای UX , UY ) و گره 2 را در راستای محور Y محدود کنید.
3- بارگزاری
مسیر زیر را انتخاب کنید:
Solution > Define Loads > Apply > Structural > Force/Moment > On Keypoints
یک نیروی عمودی(FY) به اندازه 2000 نیوتن در گره 3 اعمال می کنیم.
اکنون بارها و شرایط مرزی اعمال شده باید در پنجره ای مانند شکل زیر ظاهر شوند.
4- حل کردن مساله
مسیر زیر را انتخاب کنید:
Solution > Solve > Current LS
SOLVE
پس پردازش: دیدن نتایج
گرفتن خروجی(پارامترها) از اطلاعات مساله:
برای بهینه سازی ما باید اطلاعات مورد نیاز را از مساله استخراج کنیم.
در این مساله ما می خواهیم مکان بیشترین تنش در تیر و اندازه ی آن را به عنوان نتایج متغیر های مستقل عرض و ارتفاع بدست آوریم.
1- تعیین اندازه
مسیر زیر را انتخاب کنید:
General Postproc > Element Table > Define Table... > Add...
پنجره ی زیر ظاهر خواهد شد. پنجره را مانند شکل زیر پر می کنیم تا حجم تیر بدست آید.
توجه کنید که این مقدار، حجم یک المان است. اگر بخواهید جدول المان ها را مرتب کنید باید حجم هر المان را داشته باشید. بنابراین، باید مقادیر حجم المان ها را با هم جمع کنید؛ تا حجم کلی تیر را بدست آورید. می توانید از دستور زیر برای انجام این کار استفاده کنید.
Utility Menu > Parameters > Get Scalar Data...
یک پنجره ی کوچک ظاهر می شود. و شما را متوجه این نکته می کند که مجموع جدولی هر جدول المان در حال محاسبه است. بر روی گزینه ی "OK" کلیک کنید.
حالا شما یک پنجره بدست آورده اید که نشان می دهد حجم کلی 400000 mm2 است.
2- ذخیره ی حجم به عنوان یک پارامتر
مسیر زیر را انتخاب کنید:
Utility Menu > Parameters > Get Scalar Data...
در پنجره ای که ظاهر می شود " Results Data" و " Elem table sums" را انتخاب کنید.
پنجره ای مطابق زیر ظاهر می شود. گزینه های نشان داده شده را انتخاب کنید تا حجم به عنوان یک پارامتر ذخیره شود.
حال اگر پارامتر ها را از مسیر (Utility Menu > Parameters > Scalar Parameters...) ببینید. متوجه خواهید شد که حجم اضافه شده است.
3- تعیین تنش حداکثر به عنوان گره i در هر المان تیر.
مسیر زیر را انتخاب کنید:
General Postproc > Element Table > Define Table... > Add...
پنجره ی زیر ظاهر خواهد شد. این پنجره را مانند شکل زیر پر کنید تا تنش حداکثر به عنوان گره i در هر المان بدست آورده شود وبعد آن را به عنوان " SMAX_I" ذخیره کنید.
توجه کنید که nmisc,1 تنش حداکثر است. برای اطلاعات بیشتر در خط فرمان عبارت " Help beam3" را بنویسید.
حال برای پیدا کردن تنش حداکثر نیازمند مرتب کردن تنش ها به ترتیب نزولی هستیم.
مسیر زیر را انتخاب کنید:
General Postproc > List Results > Sorted Listing > Sort Elems
پنجره را همانند شکل زیر کامل کنید تا اطلاعات " SMAX_I" به ترتیب نزولی مرتب شوند.
4- ذخیره کردن داده ی تنش حداکثر به عنوان یک پارامتر.
مسیر زیر را انتخاب کنید:
Utility Menu > Parameters > Get Scalar Data...
در پنجره ای که ظاهر می شود " Results Data" و " Other operations" را انتخاب کنید.
سپس پنجره ی جدید را مانند آنچه که در زیر نشان داده شده است پر کنید تا بیشترین اندازه بدست آید.
5- تعیین تنش حداکثر به عنوان گره j هر المان تیر.
مسیر زیر را انتخاب کنید:
General Postproc > Element Table > Define Table... > Add...
این جدول را به جز در موارد زیر مانند جدول قبل پر کنید.
· داده ها را به جای "SMAX_i" با نام "SMAX_J" ذخیره کنید.
· اطلاعات جدول المان ها را به جای" NMISC,1"، " NMISC,3" وارد کنید. این کار تنش حداکثر در گره j را به شما خواهد داد.
مسیر زیر را برای مرتب کردن تنش ها به ترتیب نزولی انتخاب کنید:
General Postproc > List Results > Sorted Listing > Sort Elems
البته در قسمت item، "SMAX_J" را انتخاب کنید. سپس فایل انتخاب را کامل کنید.
6- ذخیره ی تنش حداکثر به عنوان یک پارامتر.
Utility Menu > Parameters > Get Scalar Data...
در پنجره ای که ظاهر می شود گزینه های "Results Data" و "Other operations" را انتخاب کنید.
سپس پنجره ی جدید را مانند آنچه در مورد قبل نشان داده شد پر کنید. با این تفاوت که نام پارامتر را "SMaxJ" قرار دهید.
7- انتخاب مقدار بزرگتر بین " SMAXJ" و " SMAXI".
دستور زیر را در خط فرمان بنویسید:
SMAX=SMAXI>SMAXJ
این دستور مقدار بزرگتر را به عنوان SMAX ذخیره می کند.
در این مورد مقدار حداکثر برای هر دو یکسان است. اما این همیشگی نیست!
8- دیدن نتایج پارامتریک
مسیر زیر را انتخاب کنید
Utility Menu > Parameters > Scalar Parameters
توجه شود که تنش حداکثر برابر 281.5 MP است که از تنش مجاز(200 MP) بیشتر است.
بهینه سازی طراحی
حالا که ما مساله ی مان را بر مبنای ابعاد عرض و ارتفاع داخلی به صورت پارامتری در ANSYS تنظیم کرده ایم؛ می توانیم مساله طراحی را حل کنیم.
1- نوشتن فایل فرمان
ضروری است که ما خلاصه ی مساله ی مان را در یک فایل فرمان ANSYS بنویسیم.
به همین خاطر است که ANSYS می تواند حل هایی را بر روی مساله ی ما اعمال (RUN) کند که بر مبنای اندازه های دیگری برای متغیرهایی که ما تعریف کرده ایم هستند.
مسیر زیر را انتخاب کنید:
Utility Menu > File > Write DB Log File...
در پنجره ای که ظاهر می شود یک نام – مثلا " optimize.txt"- برای فایل فرمان انتخاب کنید.
بر روی گزینه ی OK"" کلیک کنید.
اگر شما فایل فرمان را در یک صفحه ی متن قابل ویرایش مانند NOTE PAD باز کرده باشید باید مشابه خطوط زیر باشد:
/BATCH
! /COM,ANSYS RELEASE 7.0 UP20021010 16:10:03 05/26/2003
/input,start70,ans,'C:\Program Files\Ansys Inc\v70\ANSYS\apdl\',,,,,,,,,,,,,,,,1
/title, Design Optimization
*SET,W , 20
*SET,H , 20
/PREP7
K,1,0,0,,
K,2,1000,0,,
L, 1, 2
!*
HPTCREATE,LINE,1,0,RATI,0.75,
!*
ET,1,BEAM3
!*
!*
R,1,W*H,(W*H**3)/12,H, , , ,
!*
!*
MPTEMP,,,,,,,,
MPTEMP,1,0
MPDATA,EX,1,,200000
MPDATA,PRXY,1,,.3
!*
LESIZE,ALL,100, , , ,1, , ,1,
LMESH, 1
FINISH
/SOL
!*
ANTYPE,0
FLST,2,1,3,ORDE,1
FITEM,2,1
!*
/GO
DK,P51X, , , ,0,UX,UY, , , , ,
FLST,2,1,3,ORDE,1
FITEM,2,2
!*
/GO
DK,P51X, , , ,0,UY, , , , , ,
FLST,2,1,3,ORDE,1
FITEM,2,3
!*
/GO
FK,P51X,FY,-2000
! /STATUS,SOLU
SOLVE
FINISH
/POST1
AVPRIN,0,0,
ETABLE,EVolume,VOLU,
!*
SSUM
!*
*GET,Volume,SSUM, ,ITEM,EVOLUME
AVPRIN,0,0,
ETABLE,SMax_I,NMISC, 1
!*
ESORT,ETAB,SMAX_I,0,1, ,
!*
*GET,SMaxI,SORT,,MAX
AVPRIN,0,0,
ETABLE,SMax_J,NMISC, 3
!*
ESORT,ETAB,SMAX_J,0,1, ,
!*
*GET,SMaxJ,SORT,,MAX
*SET,SMAX,SMAXI>SMAXJ
! LGWRITE,optimization,,C:\Temp\,COMMENT
پیش از شروع بهینه سازی چندین تغییر کوچک باید در این متن اعمال شوند. اگر شما هندسه و ... را ایجاد کرده باشید، با استفاده از کدهای خط فرمان بسیاری از این تغییرات فورا انجام می شوند. البته اگر شما از GUI برای ساخت این فایل استفاده کرده باشید؛ موارد متعددی وجود دارد که شما از یک دستگاه گرافیکی استفاده کرده اید. بنابراین، آیتم های واقعی ای که انتخاب شده اند نیاز به وارد شدن دارند. کد "P51X" نماد یک انتخاب گرافیکی است. برای تغییر فابل، آن را به راحتی در NOTE PAD باز کنید و تغییرات لازم را در آن اعمال کنید. فایلی را که تمام تغییرات لازم را در آن داده اید ذخیر کنید و ببندید. آنچه در زیر می آید لیستی از تغییراتی که لازم است در این فایل اعمال شوند است. (که با روش GUI ساخته شده است.)
· خط 32: DK,P51X, ,0, ,0,UX,UY, , , , ,
خط بالا را با این خط جایگزین کنید: DK,1, ,0, ,0,UX,UY,
این خط شرایط مرزی نقطه ی کلیدی 1 (KEYPOINT 1) را مشخص می کند.
· خط 37: DK,P51X, ,0, ,0,UY, , , , , ,
خط بالا را با این خط جایگزین کنید: DK,2, ,0, ,0,UY,
این خط شرایط مرزی نقطه ی کلیدی 2 (KEYPOINT 2) را مشخص می کند.
· خط 42: FK,P51X,FY,-2000
خط بالا را با این خط جایگزین کنید: FK,3,FY,-2000
این خط نیروهای اعمال شده به تیر را مشخص می کند.
چند خط نیز وجود دارد که می توان از این فایل حذف شان کرد. اگر کد نویسی در خط فرمان( command line) برایتان آسان است، می توان خطوطی را تشخیص می دهید به آنها نیاز نیست را حذف کنید.
2- ارجاع فایل فرمان (command file) به بهینه سازی.
مسیر زیر را انتخاب کنید:
Main Menu > Design Opt > Analysis File > Assign
در فایلی که ظاهر می شود، نام فایلی را که در هنگام ساختن فایل فرمان نوشته بودید، انتخاب کنید.
بر روی گزینه ی ""OK کلیک کنید.
3- تعریف متغیر ها و تلورانس ها
باید برای Ansys تعریف کرد که کدام متغیر ها نیاز به بهینه سازی دارند. برای تعریف متغیرها ما باید بدانیم کدام متغیرهای مستقل بر روی متغیر هدف موثرند تا به اندازه اش حداقل برسد. در این مثال هدف ما حداقل کردن حجم تیر است که رابطه ی مستقیم با عرض تیر دارد.
Ansys سه نوع متغیر را برای بهینه سازی طراحی دسته بندی می کند.
متغیرها ی طراحی (DVs)
متغیرهای مستقل که مستقیما به هدف طراحی اثر می گذارند. در این مثال عرض و ارتفاع متغیر های طراحی اند. تغییر هر کدام از این متغیر ها مستقیما بر حل مساله اثر می گذارد.
متغیرهای حالت (SVs)
متغیر های وابسته ای که در نتیجه ی تغییر در متغیرهای طراحی تغییر می کنند. این متغیرها برای اعمال شرایط مرزی در طراحی ضروری اند. در این مساله تنش حداکثر در تیر متغیر حالت است. بدون این متغیرها بهینه سازی ما تا صفر شدن عرض و ارتفاع پیش می رود! که این نتیجه قابل استفاده نیست.
متغیرهای هدف (OV)
متغیر هدف یک متغیر در بهینه سازی است که باید حداقل شود. در این مساله ما حجم تیر را حداقل کردیم.
توجه: مانند حالت قبل، هیچ کدام از متغیر هایی که در ansys تعریف می شوند، نباید منفی باشند.
حال که ما متغیر های طراحی مان را انتخاب کردیم؛ باید محدوده و تلورانس را برای هر متغیر تعریف کنیم. برای عرض و ارتفاع رنج 10mm الی 50mm را انتخاب می کنیم. زیرا یک تغییر کوچک در هر کدام از عرض یا ارتفاع تیر تاثیر زیادی بر حجم تیر خواهد گذاشت. همچنین تلورانس را 0.1mm انتخاب می کنیم. دادن تلورانس ضروری است زیرا به ansys می گوید بیشترین مقداری که یک متغیر می تواند با وجود همگرایی حل تجربه کند چقدر است.
برای متغیر تنش ما رنج 195MP الی 200MP و مقدار تلورانس 0.1MP را انتخاب می کنیم.
به این دلیل که حجم متغیر هدف است، نیاز به مشخص کردن محدوده ی مجاز برای حجم نداریم. تلورانس را هم برای حجم 200MM3 قرار می دهیم. این تلورانس به این دلیل انتخاب شد که به طور قابل ملاحظه ای از اندازه ی داخلی حجم (20*20*1000=400000mm3) کوچکتر است.
الف) تعریف متغیرهای طراحی(عرض و ارتفاع تیر)
Main Menu > Design Opt > Design Variables... > Add...
پنجره ی باز شده را مانند شکل زیر کامل کنید تا محدوده ی مجاز و تلورانس برای ارتفاع تیر مشخص شود.
گام های قبلی مرحله ی الف را برای عرض تیر نیز انجام دهید.( مشابه روند ارتفاع)
ب) تعیین متغیرهای حالت
Main Menu > Design Opt > State Variables... > Add...
پنجره را به ترتیب زیر پر کنید:
در بخش " Parameter Name"، "SMAX" را انتخاب کنید.
پایین ترین حد: MIN:195
بالا ترین حد: MAX:205
تلورانس قابل قبول: TOLLER:0.001
ج) تعیین متغیر هدف
مسیر زیر را انتخاب کنید:
Main Menu > Design Opt > Objective...
در بخش " Parameter Name"، " VOLUME" را انتخاب کنید.
زیر تلورانس همگرایی 200 را وارد کنید.
4- تعیین روش بهینه سازی
روش های زیادی وجود دارد که ANSYS می تواند برای حل یک مساله ی بهینه سازی از آنها استفاده کند. برای اطمینان از اینکه شما یک حل برای موقعیت حداقل پیدا کردید پیشنهاد میشود از روش های حل متفاوت استفاده کتید. اگر شما با این مشکل دارید که یک مساله ی خاص را خیلی دقیق فرض کنید پیشنهاد میشود تا روش های حل مختلف را امتحان کنید تا متوجه شوید چه چیزهایی می توانند در حل نگران کننده باشند!
برای این مساله ما از یک روش حل مرتبه ی اول استفاده می کنیم.
Main Menu > Design Opt > Method / Tool...
در پنجره ی "Specify Optimization Method"، گزینه ی "First-Order" را انتخاب کنید.
بر روی گزینه ی "OK" کلیک کنید.
سپس این موارد را وارد کنید: بیشترین تکرارNITR = 30، درصد اندازه ی هر گام SIZE = 100، اندازه ی درصد پیشروی: DELTA = 0.2
توجه: اهمیت موارد بالا از این قرار است:
NITR: بیشترین تعداد تکرار که مقدار اولیه ی آن10 است.
SIZE: به اندازه ی هر گام جستجو اعمال می شود و اندازه ی اولیه ی آن 100%است.
DELTA: درصد مقدار پیشروی که به متغیر های طراحی اعمال می شود و برای محاسبه ی شیب از آن استفاده می شود. مقدار اولیه ی آن 0.2% است.
به راه انداختن(RUN) بهینه سازی:
Main Menu > Design Opt > Run...
در پنجره ی "Begin Execution of Run" تایید کنید که فایل های آنالیز(روش یا نوع) و بیشترین تکرار درست هستند.
بر روی گزینه ی "OK" کلیک کنید.
حل یک مساله ی بهینه سازی می تواند تا قبل از همگرایی حل ادامه یابد. این مساله در زمانی حدود 15 دقیقه و با 19 بار تکرار انجام شد.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.