مقدار هیوریستیک های مربوط به هر منبع از رابطه (۴-۱) زیر محاسبه می شود :
(۴-۱) ij = ۱/price µ
مقدار هیوریستیک برای انجام کار i بر روی ماشین j برابر با عکس مقدار قیمت لازم می باشد.

میزان دنباله نیز از رابطه (۴-۲) بدست می اید :
(۴-۲) Tij = ρ.Tij + µij
فرمول بالا در حالتی صادق است که منبع در اختیار کاربر و کار دیگری نباشد.
در زیر شبه کد مربوط به الگوریتم مطرح شده است :

    1. مقداردهی اولیه فرمون ها
    1. تا زمانی که به جواب مورده نظر نرسیده ایم :
    1. مورچه های جدید ایجاد می کنیم تا جواب های جدیدی نیز حاصل شود
    1. برای تمامی مورچه ها :
    1. با توجه به مقدار دنباله, مورچه ها عملیات انجام می دهند
    1. برای هر مورچه ای که یک راه حل پیدا کرده است :
    1. فرمون آن را به روز رسانی می شود

مثال:
شکل ۴-۳ مربوط به یک جراج دو طرفه نمایش داده شده
در مثال فوق بخشی از یک حراج دو طرفه نمایش داده شده در این حراج دو کاربرو دو منبه شرکت دارند.
منبع اول قیمت درخواستی خود را ۲٫۵ اعلام می کند .( تمام قیمتها به دلار هستند)
سپس کاربر اول قیمت ۱٫۴ را پیشنهاد می دهد( بدون اطلاع از قیمت پیشنهادی منبع ) قیمتها همگی به کارگزار[۵] اطلع داده می شوند و هیچ ارتباط مستقیم اطلاع رسانی بین منابع و کاربران وجود ندارد. حال منبع۱ با توجه به اندکی صبر کرده و هیچ توافقی از جانب کارگزار گزارش نشده در می سابد که باید قیمتش را کاهش دهد. پس ( مثلا) قیمت ۵/۰ را در خواست می کند.سپس کاربر اول که پس از مدتی صبر کردن ، متوجه شده که هیچ توافقی حاصل نشده قیمتش را افزایش می دهد: ۱٫۷ . بدیهی است کهبا توجه به قیمتهای در خواستی و پیشنهادی تا بحال همچنان امکان توافق وجود ندارد. حال منبع دوم ( به صورت کاملاً خود جوش ) وارد حراجی می شود و ورود خود را با قیمت در خواستی
( والبته گران) ۳٫۶ اعلام می کند. سپسمنبع اول که باز هم پس از مدتی درنگ به بالا بودن پیشنهاد آخر خود پی برده قیمت جدید( و البته پایین تر) خود را اعلام می کند: ۱٫۸ . کاربر اول فعلاً هیچ قیمت دیدی ارائه نداده ( و احتمالاً مشغول حساب و کتاب است!) کاربردوم وارد حراجی شده و پیشنهاداول خو را برابر ۱٫۹ اعلام می کند. با توجه به بیشتر بودن قیمت وی از قیمت در خواستی منبع اول،کارگزار اعلام می کند که معامله قابل انجام است و میانگین قیمت در خواستی و پیشنهادی مربوطه را که برابر ۱٫۸۵ است به اطلاع طرفین می رساند با توجه به میانگین گیری که اتفاق افتاده، حالاهم منبع اول راضی است چون پول بیشتری نسبت به مبلغ درخواستی دریافت کرده و همکاربر دوم چون پول کمتری نسبت به قیمت پیشنهادی است پرداخت کرده)گزارش این مقاله با اعلام اطلاعات طرفین معامله و قیمت نهایی به اطلاع Console می رسد ( یا به عبارت بعتر در خروجی برنامه نمایش داده نمی شود) این گزارش همان Match1 به معنی اولین انطباق است. سپس کاربر اول که مدنی است پیشنهاد ارائه نداده با قیمتی اندکی بیش از قیمت قبلی خود که ۱٫۷ بود وارد می شود.۱٫۷۵ . حال منبع دوم که فقط یک در خواست گران قیمت ارائه داده بود بعد از مدت طولانی صبر کردن می فهمد که احتمالاً قیمتش خیلی بالا بوده و درخواست قبلی خود ( یعنی۳٫۶) را با منبع ۱٫۸ جایگزین می کند. پس از اندکی کاربر اول پیشنهاد بعدی خود را برابر ۱٫۸ ارائه می کند.( این امکان وجود دارد که کاربر اول تصمیم گرفته باشد که با توجه به زمان طولانی ای که پیشنهاد با استقبال مواجه نشده، اکنون در فاصله های زمانی کوتاه تر پیشنهادات خود را اندک اندک بالا ببرد، به عبارت بهتر پیشرفت ارائه پیشنهاد خود را بالا ببرد و در عوض تغیرات قیمتی خیلی کم داشته باشد که شاید زودتر به نتیجه برسد) با این پیشنهاد ، توافق دیگری توسط کارگزار بنام Matchz بین کاربر اول و منبع دوم گزارش می شود.
برای پیاده سازی روش ما از نرم افزار شبیه ساز GridSim [34] استفاده کردیم. این نرم افزار با زبان برنامه نویسی جاوا پیاده سازی شده است. این نرم افزار قابلیت ایجاد امکانات زیر را دارا می باشد:

    • ایجاد نود های منبع برای پردازش
    • ایجاد ماشین ها به منظور فراهم اوردن امکان پردازشی در نودها
    • امکان ایجاد یک یا چند حراج کننده و کاربر
    • امکان ایجاد انواع مدل حراج مانند مدل یک طرفه و دو طرفه

