۱۹

پیشنیازی فعالیت ها در زمان بندی پروژه در گمز

سوالی که تقریبا برای همه ی ما پیش می آید.
◀️ لحاظ کردن پیش نیازی فعالیت ها یا پروژه ها در گمز

فرض کنیم یک پروژه داریم که به تعدادی فعالیت تفکیک می شود. تعدادی از این فعالیت ها پیش نیاز فعالیت های دیگر هستند. مثلا تا فعالیت ۴ به طور کامل انجام نشود، فعالیت ۶ امکان شروع نداشته باشد. این پیش نیازی را می توان با set و یا table در گمز تعریف کرد. که پیشنهاد گمزبوک استفاده از حالت دوم است.
رویه به این شکل است. (فرض کنیم که i فعالیت داریم)
۱- تعریف مجموعه ها
ابتدا باید مجموعه ها تعریف شوند.

sets
i/1*4/;
alias(i,j);

2- تعریف جدول پیش نیازی

pred

 

به عنوان مثال این جدول نشان می دهد که فعالیت ۲ پیش نیاز فعالیت ۳ و ۴ است.
۳- استفاده در محدودیت ها
حال تنها کاری که باید بکنیم این است که در محدودیت هایی که شرط پیش نیازی فعالیت i,j آورده شده است، با استفاده از دستور دلار$ این پیش نیازی را قید کنیم.
مثال:

c1(i,j)$pr(i,j)... c(i)=L=s(j);

