برنامه EvoPic را می‌توان به عنوان جلوه‌ای از هنرهای تکاملی (Evolutionary Arts) به حساب آورد. در این نوع برنامه‌ها هدف، تولید یک اثر هنری مانند تصویر یا صوت، با استفاده از الگوریتمهای هوشمندی است که از استراتژی یا نظریه تکامل تدریجی (Evolution) برای رسیدن به هدف مسئله استفاده می‌کنند.

الگوریتمهای تکاملی، مجموعه قوانینی هستند که شیوه شبیه‌سازی فرآیند تکامل طبیعت را به وسیله نرم‌افزارهای کامپیوتری تعریف می‌کنند.
این رده از الگوریتمها، از آن جهت حایز اهمیت هستند که معمولا قادرند تا مسائل پیچیده را در زمانهای بسیار کمتری نسبت به روشهای سیستماتیک و اصولی حل کنند.

به طور کلی در روشهای سیستماتیک، برای حل مجموعه مسائلی که حاوی فضای جستجوی بسیار گسترده‌ای هستند (مثلا فضایی که برای جستجوی تمام حالات آن، به اجرای n فاکتوریل دستور یا تکرار نیاز باشد) ممکن است که الزاما به جستجوی تمام حالات ممکن بپردازیم، اما الگوریتمهای تکاملی، مشخصا با هدف اجتناب از همین جستجوی فراگیر طراحی و ابداع شده‌اند.

– اما این فرآیند تکامل تدریجی، چگونه در یک نرم‌افزار کامپیوتری پیاده‌سازی می‌شود؟
+ پاسخ، روشن است. استفاده از عامل تصادف (Randomness).

– اما استفاده از تصادف چگونه ممکن است که به راه‌حلی صحیح و بهینه بی‌انجامد؟!!
+ باز هم پاسخ روشن است. با جهت‌دهی و هدفمند کردن رویداد تصادف، که به آن تکامل می‌گویند.

عموما روال کار تمامی الگوریتمهای تکاملی به این صورت است که در ابتدا با استفاده از عامل تصادف، یک حدس اولیه کاملا اتفاقی (بنا به مصلحت ممکن است که مطلقا تصادفی هم نباشد) ایجاد می‌شود.
پس از آن با اجرای فرآیند تکامل تدریجی و ایجاد تغییراتی تصادفی در حدس اولیه، بهبود کیفیت حدس اولیه آغاز شده و پس از گذشت مدتی، حدس تصادفی به یک راه‌حل تبدیل می‌شود.

سلسله الگوریتمهای ژنتیکی، معروف‌ترین نماینده الگوریتمهای تکاملی هستند که به دلیل اثبات کارایی و کارآمد بودنشان در حل مسائل پیچیده، از اهمیت بالایی برخوردار هستند.
در این برنامه (EvoPic) هم من با استفاده از الگوریتم ژنتیک پایدار (Steady-State)، به طراحی سیستمی پرداخته‌ام که می‌تواند تصاویر ورودی را با استفاده از ترسیم کاراکترهای مختلف (با قلمها و زبانهای دلخواه) در صفحه، شبیه‌سازی کند. البته اولین بار ایده این کار توسط Roger Alsing پیاده‌سازی شده است، اما برنامه من در بیشتر جهات با ایده وی تفاوت دارد. (خصوصا که به دلیل سرعت بیستر، از روش steady-state و عدم تغییر مستقیم کروموزومهای والد استفاده کرده‌ام)

برنامه EvoPic قابلیت کار با تمام قلمهای Unicode را داشته و حتی می‌توان محدوده کاراکترهای مورد استفاده در آن را به صورت دلخواه تعیین نمود. (مثلا فقط اعداد، یا علائم نگارشی و غیره)

در زیر برخی از تصاویر ساخته شده به وسیله EvoPic 1.0 را مشاهده می‌نمایید:

EvoPic 1.0 samples by www.mshams.ir
EvoPic 1.0 samples by www.mshams.ir
EvoPic 1.0 samples by www.mshams.ir

البته به خاطر داشته باشید که این برنامه با الگوگیری از الگوریتمهای تکاملی طراحی شده است، بنابراین شبیه‌سازی شدن تصویر، مدت زمانی به طول می‌انجامد.

نکته دیگری که باید به آن توجه داشت، نوع قلم و زبان مورد استفاده است. با بررسی‌هایی که انجام شد، متوجه شدم که برخی از قلم‌ها، به دلیل شکل کاراکترهای آنها ذاتا استعداد بیشتری برای پر کردن گوشه‌ها و زاویه‌ها داشته و در نتیجه کیفیت تصویر حاصل از آنها بهتر خواهد بود. (البته استفاده همزمان از دو قلم یا زبان متفاوت هم امکان پذیر است)

به عنوان مثال، سه تصویر زیر با قلم Tahoma فارسی و انگلیسی شبیه‌سازی شده‌اند. آیا می‌توانید حدس بزنید که هر کدام از این تصاویر، متعلق به چه کسی/شخصیتی هستند؟!؟

EvoPic 1.0 samples by www.mshams.ir

در پایان از تمامی دوستانی که این برنامه را امتحان می‌کنند درخواست می‌کنم که اگر با استفاده از این برنامه تصویر جالبی خلق کردند، نمونه‌ای از آن را آپلود نموده و به ما هم نشان بدهند.

ضمنا در حال طراحی نسخه دیگری از این برنامه هستم که دارای امکانات بسیار زیادی در شبیه‌سازی زاویه‌ها و خطوط بوده و در نتیجه تصاویر بسیار زیباتری خلق می‌نماید. در این راستا منتظر پیشنهادها و انتقادات شما هستم.

دریافت برنامه EvoPic 1.0

پ.ن: با استفاده از دستور Import EvoPic می‌توان از قابلیت Resume در فرآیند شبیه‌سازی استفاده کرد.

Print this pageEmail this to someoneShare on Google+Share on FacebookShare on LinkedInTweet about this on TwitterShare on RedditShare on TumblrShare on StumbleUponPin on Pinterest