شکل ۴-۲ ساختار کلی این نرم افزار را نشان می دهد. کلاس Auction برای راه اندازی یک حراج مورد استفاده قرار می گیرد. کلاس Auctioneer نیز برای ایجاد یک حراج کننده می باشد.
برای ایجاد بسته ها از کلاس Message استفاده می شود. این بسته ها حاوی قیمت پیشنهادی کاربران است.
برای دریافت بسته ها و خواندن محتویات ان ها از کلاس AuctionObserver استفاده می شود.

شکل۴-۴٫ ساختار کلی نرم افزار GRIDSIM

۴-۳- نحوه پیاده سازی روش های ارائه شده
به منظور پیاده سازی روش ارائه شده ما از شبیه ساز GridSim که با زبان برنامه نویسی جاوا نوشته شده است استفاده کردیم. در پیاده سازی صورت گرفته ۵ کلاس وجود دارد :
کلاس مربوط به کاربر(NetUser.java)
کلاس مربوط به منابع موجود در حراج(AuctionResource.java)
کلاس مربوط به حراج کننده(Broker.java)
کلاس مربوط به پاسخ دهنده(ResponderImpl.java)
ارتباط بین کاربرها و حراج کننده ها و صاحبان منابع از طریق شبکه و لینک های شبکه ای بین ان ها برقرار می شود. طرفیت این لینک ها ۱۰۰۰ بیت بر ثانیه در نظر گرفته شده است.
زمان تاخیر ارسال ۱۰ میلی ثانیه می باشد. حداکثر مقدار فرستادن بسته ها ۱۵۰۰ بایت است.
دو راتر در شبکه موجود است. الگوریتم زمان بندی استفاده شده در راترها FIFO می باشد.
هرکدام از کاربر ها و حراج کنندگان دارای یک شناسه می باشند که با بهره گرفتن از ان ها شناخته می‌شوند.
به هر کدام از کاربرها یک حراج کننده اختصاص داده می شود که وظیفه ارسال بسته های حاوی قیمت را دارد. همچنین هر کاربر یک لیست از کارهایی که دارد را در متغیر با نوع Gridlet ذخیره می کند.
در یک مورد از پیاده سازی صورت گرفته ما سه کاربر و دو منبع در نظر گرفتیم. در هر منبع سه ماشین قرار دارد. در جدول زیر یک نمونه از حراج که با شرایط بالا صورت گرفته بررسی شده است. هزینه های پرداخت شده توسط روش مورچه ارائه شده و روش معمولی مقایسه گردیده است.

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...