لینک دانلود و خرید پایین توضیحات
فرمت فایل word و قابل ویرایش و پرینت
تعداد صفحات: 41
بهینه سازی منبع با استفاده از شبیه سازی ترکیب یافته و الگوریتم ژنتیک
خلاصه
این مقاله، توسط ترکیب کردن فلوچارت ( نمودار گردش کار) براساس ابراز شبیه سازی با یک روش بهینه سازی ژنتیک قدرتمند، یک روش را برای بهینه سازی منبع نشان می دهد.روش ارائه شده، کمترین هزینه،و بیشترین بازده را ارائه میدهد، وبالاترین نسبت سودمندی را در عملکردهای ساخت و تولید فراهم می آورد. به منظور یکپارچگی بیشتر بهینه سازی منبع در طرح ریزی های ساخت،مدلهای شبیه سازی بهینه یافته (GA) الگوریتم های ژنتیکی گوناگون،عموماً با نرم افزارهای مدیریت پروژه بکار رفته شده ادغام می شوند. بنابراین، این مدلها از طریق نرم افزار زمان بندی فعال می شوند و طرح را بهینه می سازند.نتیجه، یک ساختار کاری تقلیل یافته سلسله مراتبی در رابطه با مدلهای همانندی سازی بهینه یافته GA است. آزمایشات گوناگون بهینه سازی با یک سیستم در دو مورد مطالعه، توانایی آن را برای بهینه ساختن منابع در محدوده محدودیتهای واقعی مدلهای همانند سازی آشکار کرد. این الگو برای کاربرد بسیارآسان است و می تواند در پروژه های بزرگ بکار رود. براساس این تحقیق، همانندسازی کامپیوتر وا لگوریتمهای ژنتیک ،می توانند یک ترکیب موثر برای بهبود دادن بازده و صرفه جویی در زمان وساخت و هزینه ها باشند.
مقدمه
این امر کاملاً آشکار شده است که بازده کاری پایین ،عدم آموزش، و کاهش تعداد معاملات، چالشهای بحرانی هستند که صنعت ساختمان( ساخت) با آن روبرو خواهد شد.
بهره دهی یا قدرت تولید در رابطه با مطالعه ها، برای مثال،دلالت بر زمان بیکاری (بیهودة) کاربران در ساخت(تولید) دارد که این زمان از 20 تا 45% متغیر است. این اتلاف وقت ، که از طریق منابع ناکارآمد و طرح ریزیهای غیربسنده( نامناسب) ناشی می شود، تاثیر و پیامد فوق العاده ای در هزینه های ساخت دارد. همچنین، پیماناکاران که مهارتهای مدیریتی منابع کارآمد را ندارند، این رقابت کردن در بازارهای ساخت جهانی که آنها د ر آن فرصتها بسیاری را خواهند یافت، برای آنها کاری بس دشوار خواهد بود.
با ایجاد تجهیزات و نیروی کار برای امر ساخت و تولید، این امر آشکار است که تدبیرهای کاربرد نیروی کار متناوب و کاربرد بهتر از منابع کاری موجود، به
لینک دانلود و خرید پایین توضیحات
فرمت فایل word و قابل ویرایش و پرینت
تعداد صفحات: 23
مقدمه:
بدون شک یکی از مهمترین دغدغه های مدیران آزمایشگاه ها، اجراء استاندارد کلیه فرایندهای آزمایش میباشد و بسیاری در جهت تحقق اهداف مزبور منابع زیادی در اختیار قرار می دهند. ولی متأسفانه در بررسی نهایی نتایج استاندارد سازی مطلوب نبوده و بسیاری از آزمایشگاه ها در اجراء مدیریت جامع کیفیت موفق نگردیده اند.
در این مقاله به بهینه سازی در مدیریت آزمایشگاه و بررسی علل عدم تحقق TQM اشاره میشود.
روش اجراء:
آزمایشگاه به عنوان یک مرکز خدمات تخصصی نیازمند مدیریت صحیح در کلیه فرآیندهای جاری میباشد و زمانیکه فرد به اهمیت نتایج آزمایش در روند تشخیص و درمان بیمار آگاه می باشد، به ارزشمندی مدیریت بهینه در آزمایشگاه واقف می گردد.
در بررسی جامع به مدت 3 سال (1381 الی 1383) در آزمایشگاه بیمارستان آیت الله کاشانی تهران مدیریت جامع کیفیت اجراء و نتایج قابل قبولی کسب گردید.
با اجراء برنامه TQM در سال 1381 نتایج موردنظر محقق نگردید. در بررسی به عمل آمده علت آن عدم بسترسازی مناسب جهت تحقق اهداف برنامه مشخص گردید.
برنامهریزی مدیریت جهت استانداردسازی در آزمایشگاه زمانی محقق می گردد که بسترسازی مناسب جهت اجراء برنامه های TQM وجود داشته باشد و در حقیقت عدم موفقیت برنامه های فوق، عدم توجه به موارد مذکور میباشد. در بسترسازی مناسب مدیریت کیفیت نکاتی حائز اهمیت میباشد که مدیران کمتر به آن توجه نموده و این نکات ارزشمند از نگاه مدیران دور مانده است.
در برنامهریزی انجام شده کلیه مواردی که باعث اختلال و جلوگیری اجراء برنامه TQM می گردد، مورد مطالعه قرار گرفته، راهکارهای اجرایی آن جهت برطرف نمودن مشکلات موجود تدوین شده، کلیه موارد اجراء گردیده است و یک سیستم نظارتی کنترل کامل بر اجراء آن را بر عهده دارد. با رفع موانع موجود بستر مناسبی جهت برنامه TQM ایجاد شده است.
نکات ارزشمند در بسترسازی مدیریت جامع کیفیت به شرح ذیل بیان می گردد.
آموزش (Education) :
آموزش به عنوان یکی از ارکان اصلی سیستم تأثیر مستقیم در کیفیت خدمات ارائه شده دارد. مراکز درمانی که آموزش را به عنوان یکی از برنامه های عملیاتی خود در نظر گرفته و اجراء می نمایند فعالیت با دقت و صحت بالاتری ارائه می دهند.
در عبارت دیگر:
«آموزش کار»
آموزش به عنوان یکی از ارکان فعالیت آزمایشگاه محسوب شده و یک فعالیت جانبی و سلیقه ای نمی باشد. آموزش در آزمایشگاه را میتوان به آموزش مداوم، مقطعی و سایر گروه های پزشکی تقسیم بندی نمود.
الف- آموزش مداوم: در این نوع آموزش برنامه روزانه، هفتگی، ماهانه، سالیانه و به طور اتفاقی Random در صورت نیاز وجود دارد. با این برنامه پرسنل با آموزش عجین شده و آموزش را جزئی از برنامه کاری خود محسوب می نمایند. زمینه های مختلف و جنبه های گوناگون را میتوان در برنامه آموزش مداوم گنجانید که مهمترین آنها به شرح ذیل میباشد.
مرور اصول اولیه آزمایشگاه (Review)
مرور مطالب عملی در آزمایشگاه (Practical)
کارگاههای استانداردسازی (Standard workshop)
معرفی آزمایشات جدید (new test)
بحث (Standard Operation Procedure) SOP
10 صفحه
قابل ویرایش
فهرست مطالب
مقدمه :
الف) نقش مهم استادان و آموزگاران در بهبود تدریس
ب) نقش وسایل کمک آموزشی در ارتقای تحصیل
پ) نقش علاقه به رشته مورد نظر دانش آموز
ت) نقش فناوری اطلاعات و ارتباطات
ث) نقش والدین در امر آموزش
ج) نقش مدرسه و آموزشگاه درآموزش
چ) نقش انگیزه ی دانش آموز در آموزش
نتیجه گیری:
لینک دانلود و خرید پایین توضیحات
فرمت فایل word و قابل ویرایش و پرینت
تعداد صفحات: 6
روشهای بهینه کردن قفل گذاری
1- استفاده از Special ID در قفل سخت افزاری
Special ID یک رشته کارکتری است که در بخشی از حافظه قفل نوشته میشود، با توجه به اینکه هر Special ID به طور انحصاری به شخص یا شرکت خریدار قفل اختصاص داده میشود بنابراین هیچگاه Special ID ثبت شده برای یک شرکت به شخص یا شرکت دیگری اختصاص نمی یابد. و اگر شخصی درخواست یک Special ID که متعلق به شرکت دیگری است را داشته باشد باید مورد تایید آن شرکت قرار گیرد. قفلهایی که دارای Special ID باشند :
1. Reset نمیشوند.
2. اگر نرم افزاری با این نوع قفل ها، قفل گذاری شود و Special ID در کد نرم افزار چک شود آن نرم افزار با قفل هایی که دارای اطلاعات یکسان با قفلهای اصلی باشند اجرا نمیگردد. (قفلهایی که اطلاعات قفل دیگری را روی آنها قرار داده شود).
Special ID یک رشته فقط خواندنی بوده که توسط کاربر قفل قابل تغییر نیست و فقط در شرکت سازنده قابل نوشتن روی قفل میباشد. بنابراین اگر شخصی به هر دلیلی از کلمه عبور یک قفل سخت افزاری (که دارای Special ID نباشد) مطلع باشد به طور مثال به راحتی میتواند با تهیه یک قفل جدید خام و قرار دادن کلمه عبور و اطلاعات قفل قبلی روی آن، نرم افزار قفل گذاری شده را با قفل جدید (کپی شده) اجرا کرده و استفاده کند. اما اگر قفل قبلی دارای Special ID باشد (با توجه به اینکه Special ID در کد نرم افزار چک شده باشد) نرم افزار قفل گذاری شده با قفل کپی شده اجرا نمیشود.
2- چک کردن قفل در درون کد نرم افزار بدون Timer
برای بالاتر رفتن امنیت نرم افزار سعی کنید از Timer Component برای چک کردن قفل استفاده نکنید. زیرا یافتن رویداد OnTimer برای یک Cracker کار بسیار ساده ای بوده، و قادر هستند آنها را به راحتی حذف کنند. پیشنهاد میشود برای انجام روند قفل گذاری در قسمتهای مختلف نرم افزار دستورات ارتباط با قفل تایپ شده و از Function یا Procedure استفاده نگردد. در صورتیکه متدی برای چک قفل نوشته میشود نام آن طوری انتخاب شود که Cracker را گمراه کند.
توجه : در صورتیکه میخواهید در روند قفل گذاری پیغام خاصی را نمایش دهید متن پیغام را طوری انتخاب نمایید که به هیچ عنوان نشان دهنده روند قفل گذاری نباشد.
3- چک کردن قفل به صورت تصادفی
میتوانید به جای استفاده از Timer از این روش استفاده نمایید، به این ترتیب که در لابه لای کدهای یک متد یک عدد تصادفی را تولید نموده (بین 1 تا 10) و اگر این عدد مساوی عدد مورد نظر شما بود چک قفل انجام شود. این عمل به این دلیل است که با هر بار اجرای متد قفل چک نشده و چک کردن قفل به صورت کاملا تصادفی انجام میگیرد و همچنین سرعت سیستم کاهش نمی یابد :
توجه داشته باشید که این روش باید در قسمتهای مختلف برنامه مورد استفاده قرار گیرد. برای مثال هنگام باز شدن فرمهای اصلی و کلیک کردن button ها.
4- ذخیره کردن داده های مهم نرم افزار در قفل
در اغلب نرم افزارها مقادیری (Database Connection String و Database Password) وجود دارد که برای نرم افزار بسیار مهم و حیاتی بوده و نرم افزار بدون دسترسی به آن مقدار قابل اجرا نخواهد بود. برای بالا بردن امنیت نرم افزار خود، پیشنهاد میگردد مقادیر مهم را در قفل ذخیره نموده و هنگام اجرای برنامه در زمان چک کردن قفل آن مقدار را از قفل خوانده و استفاده نمایید. در این حالت حتی اگر Cracker موفق شود روتین های چک قفل را از درون فایل اجرایی حذف نماید باز هم نرم افزار بدون آن مقدار قابل اجرا نخواهد بود.
5- چک کردن قفل درون یک Thread
این روش، روشی بسیار مفید در زمانیکه برنامه نویس بخواهد قفل سخت افزاری را به صورت مداوم چک کند بدون اینکه در کار User Interface نرم افزار خللی وارد شود. در این روش توصیه میشود برای امنیت بالاتر از دو یا چند Thread استفاده گردد و هر کدام از آنها با روشی متفاوت عملیات چک کردن قفل را در یک حلقه انجام دهد.
مهندسی معکوس (Reverse Engineering)
مجموعه ای حساس از تکنیکها و ابزارها برای فهمیدن اینکه محتوای یک نرم افزار شامل چه چیزهایی میباشد. به عبارت دیگر عمل تجزیه و تحلیل یک سیستم برای مشخص کردن مولفه های سیستم و رابطه متقابل آنها به منظور نمایش سیستم به شکلی دیگر یا در سطحی بالاتر میباشد. این نوع تکنیکها باعث میشود تا ساختار یک نرم افزار را نمایان نموده و راههای عملکرد آن و همچنین ویژگیهایی که طبق آن حرکت میکند را مشخص کنیم. در واقع مهندسی معکوس زمانیکه شخصی کد شخص دیگری را کاوش کند نیز اتفاق می افتد.
بحث در مورد علم مهندسی معکوس از سال 1990 میلادی آغاز شده و در بعضی مجله های علمی مثل IEEE Software به صورت یک طبقه بندی علمی از آن صحبت میشود.
آیا شما مهندسی معکوس را نادیده میگیرید؟
فرض کنید شما نرم افزاری را توسعه داده و به فروش رسانده اید! آیا نمیخواهید دیگران به حقوق کپی (Copyright) شما احترام بگذارند؟ این بحث معمولا" از معانی منفی عبارت مهندسی معکوس به خصوص در صنعت نرم افزار سازی شروع میشود.
به هر حال تکنیکهای مهندسی معکوس راه هایی هستند برای تولید کننده ها و مصرف کننده های نرم افزار که با مقوله عرضه اقتصادی در یک زنجیره قرار میگیرند. در نظر داشته باشید که این ابزار (راهکار) به طور ذاتی خوب یا بد نیست، موضوع قابل توجه این است که این ابزار در چه راه هایی مورد استفاده قرار میگیرد. مهندسی معکوس به ویژه در نرم افزارهای پیشرفته برای اهداف خاص مورد استفاده قرار میگیرد :
- یافتن کدهای مخرب: تعدادی از تکنیکهای ویروس یابی از مهندسی معکوس برای دستیابی به ساختار و عملکرد این کدهای مخرب استفاده میکنند. به وسیله این تکنیکها نرم افزارهایی تولید میشود که برای مبارزه با ویروس های کامپیوتری مورد استفاده قرار میگیرد.
- کشف خطاهای ذاتی (Bug) و نقص های غیر منتظره: حتی بهترین سیستمهای نرم افزاری میتواند دارای خطا باشد که با استفاده از مهندسی معکوس میتوان آنها را پیدا کرده و رفع نمود (Debug).
نرم افزارهای سطح پایین
این نوع نرم افزارها شامل ابزارهای توسعه از قبیل Compiler، Linker، Debugger، سیستم های عامل (Operating System) و زبان های برنامه نویسی سطح پایین مثل Assembly میباشد. در واقع لایه ای است که جداکننده توسعه دهندگان نرم افزار و برنامه های کاربردی از سخت افزار میباشد. اگر شخصی بخواهد در زمینه مهندسی معکوس مهارت به دست آورد باید فهم کاملی نسبت به نرم افزارهای سطح پایین داشته باشد.
زبان Assembly
این زبان پایین ترین سطح زبان های برنامه نویسی میباشد که به طور باورنکردنی در مهندسی معکوس مورد استفاده قرار میگیرد. اگر یک نرم افزار عملی را انجام دهد آن عمل باید به زبان Assembly قابل رویت باشد. مبحث مهم دیگر، کد ماشین است که همراه با زبان Assembly دو نوع تعریف مختلف از یک چیز میباشد. کد ماشین چیزی نیست جز رشته ای از بیتها و شامل لیستی از دستورات (در واقع نمایش متنی آن بیتها)، که توسط CPU باید اجرا شود.
Compiler و Machine Code
با توجه به اینکه CPU فقط قادر است کدهای ماشین را اجرا کند با استفاده از Compiler کدهای زبانهای سطح بالا به زبان ماشین تبدیل میشوند.
زبانهایی مثل C++ و Pascal دارای این نوع Compiler هستند.
Virtual Machine و Byte Code
زبانهایی مانند Java دارای کامپایلری هستند که به جای Object Code (کدهایی که Compiler آنها را تولید میکند)، Byte Code تولید میکنند. Byte Code ها شبیه به Object Code ها هستند با این تفاوت که توسط یک برنامه (به جای CPU) Decode میشوند. به این برنامه Virtual Machine گفته میشود. یکی از مزایای این نوع برنامه ها مستقل بودن آنها از محیط اجرا میباشد. مبحث مهندسی معکوس در مورد Byte Code ها نسبت به کدهای ماشین کاملاً متفاوت بوده و در مقایسه با آن ساده تر میباشد.
شروع عملیات مهندسی معکوس
برای شروع، کار به دو بخش کلی تقسیم میگردد:
1- System Level: داشتن دیدی کلی از تمام برنامه.
2- Code Level: به دست آوردن اطلاعات کامل و جزیی روی قسمتی از کد برنامه.
ابزارهای System Monitoring
برای بخش System Level ابزارهایی نیاز است که به وسیله آنها اطلاعات کلی در مورد برنامه (فایل اجرایی) را در اختیار قرار میدهد که معمولاً این اطلاعات توسط سیستم عامل ایجاد میگردد برای مثال مشخص میگردد که نرم افزار با چه ابزاری توسعه داده شده یا با چه ابزاری Protect شده است.
ابزارهای Code Level
Disassembler
ابزاری است که یک فایل اجرایی را دریافت نموده و یک فایل متنی که شامل کدهای زبان Assembly که مربوط به قسمتهای مختلف برنامه است را تولید میکند. Disassembler های پیشرفته یکی از ابزارهای کلیدی مهندسی معکوس به شمار میروند.
Debugger
Debugger برنامه ای است که به توسعه دهنده (Developer) اجازه می دهد برنامه را در حال اجرا مشاهده نماید. Debugger یکی از مهمترین ابزارهای مهندسی معکوس بوده که از یک Disassembler برای برگرداندن کدها به زبان اسمبلی استفاده مینماید.
زمانیکه یک فایل اجرایی با استفاده از یک Debugger باز میشود حالت Register های CPU، محتویات حافظه و Stack های فعال قابل مشاهده هستند.
ویژگی های مهم Debugger ها :
Disassembler قدرتمند: یکی از ویژگیهای مهم و لازم برای هر Debugger بوده به طوریکه محتوای فایل اجرایی به وضوح قابل مشاهده میباشد. همچنین متدهای برنامه قابل تجزیه و تحلیل بوده و Trace کردن آنها ساده میشوند.
لینک دانلود و خرید پایین توضیحات
فرمت فایل word و قابل ویرایش و پرینت
تعداد صفحات: 32
بهینهسازی و معرفی انواع مختلف روشهای آن
چکیده
بهینهسازی یک فعالیت مهم و تعیینکننده در طراحی ساختاری است. طراحان زمانی قادر خواهند بود طرحهای بهتری تولید کنند که بتوانند با روشهای بهینهسازی در صرف زمان و هزینه طراحی صرفهجویی نمایند. بسیاری از مسائل بهینهسازی در مهندسی، طبیعتاً پیچیدهتر و مشکلتر از آن هستند که با روشهای مرسوم بهینهسازی نظیر روش برنامهریزی ریاضی و نظایر آن قابل حل باشند. بهینهسازی ترکیبی (Combinational Optimization)، جستجو برای یافتن نقطه بهینه توابع با متغیرهای گسسته (Discrete Variables) میباشد. امروزه بسیاری از مسائل بهینهسازی ترکیبی که اغلب از جمله مسائل با درجه غیر چندجملهای (NP-Hard) هستند، به صورت تقریبی با کامپیوترهای موجود قابل حل میباشند. از جمله راهحلهای موجود در برخورد با این گونه مسائل، استفاده از الگوریتمهای تقریبی یا ابتکاری است. این الگوریتمها تضمینی نمیدهند که جواب به دست آمده بهینه باشد و تنها با صرف زمان بسیار میتوان جواب نسبتاً دقیقی به دست آورد و در حقیقت بسته به زمان صرف شده، دقت جواب تغییر میکند.
مقدمه
هدف از بهینهسازی یافتن بهترین جواب قابل قبول، با توجه به محدودیتها و نیازهای مسأله است. برای یک مسأله، ممکن است جوابهای مختلفی موجود باشد که برای مقایسه آنها و انتخاب جواب بهینه، تابعی به نام تابع هدف تعریف میشود. انتخاب این تابع به طبیعت مسأله وابسته است. به عنوان مثال، زمان سفر یا هزینه از جمله اهداف رایج بهینهسازی شبکههای حمل و نقل میباشد. به هر حال، انتخاب تابع هدف مناسب یکی از مهمترین گامهای بهینهسازی است. گاهی در بهینهسازی چند هدف به طور همزمان مد نظر قرار میگیرد؛ این گونه مسائل بهینهسازی را که دربرگیرنده چند تابع هدف هستند، مسائل چند هدفی مینامند. سادهترین راه در برخورد با این گونه مسائل، تشکیل یک تابع هدف جدید به صورت ترکیب خطی توابع هدف اصلی است که در این ترکیب میزان اثرگذاری هر تابع با وزن اختصاص یافته به آن مشخص میشود. هر مسأله بهینهسازی دارای تعدادی متغیر مستقل است که آنها را متغیرهای طراحی مینامند که با بردار n بعدی x نشان داده میشوند.
هدف از بهینهسازی تعیین متغیرهای طراحی است، به گونهای که تابع هدف کمینه یا بیشینه شود.
مسائل مختلف بهینهسازی به دو دسته زیر تقسیم میشود:
الف) مسائل بهینهسازی بیمحدودیت: در این مسائل هدف، بیشینه یا کمینه کردن تابع هدف بدون هر گونه محدودیتی بر روی متغیرهای طراحی میباشد.
ب) مسائل بهینهسازی با محدودیت: بهینهسازی در اغلب مسائل کاربردی، با توجه به محدودیتهایی صورت میگیرد؛ محدودیتهایی که در زمینه رفتار و عملکرد یک سیستم میباشد و محدودیتهای رفتاری و محدودیتهایی که در فیزیک و هندسه مسأله وجود دارد، محدودیتهای هندسی یا جانبی نامیده میشوند.
معادلات معرف محدودیتها ممکن است به صورت مساوی یا نامساوی باشند که در هر مورد، روش بهینهسازی متفاوت میباشد. به هر حال محدودیتها، ناحیه قابل قبول در طراحی را معین میکنند.
به طور کلی مسائل بهینهسازی با محدودیت را میتوان به صورت زیر نشان داد:
Minimize or Maximize : F(X) (1-1 )
Subject to : I = 1,2,3,…,p
j = 1,2,3,…,q
k = 1,2,3,…,n