19 دیدگاه در “پیشنیازی فعالیت ها در زمان بندی پروژه در گمز

  1. سلام خسته نباشید
    من یک شبکه ای از فعالیت‌ها دارم با ۶ گره که زمان اجرای فعالیت‌ها با (t(i,j نشان داده شده. میخوام در گمز این داده ها رو وارد کنم که مثلا اگر از گره یک به گره دو کمان داشته باشیم `پس زمان اجرای فعالیت (t(1,2 مقدار ۱۰ است این رو چطوری در گمز میتونم بنویسم؟

    • سلام
      شما t رو اول بیاین با table تعریف کنین. بعد یه arc تعریف کنین که معرف کمان باشه. بعد تو محدودیت ها هر جا لازم بود t رو استفاده میکنین. وقتی شرط arc رو هم لحاظ میکنین، محدودیت و t فقط برای i,j هایی که arcشون برابر با ۱ هست لحاظ میشن.

  2. سلام
    من برای خطی کردن تابع هدفی که حاصل ضرب دو متغیر صفر و یکی x(i,j) & x(kl) d یک Yijkl باینری تعریف کردم.منتها ارور ۱۴۸ و ۱۴۹ میده. برای محدودیت ها هم این ارور رو میده.محدودیت دقیقا همون محدودیت مدل تخصیصه که روی Xij یک سیگمای تک اندیسه که فقط روی j یا i هست.اما ارور میده.ممنون میشم شیوه صحیحش رو بفرمایید.
    اینم قسمت هایی از کدمه

    set i workshops/a,b,c,d,e,f/;
    Alias(i,k);
    set j salons/1*6/;
    Alias(j,l);
    Binary Variable
    X(i,j) Assignment workshop i to salon j;
    
    Binary Variable
    Y(i,j,k,l) Xij * Xkl  ;
             returnback..z=e=sum((i,j,k,l),C(j,l)*V(i,k)*Y(i,j,k,l));
             linearation..Y(i,j,k,l)=g=(X(i,j)+100000((X(k,l)-1));
             assignment1..sum(i,X(i,j)))=e=n;
             assignment2..sum(j,X(i,j)))=e=n;
    
  3. سلام و وقت بخیر خدمت شما
    آقا سایتتون عالیه.همین که جواب کامنتا رو با حوصله میدید حرف نداره خیلی ممنونم.خاستم تشکر کنم بابت سایتتون
    کلا بگم : پشماااااااااام ریخت حاجی

  4. با عرض سلام و ادب

    یک شبکه پروژه داریم که روابط پیشنیازی نیز مابین آنها حاکم است رویداها شروع و پایان فعالیت ها به ترتیب به صورت i و j هستند ( مرتبط با فعالیت های ij ) از آنجا که مجموعه ما به صورت m:1,2,…i,….,j,….M در مقاله مورد بررسی تعریف شده است و اینکه یکی از توابع هدف مساله شامل حداقل کردن زمان کل پروژه Ym (وای اندیس ام کوچک) می باشد که آن را به صورت حداقل کردن آخرین رویداد شبکه پروژه نیز نشان می دهند.
    ممنون می شوم دوست گرامی در خصوص تعریف مجموعه های حاضر و نوع قید روابط پیش نیازی راهنمایی نمائید.

    • سلام
      شما برای M نیازی نیست چیزی تعریف بکنید.
      i رو تعریف کنین به عنوان مجموعه، j رو هم بهش آلیاس کنین.
      y(i رو تعریف کنین به عنوان متغیر پیوسته.
      توی تابع هدف به جای y(m بنویسین. y(‘i10’) یا بنویسین:

      y(i)$(ord(i) = card(i));
      

      فرض کردیم که ۱۰ تا فعالیت داشته باشیم.

  5. با سلام خدمت دوستان
    بنده یک سئوال تخصصی داشتم و آن اینکه در مدلسازی زمانبندی کارگاهی انعطاف پذیر چگونه می توان نحوه توالی و تخصیص ماشین ها(با زمان های پردازش مختلف) را کد کرد بعنوان مثال: اگر job1 دارای ۵ عملیات(O) باشد و ۴ ماشین(M) داشته باشیم و ترتیب عملیات روی ماشین ها بصورت زیر باشد: (O11) یعنی عملیات اول روی ماشین اول
    O11-O22-O33-O42-O54
    دقت کنید که عملیات ۲ و ۴ روی ماشین ۲ پردازش شده اند.
    اگر نمونه فایل کد گمز در زمینه FJS داشته باشید و برام ارسال کنید. بسیار خوشحال خواهم شد.
    پیشاپیش از راهنمائی هایتان سپاسگزارم.

  6. با سلام و عرض ادب
    در مورد مقایسه فراابتکاری مدل های چندهدفه با گمز یه سوال داشتم
    چه جوری میشه جبهه پارتو فراابتکاری رو با گمز در ابعاد کوچک برای مقالات مقایسه کرد؟ در گمر هم میشه جبهه پارتو داشت؟ بخ چه نحوی ممکنه برای مدل چند هدفه در گمز این کارو کرد؟ ممنون میشم که وقت میزارید.

    • سلام
      بله میشه داشت. از روشایی نظیر محدودیت eps میشه استقاده کرد.
      برا مقایسه فقط روند از روی نمودار با هم مقایسه میشن.

  7. مهندس در این کد که مربوط به زمانبندی قطعات هست z متغیر صفر ویک هست.بعداز حل در جواب تعداد یک های بیشتری از تعداد عملیات های ورودی را نشان می دهد ؟

    Equ10(j,o,o1,i,i1) $ (ord(o)<=3 and ord(o1)=ord(o)+1)      ..             CT(j,o1,i1)- CT(j,o,i)=g=Tj(j,o1,i1) ;
    Equ11(j,j1,o,o1,i) $ (ord(j)ord(j1)and ord(o)ord(o1))  ..             CT(j1,o1,i)- CT(j,o,i)+A*(1-Z(j,i,o,o1))=g=Tj(j,o,i) ;
    Equ12(j,j1,o,o1,i) $ (ord(j)ord(j1)and ord(o)ord(o1))  ..             CT(j,o,i)-CT(j1,o1,i)+A*(Z(j,i,o,o1))=g=Tj(j1,o1,i) ;
    Equ13(j,o,i)                                               ..             CT(j,o,i)=g=Tj(j,o,i);
    
    • سلام
      اینو دیگه باید تحلیل کنین و بنده متاسفانه نمیتونم کمکی بکنم. قطعا یک اشتباه در مدلسازی یا کد نویسی وجود داره.

  8. با سلام و احترام
    نمونه ای از زمانبندی پروژه با فعالیت های چند حالته در مسائل است که توی این مدل علاوه بر محدودیت های پیش نیازی که توضیحش رو دادید، یک یا چند فعالیت می توانند به شیوه های دیگری(مثلا دستی یا ماشینی) نیز انجام شوند که منطقا زمان آنها متفاوت است. چند حالته بودن فعالیت ها رو چطور برای گمز تعریف کنیم با توجه به اینکه هدف مسئله حداقل کردن زمان اتمام پروژه است و اینکه منطقا یک شیوه انجام فعالیت از بین حالت های مختلف آن انتخاب میشه؟ یک سوال دیگه هم داشتم . بحث محدودیت منابع رو چطور وارد زمان بندی پروژه در گمز بکنیم. ممنون میشم راهنمایی کنید.

    • سلام
      برای حالت مختلف کافیه که جاهایی که لازمه (برای ورودی های و یا متغیرها) یک اندیس m اضافه کنین. که m حالات مختلف انجام هست و با دستور set تعریف میشه. سوال دوم رو هم بهش میگن RCPSP
      این یه مقاله مفید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *