۱۰۳

اجتماع مجموعه ها

پیرو درخواست تعدادی از دوستان، در این تاپیک تعریف زیر مجموعه ها و اجتماع آنها با هم را به صورت مختصر معرفی می نماییم.

همانطور که در بخش های پیشین گفته شد، تعریف یک مجموعه با دستور Set انجام می پذیرد. حال فرض کنید دو مجموعه به نام I و J وجود دارند. این مجموعه ها اگر با هم ترکیب شوند مجموعه K را تشکیل می دهند.
به عنوان مثال مجموعه I شامل {Gas,Coal,Oil} باشد. و مجموعه J شامل {Electricity,Water} باشد. و مجموعه ی K نیز اجتماع این مجموعه ها باشد.
جهت تعریف مجموعه K دو رویکرد کلی وجود دارد:

رویکرد اول:
در رویکرد اول، فرض می شود که دو مجموعه اول، مجموعه ی سوم را تشکیل میدهند، در این رویکرد مجموعه ی سوم ویژگی ها و صفات خود را از این دو مجموعه می گیرد.

Set i/Coal,Gas,Oil/
j/Electricity,Water/
K/Set.i,Set.j/

رویکرد دوم:
در رویکرد دوم، دو مجموعه ی اول زیر مجموعه ی مجموعه ی سوم محسوب می شوند. یعنی I و J زیر مجموعه ی K می باشند.

Set k/Coal,Gas,Oil,Electricity,Water/
i(k)/Coal,Gas,Oil/
j(K)/Electricity,Water/

متغیر Y(k) را در نظر بگیرید. اگر با رویکرد اول مجموعه ی K را تعریف کرده باشیم، در صورت استفاده عبارتی مانند Y(j) در مدل، برنامه ما قطعا Error خواهد داد! ولی اگر با رویکرد دوم تعریف شده باشد، عبارات Y(k) , Y(j) , Y(I) توسط GAMS منطقی تلقی خواهند شد.
جهت آشنایی بیشتر با تعریف مجموعه ها و دستور Set به نوار دسته بندی، تعریف مجموعه ها مراجعه فرمایید.

با تشکر
مدیریت سایت gamsbook.ir

ایمیل: Support@gamsbook.ir
شماره تماس: ۳۳۲۵-۴۰۵—۰۹۱۹

 

103 دیدگاه در “اجتماع مجموعه ها

  1. سلام
    اگه بخوایم از دستور Alias استفاده کنیم، و مجموعه رو بنویسم چه طوری باید کدنویسی کنیم؟
    مثلا برای مسأله ای که باید از گره i به گره j بریم، که هر دو از یک مجموعه هستند ؟

    ممنون میشم پاسخ دهید

    • سلام
      شما اول یکی از مجموعه ها رو باید تعریف کنید. مثلا i. و بعدش با دستور Alias نشون بدین که i و j شبیه هم هستن. هر جا که خواستین از خواصیت همسان بودنشون استفاده کنین. دستور پایین رو ببینین.
      موفق باشین

      Set i/1*10/ ;
      Alias (i,j);

  2. سلام ، ببخشید من تو خط مربوط به محدودیت با خطای ۱۷۱ Domain violation for set مواجه میشم. لطف میکنید راهنماییم کنید.
    Sets
    IUJ/1*15/
    I(IUJ)/1*10/
    J(IUJ) /1*5/
    K/1*25/
    ;

    binary variables

    t(i,j,k);

    c2(j)..sum((iuj,k),t(iuj,j,k))=e=1;

    • سلام
      شما یک بار t رو تعریف کردید با تعدادی از اندیس ها. ولی وقتی تو مدل استفاده کردید، اندیسش رو تغییر دادین. اندیس ها باید همونا باشن. همچنین سعی کنید t رو با t(iuj تعریف کنید.

  3. سلام و خدا قوت
    من با یه مشکل برخورد کردموممکنه راهنمایی بفرمایین
    فرض کنیم دو دسته گروه داریم(مثلا تهرانی و شهرستانی) طبق مطالب بالا تهرانی ها رو در یه دسته قرار می دیم (j1) و همچنین شهرستانیها(j2) و همچنین کل گروه ها(k). حال یه بار تهرانی ها رو مورد ارزیابی قرار می دهیم و یک بار هم شهرستانی ها رو که جواب هم میده.حال سوال من این است که اگه بخواهیم همه گروه ها رو ارزیابی کنم چطور کل داده ها رو در یک table قرار داده و داده ها رو فراخوانی کنم و ارزیابی همه گروه ها رو با هم انجام بدم

    • سلام
      سوالتون مقداری گنگ بود، ولی به نظرم استفاده از بخش مجموعه ها-اجتماع مجموعه ها جواب سوالتون هست. باید یه مجموعه مرجع تعریف کنین و بقیه رو به عنوان زیر مجموعش تعریف کنین

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

  4. سلام مجدد
    چگونه می توان بین چند جدول که از لحاظ ساختاری مشابه هستند یعنی تعداد بعد تعداد سطر و تعداد ستون مساوی می باشد اجتماع تعریف نمود؟
    با تشکر

  5. سلام.

    سه تا مجموعه دارم.
    {p1={a,b,c
    {p2={d,e,f
    {p3={g,h,i

    مشخصه که شمارنده ای روی p وجود داره. p1,p2,p3 هر کدوم از این p ها هم به شکل بالا تعریف شدند.

    چطوری این سه تا مجموعه رو به شکل یک مجموعه تعریف کنم که اگر توی محدودیتی از دستور sum استفاده میشه و سیگما هم روی شمارنده p باشه( مثلاً شمارنده P اندیس u در نظر شده) مجموعه Pu مورد نظر فراخوانی بشه.

    ممنون

      • ممنون که جواب دادید.

        به این شکل نوشتم:

        /set P / a,b,…,i
        /p1(P)/a,b,c
        /p2(P)/d,e,f
        ;/p3(P)/g,h,i

        ولی سیگمای من روی u باید باشه یعنی شمارنده p. نه روی P1 یا p2 یا p3. اگر مقدار u برابر ۲ شد، به ازای u=2 تک تک اعضای مجموعه p2 را در نظر میگیرد سپس مقدار u برابر ۳می شود و تک تک اعضای مجموعه p3 را در نظر میگیرد.

        توی دستور sum باید چجوری نشونش بدم؟ یعنی چطوری بگم زیر مجموعه ۲ و ۳ رو بررسی کن؟

        نمی دونم تونستم منظورمو برسونم….

        • سلام
          روشهای مختلفی وجود داره، میتونین بگین که محدودیت به ازای اندیسی به نام u که از یک تا سه هست برقرار باشه. بعدش بگین که در دستور sum مجموع روی p باشه و از دستورات شرطی استفاده کنین که این دو برابر نباشن. یا میتونین مجموعه های ترکیبی از پی های مختلف تعریف کنین. روش زیاده یکم حوصله باید به خرج بدین و خلاقیت

  6. سلام
    وقتی دو تا اندیس i, j داریم که هر دو از یک مجموعه هستند و میخوایم مثلا یک مجموعه E تعریف کنیم که شامل زوج مرتب های (i,j) هست که در اون i از j کوچکتره و یک متغیر(x (i,j داریم که این (i,j) باید عضو مجموعه E باشه این رو چطور باید تو گمز بنویسیم؟
    خیلی ممنون میشم اگر کمکم کنید

    • سلام
      روش زیاد داره. من معمولا میام E رو به صورت پارامتر تعریف میکنم. کد زیر رو ببینید:

      Parameter E(i,j);
      E(i,j)$(ord(i) lt ord(j))=yes;

      بعد میام x رو یک متغیر تعریف میکنم و هر جا تو محدودیتا x استفاده شد، شرط $(E(i,j) رو براش استفاده میکنم. مث مثال زیر:

      c1(i,j).. x(i,j)$(E(i,j)=l=3;

      مشکلی بود بگین

      • یک دنیا ممنونم از لطفتون
        فقط اگر این متغیر X دو تا اندیس دیگه هم داشته باشه مثلا باشه (X(i,j,k,t که (i,j) ها باید عضو مجموعه E باشن مشکلی پیش نمیاد که؟همون کدی رو که فرمودید اینجوری بنویسم

        ;c1(i,j).. x(i,j,k,t)$(E(i,j)=l=3

        • خواهش میکنم.
          نه مشکلی پیش نمیاد. ولی خب باید دقت کنین که محدودیت به ازای چه اندیس هایی برقراره.

  7. سلام مجدد. ممنونم از پاسخگویی سریعتون ۲ تا سؤال داشتم از حضورتون
    وقتی ی متغیر سه اندیسه داریم مثل (L(i,t,w و توی یکی از محدودیت هامون باید از متغیر (L(i,t-1,w استفاده کنیم، اینو چطور باید بنویسیم؟یک جا تو کامنتها خوندم فرموده بودید باید بصورت شرطی بنویسیم میشه لطف کنید یک مثال بزنید؟
    و اینکه اگر این متغیر فقط به ازای i=0 توی یکی از محدودیتها نوشته شده باشه مثلا بصورت (L(0,t,w باید بصورت (L(“0”,t,w نوشته بشه؟

    • سلام
      خواهش میکنم.
      همینجوری میتونین بنویسین. مشکلی نداره؛ اگه شرایط دیگه ای نداشته باشین البته
      سوال دومتون. بله همین کافیه

  8. با سلام
    از توضیحاتتون متشکرم
    سوالی داشتم:
    اگر اندیس i عضو مجموعه{۱ و ۲ و ۳}=D تعریف آن ساده است.
    ولی اگر اندیس i ، عضو مجموعه C باشد که مجموعه C قرار است هر بار یکی از زیر مجموعه های D باشد، چطور باید x را تعریف کرد؟

    • سلام
      سوال بسیار به جایی بود. دقیقا همین سوال رو تو بخش تمرینات (تمرین ۲) گذاشتیم. جوابش رو تو کد زیر میتونین ببینین:

      $eval n 6
      $eval M power(2,%n%)
      sets
      i 'Nodes' / i1 * i%n% /
      c 'enumerate the power set of i' / 1 * %M% /
      ps(c,i) 'power set of i'
      ;
      scalar j;
      loop {c,
      j = ord(c) - 1;
      loop {i,
      ps(c,i) = mod(j, 2);
      j = floor(j / 2);
      }
      }
      display ps;

  9. سلام ببخشید یه سوالی داشتم .در یک مقاله مجموعه های R و D و N در نظر گرفته شده که N خودش اجتماع R و D است .اما در بخش محدودیت ها اندیس های i و j روی سیگما ها به کار رفته و روی هر سیگمادر مجدویت ها بنا به کاربرد مثلا نوشته i عضو R یا j عضو D و…. می خواستم بدونم i و j را تو گمز چجوری باید تعریف کنم؟؟؟؟؟؟؟

    • سلام
      شما N رو تعریف کنین.

      بعدش D و R رو به عنوان زیر مجموعه N تعریف کنین.
      هر جا این حالات پیش اومد مثال زیر رو تو خاطرتون داشته باشین:
      فرض کنین با تعاریف بالا، یک x(N) هم دارین که بعضی جاها به عنوان x(N) و بعضی جاها همین x به شکل x(D) به کار رفته. (توجه کنین x(D) همون x(i) هست که d,i همسان یا alias هم هستن)
      هر کدوم رو به صورت زیر میتونین بنویسین.

      Set N/1*10/
      D(N)/1*5/
      R(N)/6*10/
      ;
      .
      .
      .
      variable x(N);
      .
      .
      sum(N,X(N))
      sum(D,X(D))
      sum(R,X(R))

      مثال های بالا کل مفهومی که نیاز دارین رو بهتون میرسونه.
      سربلند باشین

  10. سلام ببخشید یه سوالی داشتم .در یک مقاله مجموعه های R و D و N در نظر گرفته شده که N خودش اجتماع R و D است .اما در بخش محدودیت ها اندیس های i و j روی سیگما ها به کار رفته و روی هر سیگمادر مجدویت ها بنا به کاربرد مثلا نوشته i عضو R یا j عضو D و…. می خواستم بدونم i و j را تو گمز چجوری باید تعریف کنم؟؟؟؟؟؟؟

    • سلام
      شرمنده من باز مزاحم میشم
      اول این که من هم مشکلی مشابه ایشون داشتم یک مجموعه کلی تعریف کردم و بعد با استفاده از دستور ord بازه تعیین کردم اندیس ها در هر محدودیت و نمیدونم این روش صحیح هست یا خیر؟
      بعد هم این که من با مشکل محدودیت زیرتور مواجه هستم برای حلش تنها راهی که به ذهنم میرسه اینه که با استفاده از دستور if و یا for مشکل رو حل کنم اما نمیدونم کجای کد باید این دستور رو بیارم؟ داخل معادلات یا ….؟

      • سلام
        سوال ایشون رو بالاتر جواب دادم. نمیدونم منظورتون از بازه چیه. تو این مورد بازه درست نیست. واسه تور و زیر تور هم بسته به مدل فرق داره. از دستورات if یا مدلسازی میشه استفاده کرد. بسته به مدل ابته

  11. سلام
    ببخشید مزاحم میشم ، براتون ایمیل ارسال کردم فرمودید سوالاتتون رو توی سایت مطرح کنید.
    مجموعه t به عنوان پریود های زمانی دارم و مجموعه j به عنوان مهارت های ممکن.
    پارامتر (alfa(j هم روی مجموعه j تعریف میشه که مقدار میگیرد.
    در ادامه درون محدودیت ها اندیس t-alfa(j)+1 دارم ، شما فرمودید با الیاس تعریف کنم ولی متوجه منظورتون نشدم مگر الیاس برای دو مجموعه با اعضای یکسان نیست ؟ میشه خواهش کنم توضیح واضح تری بدین واقعا به کمک نیاز دارم.

    • سلام
      ببینید، شما باید از دستورات شرطی استفاده کنید.
      مثلا میگید که:

      c1(t).. sum(t1$(ord(t1) >=ord(t) + alpha(j)+1),y(t1,j)=l=x(t);

      دقت کنین رو این محدودیتی که نوشتم. احتمالا خیلی از کاراتون رو راه میندازه

      • سلام ، راهنمایی شما عالی بود خیلی کمکم کرد فقط یک سوال دیگه ، ممکنه شبیه به قبلی باشه ولی چون مبتدی هستم زیاد آشنایی ندارم، به هر حال ببخشید.

        (((sum(m,q(m,i,(t-alphaj

        در این حالت که اندیس q تغییر کرده نه سیگما چه کار باید بکنم؟

        باز هم ببخشید که وقتتون رو میگیرم.

        • سلام
          خواهش میکنم.
          تو این حالت اول محدودیت باید این کار رو بکنین:

          c(i,t,,t1j)$(ord(t1) = ord(t) -alpha).. .....q(m,i,(t1).....

  12. با سلام
    ببخشید سوالم اینکه در یک مساله که به طور مثال شامل ۵ نود هست، پس از تعریف مجموعه ای به طور مثال با اندیس i و alias کردن آن با مجموعه j… میخواهیم مجموعه ای شامل برخی از زوج مرتب های تشکیل شده از دو مجموعه فوق (مثلا (۱و۲)،(۱و۳)، (۲و۴)و…(۴و۵)) را تعریف نموده و در یک محدودیت شرط محدودیت را تنها بر روی اعضای مجموعه فوق تعریف نماییم. حال میخواستم نحوه نوشتن کد مربوطه را لطفا تشریح نمایید. با تشکر

      • ممنون از پاسخ شما. از انجاییکه در محدودیت مربوطه، دو مجموعه i و j به صورت مجزا در متغیرها به کار گرفته شده اند یا به عبارتی متغیرهای مربوطه تک بعدی هستند، تعریف مجموعه به صورت دو بعدی (E(i,j همان طور که در تعریف مجموعه های چند بعدی آمده و استفاده از آن در دامنه محدودیت ها با ارور یکسان نبودن ابعاد متغیرها و مجموعه ها مواجه می شود، لطفا اگه راه حل دیگه ای وجود داره، بفرمایید.

        • ببینید
          شما یا باید طوری متغیر رو تعریف کنین که اندیسا توش باشن
          یا اینکه شرطی که تو محدودیت میذارین طوری باشه که محدودیت رو عوض نکنه و شرط زوج مرتب ها رو هم رعایت کنه

    • سلام یک راه دیگه اش اینکه یک ماتریس به سایز i,j با استفاده از table تعریف کنید. هر جا که عضو بود یک باشه و عضو نبود صفر . و در محدودیت ها هر جا لازم بود این ماتریس باینری را ضرب کنید. البته پیشنهاد آقای محمودی راحت تره 😀

  13. با سلام.یک سوال داشتم.من یک مجموعه m دارم که دو تا زیر مجموعه k و d داره.حالا می خوام به عناصر این مجمعه در جدول مقدار بدم.از کجا بفمم کدوم عناصر مربوط به k و کدوم مربوط به d میشه؟مثلا عنصر اول مجموعه بزرگتر نشون دهنده k یا d?

      • سلاموممنون از شما.ولی فکر می کنم شما متوجه سوال من نشدید!فرض کنید مجموعه بزرگتر ۱۷ عضو داره که سه تاش تو یک زیر مجموعه و ۱۴ باقی مونده تو یک زیرمجمعه دیگه قرار گرفتن.حالا من سوالم اینه که مثلا عنصر اول مجمعه بزرگتر به کدوم عنصر از زیرمجموعه ها اشاره داره و همین طور تا آخر؟

      • من یک مجموعه نود دارم(m) که تعدادیشون تقاضا هستن (d) و تعدادشون تامین (k) حالا میخوام فاصله بین این نودها را مقداردهی کنم t(i,j) حالا می خوام بدونم از چه شماره تا چه شماره ای در مجموعه بزرگتر نودهای تقاضا و چه شماره هایی نودهای تامین رو نشون میده.d و k به عنوان زیرمجموعه m تعریف شده اند.

        • عرض کردم که، شما متوجه نشدین:

          m/d1*d3,k1*k5/
          d(m)/d1*d3/
          k(m)/k1*k5/
          ;
          alias (m,m1)
          table t(m,m1)

          دیگه بقیه ش مشخصه.
          دوستان لطفا تاپیک رو قشنگ بخونین.

  14. با سلام و خسته نباشید.
    در مدل من مجموعه ای هست که بعضی اوقات تهی میشه.بنابریان عملیات که مربوط به این مجموعه اس مختل میشه به عبارتی:

    i supplier/1*4/
    $onempty
    ds(i) disrupted suppliers
    $offempty
    ws(i) well-behave suppliers /1*4/

    beta=prod(ws(i),(1-alpha(i)))*prod(ds(i),alpha(i));

    برا محاسبه بتا چه کاری کنم که وقتی ds تهی هم هست جواب بدهد؟

    • سلام
      من که زیاد نفهمیدم چی به چیه. ولی فک کنم دو قسمتش کنین این ضربا رو بعد جمعش کنین اوکی بشه. نفهمیدم البته :دی

      • با سلام:
        در مدل من بسته به شرایط مجموعه های ws(i) و یا ds(i) تهی می شوند.این موضوع رو چطور باید نشون داد که در مدل اشکالی ایجاد نشود.کاربرد این دو مجموعه(set) در محاسبه این عبارت است.
        beta=prod(ws(i),(1-alpha(i)))*prod(ds(i),alpha(i));
        ضمنا این دو مجموعه خود زیر مجموعه مجموعه بزرگتر مانند i هستند یعنی ws اجتماعش با dsبرابر است با i.همچنین alpha , beta هم پارامتر هستند.
        من تمامتلاشم رو کردم که واضح بنویسم امیدوارم خوب گفته باشم.

        • سلام
          خیر واضح نگفتین متاسفانه. تهی بشن به چه منظور؟ کی باید تهی بشه و کی نباید بشه؟

  15. با سلام
    اگر بخواهیم یک مجموعه دو بعدی را به صورت گروهی مقدار بدهیم چطور باید کد آن را نوشت؟
    مثلا اگر بخواهیم E(I,J) به ازای I,J های بخصوصی مقادیر صفر داشته باشد و نخواهیم یکی یکی آنها را تعریف کنیم. اگر کانال یا گروه تلگرام از آموزش GAMS هم داشته باشید، ممنون میشم لینکش رو بذارید.

      • من یک متغییر دو بعدی دارم که نمیخوام با ماتریس تعریف کنم.چون خیلی از درایه ها مقدار صفر دارند.برای اینکه به صورت یکجا این درایه ها رو برابر با صفر قرار بدم باید چه کار کرد(نمیخوام یکی یکی درایه ها رو مقدارشون رو تعریف کنم).
        سوال دیگه اینکه محاسبه ای دارم که متغییراش جواب بهینه سازی است.فرمول این محاسبه رو باید کجا وارد کرد؟چون نه قید محسوب میشه نه در جواب بهینه سازی تاثیری داره.وقتی هم که در قسمت equation این فرمول رو میزنم خطا میگیره.
        لطفا توضیحات رو در سطح ابتدایی بدید چون من تازه شروع کردم به کار کردن با این نرم افزار.
        ممنون

        • سلام
          سوال اولتون: فرض میکنم منظورتون از متغیر همون پارامتر ورودیه. فرض کنیم همه صفر هستن بجز a14:

          parameter a(i,j);
          a(i,j)=0;
          a('1','4')=3;

          سوال دوم: شما هر فرمولی بعد از حل دستور solve استفاده کنین مشکلی پیش نمیاد. مثلا من میگم که وقتی تو حالت بهینه z مقدار گرفت، اون رو به اضفه ۵ کن. باید این کار رو بکنم:

          parameter zz;
          zz=z.L;

          اون .L ویزگی بهینه متغیر z هست. بخش متغیرها رو بخونین حتما
          تغیریف متغیرها در نرم افزار گمز

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

  17. سلام و خسته نباشید
    یه سوالی دارم ازتون، ممنون میشم راهنمای کنید.
    ببینید من یک مجموعه مشتریان دارم i، و یک مجموعه کارهای مشتریان j. مجموعه ای دو بعدی تعریف کردم که شامل مشتری و کارها می شود.
    i=1*6
    j=1*7
    که مجموعه a(i,j برای iها بعضی از jها رو شامل میشه… تا اینجا همه چی اوکیه
    حالا من یه مجموعه دیگه دارم که از ۱ تا card(a رو شامل میشه، یعنی برای تمام yes های مجموعه a
    میشه راهنمایی کنید که چطور می تونم این مجموعه رو تعریف کنم

        • ممنون که جواب دادین
          آخه مثلا اگه ۱۰ تا j داشته باشیم، در اینصورت ما ۱۰ مجموعه مختلف از i داریم.. چرا که i به j یا همون nj بستگی داره.

    • سلام
      ببینید راه زیاده، یه راه ساده و قابل فهم میتونه این باشه که یه مجموعه که شامل حاصلضرب i,j هست رو تعریف کنین. بعد با یه لوپ اون مجموعه ای که میخواین رو تعریف کنین.
      مثال زیر رو ببینید:

      set
      t/1*42/
      s(t)
      i/1*6/
      j/1*7/
      a(i,j)/1.5,2.4,3.6,4.7/
      ;

      loop(t,
      s(t)$(ord(t)<=card(a))=yes;
      ;);
      display i,j,a,s

    • سلام
      این ارور متعلق به اینه که گمز نمیتونه inc فایل یا همون include file رو باز کنه. دلیلش اینه که شما یا درست ادرس ندادین، یا اینکه دایرکتوری دیفالتتون رو تغییر دادین. file/project/new project رو بزنین. فایلا رو اونجا بریزین و مجددا امتحانش کنین.

  18. سلام
    ببخشید بنظر شما این اندیس گذاری بنده درست هستش

    i Index for nodes (suppliers and customers) /1*7/
    r Index for products /1*2/
    m Index for vehicle /1*3/
    o cross dock /0/
    p Set of pickup nodes /p1,p2,p3/
    D Set of delivery nodes / D1*D4/
    h/set.i,set.o/
    alias(i,j,k)
    alias(m,mP);
    بعد تابع هدف بنده
    ∑_(i=0)^n▒∑_(j=0)^n▒∑_(m=1)^v▒■(〖tc〗_ij & x _ ij^m +&∑_(m=1)^v▒∑_(j=1)^n▒■(〖co〗_m&x_0j^m ))

  19. سلام

    sum از i=0 تا n در sum از j=0 تا n در sum ازm=1 تا v در x(i,j) به توان m ضرب در tc(i,j) بعلاوه sum از m=1 تا v در sum از j=1 تا n در co(m) ضرب در X(0j) به توان m
    من با توجه به اطلاعاتی که در سوالات بالا پرسیده شده است این گونه اندیس گذاری کردم .
    در اینجا i و j ترتیب توالی گره ها را مشخص می کند که یکبار زیر مجموعه گره برداشت هستن و یکبار زیر مجموعه گره تحویل و ..
    sets
    h /c1,p1,p2,p3,d1,d2,d3,d4/
    r Index for products /1*2/
    m Index for vehicle /1*3/
    o(h) cross dock /c1/
    p(h) Set of pickup nodes /p1,p2,p3/
    D(h) Set of delivery nodes / D1*D4/
    qq(h) /p1,p2,p3,d1,d2,d3,d4/
    alias(i,j,k,h)

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

      • سلام ، مرسی از کمکتون
        ببخشید من توی بعضی از محدودیت های مدل i عضوی از مجموعه p و در برخی موارد i عضوی از مجموعه D هستش ، چون i ترتیب گره را مشخص می کند .
        بنظر شما با این اندیس گذاری دچار مشکل نمی شم .

        • خیر. ولی حواستون باشه اولا متغیر رو با اندیس h تعریف کنین، ثانیا هرجا قراره اعضای مجموعه ی p رو بگیره، باید اندیس متغیری که تعریف کردین رو بذارین p و…

  20. با سلام
    چگونه می توان ضرب زیر که مربوط به ضرب یک ست در مجموع است را انجام داد
    در مثال زیر خطا ایجا می شود.

    SETS
    i /1*10/
    t /1*3/

    VARIABLES
    POSITIVE VARIABLES Yt;

    EQUATION
    const1 (t);

    const1 (t) .. Yt(t) =l= ( sum(i , r(i)*t) );

    • سلام
      مهندس عذرخواهی میکنم. ولی ما اینجا کارمون رفع ارور نیست که. کل کدتون رو گذاشتین تو سایت نمیشه که.
      همین رو بگم که گمز دقیقا همون چیزی رو به شما نشون میده که بهش دستور میدین.

  21. سلام ، من داخل گمز به چه شکل این مدل رو کد کنم ، چون p از ۱ تا n مجموعه گره برداشت و d از n+1 تا ۲n مجموعه گره تحویل است که هر درخواست بصورت زوج مرتب (i, i+n) که i برای گره برداشت و i+n گره تحویل است .
    که داخل مدل h:(i,j) زیر یه sum هستش

    باتشکر

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

  22. سلام
    من داخل مدلم تخصیص درب به کامیون هارو دارم که d, dp توالی تخصیص درب هستن که این d و dp در برخی موارد d عضو RD و dp عضو SSD و در برخی موارد برعکس هسش یعنی d عضو SSD و dp عضو RD هستش . بنظر شما این اندیس گذاری درست هستش ، چون من فکر میکنم اشتباه هستش .

    d total doors
    RD(d) receiving(strip) dock doors
    SSD(d) shipping(stack) dock doors
    alias (d,dp)
    و در هرجایی که d عضو RD هستش RD قرار بدم و به همین ترتیب برای بقیه

  23. سلام
    در خصوص توابع توزیع در گمز سوالی داشتم
    نوشته بودید که با دستور normal میشه عددی رندم با توزیع نرمال داشت. می
    خواستم بدونم ایا تابعی در گمز هستش که تابع چگالی احتمال تابع توزیع
    نرمال رو هم بده؟
    البته دستور زیر تو راهنمای گمز دیدم اما گمز میگه نمیشناسمش
    pdfNormal(x,MEAN,STD DEV)
    ممنون میشم اگه راهنمایی بفرمایید

    • سلام
      شما به کرات این سوال رو تو سایت پرسیدین، به کرات هم بهتون جواب داده شده! حداقل ایمیلتونو چک کنین که جوابی که داده شده چیه آخه.
      نمیشه بذر بکاریم و نریم درو کنیم و انتظار محصولم داشته باشیم که

      • سلام آقای محمودی
        ایمیلتون، چک کردن سایت بود که هزار بار بالا پایین کردم ندیدم دوباره پرسیدم نظر وجوابی نبود. اولین باریه که سوالم رو جواب دادین که اونم به این شکل.
        در مورد جواب هم الله اعلم، شاید جواب دادین من نتونستم پیدا کنم به هر ترتیب سایت خوبی دارین
        موفق باشید

        • سلام
          یه بار اینجا جواب داده شده: سپتامبر ۱۳، ۱۷:۵۸
          تعریف متغیرها
          یه بار اینجا: سپتامبر ۱۴
          خطاهای گمز
          البته من pdfnorm کار نکردم. نمیدونم تو چه نسخه هایی استفاده میشه. احتمالا نسخه های محدودی باشن نمیدونم. ولی تابع رو همونطوری که گفتم میشه نوشت.

  24. سلام
    خسته نباشید
    ببخشید یه سوال داشتم یه مجموعه به نام t دارم j هم دارم که زیر مجموعشه (j(t حالا میخوام تو پارامترام اطلاعاتی وارد کنم در باره مجموعه j مینویسم (b(j ارور میده چطور باید طرح شه چون j خودش زیر مجموعه t بوده.

    • سلام
      شما میتونین از همون اول b(t) تعریف کنین، یا مثلا b(*) تعریف کنین. ولی وقتی مثلا تو محدودیت b(j) دارین، به همین شکل خودتون b(j) واردش کنین.

  25. سلام ، خسته نباشید.
    من داخل مدلم یک محدودیت دارم که به شکل زیر است.
    L(k,d) که اگر مسیر k از انبار d شروع شود.
    I(k,d) اگر که اگر وسیله نقلیه مربوط به مسیر K در ابتدا در انبار d واقع شده باشد.
    t(k) روزی که در آن مسیر k زمان بندی می شود.
    محدودیت
    L(k,d)=I(k,d)
    که به ازای هر d
    و هر k بشرطی که K(t)=1 باشد .
    ببخسید اینو چطوری میتونم کد کنم .
    باتشکر

  26. سلام
    در گمز چگونه می توان پارامتر شرطی زیر را نوشت ؟ در قسمت تعریف پارامترها؟پارامترα با اندیس kpm و در خود نامعادله چجوری بنویسم ؟

    ۱ if operation k of part p can be processed on machine type m

    0 otherwise

    پیشاپیش از پاسخنون سپاسگزارم.

  27. سلام خسته نباشید. ببخشید من نمیدانم چرا نرم افزار و لایسنس را از همین سایت دانلود کرد ولی متاسفانه بعد از عمل runگرفتن و رفع errorها در صفحه جواب گزینه های displayاصن وجود ندارد. با یکسری گزینه های دیگر. بنظرتان چه کاری باید انجام دهم.خیلی ممنون و با سپاس از زحماتتان.

  28. با سلام
    اگر ما یک پارامتر تعریف کنیم که دامنه اش j باشد، مثلا x1(j) . و حالا اگر بخوایم خود x1(j) را به صورت دامنه برای یک متغیر دیگر مثلا v(x(j)) تعریف کنیم؟ در نرم افزار گمز چجور نوشته میش ود. ممنون میشم راهنماییم کنید.

    • سلام
      ببینید سوال مقداری کلی هست. و بسته به ساختار مسئله و خواستگاه شما فرق میکنه چه بلایی سرش بیارین. یه روش اینه که شما یه اندیس دیگه مثل t تعریف کنین که v(t) بشه متغیر شما. حالا تو محدودیت ها هر جا v داشتین، میتونیسین به شرطی که ord(t)= x باشه. که خود ایکس چون متغیره، یا باید از دستور ifthen استفاده کنین. یا اینکه مقداری ساختار رو دستکاری کنین.

  29. سلام.من یک مسئله ی مکانیابی مسیریابی دارم که شامل نودهای تولید کننده(i)،مراکز توزیع(j) و مشتریان(k) هست و مسیریابی برای هر دو سطح هم از تولیدکننده به مراکز توزیع و هم از مراکز توزیع به مشتریان در نظر گرفته شده است و برخی از محدودیت های مسئله روی iUj جمع بسته می شود و برخی هم روی kUj.می خواستم بدونم تعریف این مجموعه ها به جه صورت باید باشد.ممنون.

    • سلام
      میتونین یه مجموعه مجع تعریف کنین. بعد چند تا زیر مجموعه هم ازش داشته باشین و تو محدودیت ها از اون اندیس استفاده کنین. مثلا:

      set ijk/1*30/
      ij(ijk)/1*20/
      kj(ijk)/11*30/
      i(ijk)/1*10)
      ...

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

    و یک مسئله دیگه اینکه من s(k) را در پارامتر تعریف کردم ولی s(h) را خیر. آیا میشه آن را alias زد به s(k)?
    در واقع s(k) مجموعه ماشین هایی هست که قطعه k روی آن ها پردازش می شوند. , s(h) هم به همین شکل برای قطعات h
    و آیا قطعات k و h را هم باید با دستور alias با این شرایط مشابه در نظر گرفت؟

    متشکرم.

    • سلام
      ببینید مقداری سخت با مسئله برخورد می کنین شما. آسون تر فکر کنین. چون همیشه بهترین راه حل ساده ترینشه.
      من جای شما باشم، اول میام یه P تعریف میکنم که اندیس تمامی قطعات باشه. بعد h,p,k رو آلیاس میکنم. بعد s(p,m رو به صورت پارامتر صفر و یک تعریف میکنم. هر جا یک بشه یعنی ماشین ۱ می تونه قطعه p ام رو پردازش کنه یا عکسش. اینجوری میتونین جاهای مختلف از شرط ها هم به راحتی استفاده کنین.
      آلیاس فقط روی مجموعه ست.

پاسخ دهید

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