همانطور که در بخش وارد کردن داده های مسئله یا Data Entry بیان شد، در مدل هاییی که نیاز به تعریف مجموعه ای از اندیس ها یا زیر اندیس های می باشد باید از تعریف مجموعه های نظیر آنها شروع کرد.
جهت تعریف مجموعه ها از دستور (sets و یا Set) استفاده می کنیم. مجموعه ها اساس یک برنامه ی GAMS را نشان می دهند و مترادف با اندیس ها در نمایش جبری مدل ها هستند. انواع و اقسام مجموعه ها را می توان در GAMS تعریف نمود. فرم کلی این تعریف به صورت زیر است.
Set setname/set members/;
به عنوان مثال مجموعه ی زیر (i) اعداد 1 و 2 و 3 را شامل می شود:
*Example:
set i/1,2,3/;
توجه: کد با set شروع می شود. متن در محاسبات و تعاریف تاثیری ندارد. نام مجموعه را به عنوان نماینده¬ی مجموعه در محاسبات و معادلات به کار می بریم. اعضای مجموعه باید تمامی اعضا را شامل شود.
مجموعه های زیر را در نظر بگیرید.
هر کدام از این مجموعه ها را می توان به صورت زیر تعریف نمود:
با اندکی دقت در شکل بالا مشاهده می شود که شیوه ی کد نویسی مجموعه ها بسیار مشابه با عبارات جبری آنها می باشد. به عنوان مثال مجموعه ی i مقادیر 1 تا 10 را به خود می گیرد. یا مجموعه ی دوستان به محمد، زاهد و رضا را شامل می شود. مجموعه ی Row از Row1 تا Row20 را شامل می شود و… .
همانطور که ملاحظه می شود،
بعد از هر دستوری علامت سیمی کالون (;) می گذاریم.
فاصله بین نام مجموعه و اعضای مجموعه مهم نیست.
فاصله بین اعضای مجموعه با هم در کد ما خدشه ای وارد نمی کند.
زیر مجموعه ها می توانند عددی، حروفی و یا ترکیبی از این دو باشند.
اعضا با استفاده از کاما از هم جدا می شوند.
متن را می توان بعد از نام مجموعه آورد ولی تاثیری در محاسبات نخواهد داشت.
هر تعداد مجموعه که نیاز داشته باشیم می توانیم تعریف نماییم.
حتی اگر یک عضو یا زیر مجموعه در یک یا چند سطر دیگر هم باشد باز هم مشکلی پیش نخواهد آمد.
به شکلی بسیار ساده تعریف مجموعه ها را یاد گرفتید. پس احتمالاً می توانید کد مربوط به مثال کاربردی 1 را نیز در GAMS بنویسید.
همانطور که در مثال کاربردی 1 مشاهده می فرمایید، دو نوع اندیس در این مدل داریم. یکی اندیس i و دیگری اندیس j می باشند. اندیس i از 1 تا 3 و اندیس j نیز از 1 تا 3 تغییر می کنند. جهت تعریف این مجموعه ها به سادگی به صورت زیر می توان عمل نمود:
جهت تعریف مجموعه های چند بعدی، مجموعه های در هم و زیر مجموعه ها نیز به روش های مشابه می توان عمل نمود. این تاپیک ها نیز به زودی در همین بخش آموزش داده خواهند شد.
خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش پارامترها در لیست مطالب مراجعه نمایند.
با تشکر
مدیریت سایت gamsbook.ir
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405–0919
سلام وقتتون بخیر
من یک مدل mip را باسالور cplex حل کردم اما جواب صفر میده وقتی این مدل را با سالور بارون حل کردم جواب داد منتها چجوری میشه به درستی جواب مطمئن بود
سلام و روز بخير.
چنين چيزي معمولا درست نيست. سالور CPLEX براي حل MIP بسيار معتبر هست.
موارد زير را چك كنيد:
1- در روند حل مدل و در لاگ ببينيد سالور دقيقا چي را برگردانده؟ مثلا عبارت infeasible را در لاگ جايي ميبينيد؟
2- ممكنه مدل داراي اشكال عددي باشد. مدل را در يك اسكيل كوچك كه بشه با دست چك كرد حل كنيد و نتيجه را ببينيد.
3- در فايل lst. ببينيد مقابل عبارات هاي model status و solver status چي نوشته شده؟
eq7(t)$(ord(t)>1)..sum(m$(ord(m)>1),z(m,t))=e=k
بله ممنون از شما.یعنی محدودیت اول به شکل بالا درسته؟
سلام.
نگارش محدوديت درست هست.
فقط در كنار پاسخ دكتر، دقيقا منظورتون از ان دو محدوديت را بيان ميكنيد؟
چه شرطي را نياز داريد بنويسيد؟ (بيانش كنيد بهتر ميشه راهنمايي كرد)
.
سلام .باتشکر فراوان از شما که با حوصله به پرسش ها جواب میدید
می خواستم بپرسم محدودیت زیر را چگونه در گمز اضافه کنم.zمتغیرباینری و l و u پارامتر و کران بالاو پایین هستند
سلام وقت بخیر
اولا شرط ها باید جدا جدا باشن. مثلا میگین به شرطی که m از n بزرگتر باشه and یه چیز دیگه. نمیشه بگیم m,t بزرگتر از یک هست. باید دو تا بشه و بینشون and باشه.
محدودیت دوم رو هم تبدیل به دوتا محدودیتش کنین.
سلام و سپاس بابت پاسخگویی به سوالات
من یک مجموعه داینامیک دو بعدی در مساله ام دارم که تخصیص وسایل نقلیه به فروشگاه ها رو مشخص میکنه. برای مثال
h(v,c)
که v اندیس وسایل نقلیه و c اندیس فروشگاه هاست. می خوام تعداد اعضای مجموعه رو به ازای v های مشخص داشته باشم. از چه دستوری باید استفاده کنم؟ دستور (h)card آخرین مقدار مجموعه رو میده
سلام و ادب
این دستور میتونه چیزی که میخواید رو محاسبه کنه:
خیلی خیلی ممنونم ازتون.
سلام. در كنار پاسخ دكتر اين را هم اضافه كنم كه كارد يك مجموعه به مفهوم اخرين عضو نيست و تعداد اعضاي داخل مجموعه را نمايش ميدهد. مثلا اگر يك مجموعه 1 تا 7 داشته باشد و كارد را بگيريد عدد 7 را ميبيند كه به مفهوم اخرين عدد نيست و نبايستي با ان اشتباه گرفته بشود. پيشنهاد ميكنم براي مجموعه A تا G كارد را حساب كنيد و ببينيد.
درخصوص سوال شما چون مجموعه دايناميك داريد بايستي از روش گفته شده استفاده كنيد. در اينجا كارد ممكنه جواب درستي به شما نده.
موارد بيشتر در @gamsbook
سلام و احترام
ممنون از توضیحات تون.
با سلام و وقت بخیر
من یک مجموعه 3 بعدی از بلوک ها دارم که تعدادشون 10*10*10 هستش
مجموعه هارو به صورت
sets
i /1*10/
j /1*10/
k /1*10
تعریف کردم. و یک متغیر باینری x(i,j,k) دارم که وقتی یک بلوک اسخراج میشه مقدارش 1 هستش.
مشکل من اینجاست که توی مدل بلوکی و داده هایی که از اکسل فراخوانی میکنم تعدادی از بلوک ها رو در معادلات دخیل میکنه که کلا وجود ندارن. مثلا بلوک b(5,6,2) کلا وجود خارجی نداره توی اکسل و میشه گفت که فضای خالیه
ولی وقتی محاسبات تموم میشه میبینم که x(5,6,2) برابر 1 شده و در واقع اون رو استخراجش کرده.
ممنون میشم یک راهی نشون بدین بتونم به گمز بفهمونم بعضی بلوک ها میتونن وجود نداشته باشن
سلام و ادب
نرم افزارهای بهینه سازی تو بعضی از شرایط از این ارور ها دارن که میشه ازش جلوگیری کرد. مثلا شما می تونید محدودیت x<=b رو به کد اضافه کنید. یعنی هر جای b صفر شد، قطعا x متناظر هم باید صفر بشه. دقت کنید که نیازی نیست تو مدل ریاضی این محدودیت بیاد، فقط در کد بیاد کافی هست
ببخشید من این رو متوجه نشدم. میشه لطف کنین یکم بیشتر توضیح بدین؟
اگر هم که کد رو هم که بنویسین واسه مثال ممنون میشم
این میشه محدودیتش:
سلام، وقتتون بخیر
من در کار با نرم افزار گمز تازه کار هستم. در مدل یک اندیس t دارم و یک محدودیت دارم که در اون اندیس t در پارامتر مربوطه به جای خود t باید t-1 در نظر گفته بشه. برای اعمال این موضوع در گمز از ord(t)-1 استفاده کردم ولی ارور میگیرم
میخواستم بپرسم چطور باید اینو تعریف کنم
سلام
کافیه به جای t بنویسین t-1 . چیز دیگری نیاز نیست. فقط دقت کنید زمانی که t=1 هست، ممکنه محدودیت شرط نیاز داشته باشه
سلام. من سالها پیش همه مشکلات گمزی رو که داشتم از شما میپرسیدم و شما هم همیشه سخاوتمندانه راهنمایی میکردین. الان چند ساله که دیگه گمز کار نمیکنم و پایتون استفاده میکنم. خواستم ازتون صمیمانه بخاطر تمام کمک ها و راهنمایی هاتون به من و بقیه دوستان تشکر کنم. برقرار باشین.
سلام عزیز
ممنون از شما. این برای من قوت قلب و مایه خوشحالیه که تونستم کمکی کرده باشم. همین که تو یاد شما موندگار شدیم بزرگترین نعمته. ممنون و موفق باشید
سلام
ممنون از مطالب خوبتون
یه سوال داشتم
اگر مجموعه ی ما به پارامتر N ختم بشه اول پارامتر را تعریف میکنیم و بعد محموعه را ؟
مثال:
I={1,…,N} ∈ i,h
N: تعداد کل پروژههای انتخاب شده
همچنین اگر بخواهیم i, h را عضو یک مجموعه تعریف کنیم هر کدام را در یک سطر بنویسیم؟
Set I i/1*N/;
Set I h/1*N/;
آیا به این شکل درست است؟
و اینکه برای تعریف محموعه ایبه این شکل l عضو hhi برای تعریف مجموعه پروژههای وابسته به هم ، در گمز چه شکلب مب تونیم تعریف کنیم؟
خیلی ممنون میشم راهنمایی کنید.
∈hh_i
سلام ممنون
به جای N مقدارش رو بذارین. مثلا 10
برای ارتباط i,h، اگه بخوایم بگیم همه چیشون شبیه همه، از دستور alias استفاده میکنیم.
برای وابستگی مجموعه ها به هم از تعریف مجموعه های چند بعدی استفاده کنین. کلیک کنید.
ممنونم از راهنمایی شما
سلامت باشین
سلام خسته نباشید من یک مجموعه اندیس j دارم که حداکثر 15 مقدار می تونه بگیره اما قراره که با زبان برنامه نویسی #c ابتدا شبیه سازی انجام بدم و بعدمعلوم بشه درهربار تکرار شبیه سازی کدوم یکی از j ها قراره در مدل گمز باشند ولی نمیدونم اینو چجوری باید در گمز کد بزنم ممنون میشم بهم کمک کنید
سلام
من یه مثال خیلی ساده براتون میذارم. در اینجا n رو از c# به عنوان ورودی به گمز میدین.
سلام،روزتون بخیر.
ببخشید در مدلم عبارتی بصورت زیر دارم:
G(i)=>((Sum(j,Sum(k,(2^(k-1))×(sjki) به ازای هر i، ممنون میشوم بفرمایید که به چه صورت میتوانم وارد گمز کنم،چون وقتی توان را با** تعریف میکنم خطای۱۴۸ را میدهد:
Dimension diffrent-the symbol is refrenced with more/less indices as declared
سلام
توابع زیادی برای توان در گمز استفاده میشن. سرچ بزنید power functions in gams ide
کار دیگه هم اینه که میتونید k-1 رو بذارید تو قدر مطلق یا abs
ممنون،آقای دکتر.
سلامت باشید
سلام، وقت شما بخیر.
ببخشید اقای دکتر من محدودیت را بصورتهای زیر در گمز نوشتم:
co1(i) .. G(i)=>((Sum(j,Sum(k,(2**(abs(k-1)))×(sjki)
co1(i) .. G(i)=>((Sum(j,Sum(k,(cvpower(2,(k-1)))×(sjki)
co1(i) .. G(i)=>((Sum(j,Sum(k,(rpower(2,(k-1)))×(sjki)
ولی همچنان خطای 148داده میشود.
درصورت امکان ممنون میشوم راهنمایی کنید.(اشتباه محدودیت را نوشتم یا اینکه در گمز نمیتوان اندیس ها را در توان در نظر گرفت)
فکر کردم k یک پارامتر هست. باید بجای k در توان بنویسید ord(k)
سلام ضمن تشکر از سایت خوبتون
ببخشید اگر یک مجموعه اندیس i,jداریم(به طور مثال هرکدام از 1 تا 10 هستند) و یک جدول به طور مثال e(i,j)داریم. حال می خواهیم اندیس k از جدول e(i,j) مقدار دهی شود این را باید در مجموعه ها چگونه تعریف کنیم؟
سلام
اندیس k چی هست؟
سلام وقت شما بخیر
من محدودیت هایی دارم که در آنها برخی اندیس ها نباید مقدار مساوی بگیرند ( به عنوان مثال شرط i مخالف j ) اما مشکل بنده این است که مجموعه i از لحاظ تعداد و ترتیب اعضا با مجموعه j متفاوت است و من نمیتوانم از دستور ord استفاده کنم. ممنون میشوم راهنمایی بفرمایید.
سلام
i,j رو چجوری تعریف کردین؟ با اضافه و کم کردن عدد های متخلف برای تصحیح آدرس دهی در ord و دستورات or و and میشه شرط رو برقرار کرد.
سلام روزتون بخیر
سامیشنی میخوام بنویس که حد بالاش یکی از متغیر هام هست چجوری میشه نوشت؟
خیلی ممنون میشم راهنمایی کنین
سلام
به ایمیل پشتیبانی سایت یه تیکت بزنین.
سلام
من میخواهم تعداد متغیرهای چند زیرمساله رو که اندیس های یکسان دارند رو بشمرم.
برای مثال:
در زیرمساله 1: مرکز اول محصولات 1 و 3 و 5 رو برای تولید در واحد 1 و 2 برداشته
در زیرمساله 2: مرکز دوم محصولات 1 و 3 و 6 رو برای تولید در واحد 1 و 3 برداشته
در زیرمساله 3: مرکز سوم محصولات 1 و 4 و 6 رو برای تولید در واحد 1 و 2 و 4 برداشته
حالا میخواهم بهم بگه متغیر باینری من برای محصول 1 و واحد 1 سه تا است (در هر سه زیرمساله تکرار شد). برای محصول 3 و واحد 1 دو تاست و غیره.
خیلی سپاسگزار خواهم بود راهنماییم کنید.
سلام
میتونید متغیری که تعریف کردید (مثلا x(ij) مربوط به هر زیر مسئله رو با هم چمع کنید.
سلام من می خواهم کد مقاله ای رو تو گمز بنویسم مسئله مسیریابی حمل و نقل و کراس داک است
ولی محدوده سامیشن ها به شکل مجموعه است
مثلا برای محدوده sum زده I∈RUN
چه طور باید این رو تو گمز بنویسم؟
سلام
از زیر مجموعه ها استفاده کنید. یعنی مثلا یک set اصلی تعریف کنین. بقیه رو بذارین زیر مجموعه ش. هر جا لازم بود مثل این سیگما از زیر مجموعه ها استفاده کنید.
این مثالو ببینید
سلام وقت بخیر چطور می تونم رادیکال یا جذر رو کدنویسی کنم؟
سلام
رادیکار در گمز sqrt هست. مث:
سلام. من یه اندیس دارم تو مدل که مقدارش از یک تا مقادیر یه جدول باید تغیر کنه. وقتی دستور زیر و مینویسم ارور میده . ممنون میشم راهنمایی بفرمایید چطور باید اصلاحش کنم
Card(j(h,n)) رو ارور میده
سپاسگزارم
سلام
card یه دستور ثابت گمز برای مجموعه ها هست. نه جداول.
card رو چجوری تعریف کردین؟
سلام.ممنون از وقتتون.
من بصورت زیر تعریف کردم ولی ارور داد
K/1*2/
L/1*3/
Table m(k,o)
بعد تو محدودیت ها اوردم
L=l=m(k,o)
ارور داد
شما نمی تونید روی ست ها equation بنویسید کاملا غلط است
سلام ممنون از سایت خوبتون.
سیگما j از یک تا ji که i خودش از یک تا سه هست. اندیس j رو چجوری معرفی کنم؟
سلام
شما باید یه اندیس مانند ji(j,i رو تو بخش sets تعریف کنین. مجموعه های چند بعدی رو بخونین حتما
سلام. میخوام شمارنده یرای یک مجموعه تعریف کنم نمیدونم چطور امکان پذیره.
بطور واضح من دو نوع خودرو متفاوت دارم که بصورت
/set k/1 ,2
تعریف کردم از هر کدام از خودرو های 1 و 2 تعدادی موجوده که با (m(K مشخص کردم، حالا میخوام تعریف کنم L از 1 تا تعداد (m(K جلو بره . دو سیگما یکی بر روی k و بعدی روی L. ممنون میشم راهنمایی کنین چطور L و باید تعریف کنم
سلام
کافیه L رو یه اندیس تعریف کنین، و از یک تا بزرگترین مقدار m(1) و m(2) تغییر کنه. بعد تو شرط ها محدودش میکنین.
بسیار ممنونم از راهنماییتون جناب سرودی عزیز
خیلی متشکریم از دوستانی که سایت رو پشتیبانی میکنند
t,ta در بخش ست تعریف شده اند.(به اشتباه متغییر گفتم )
/i/1*4
/L/25
/t /1*24
alias(t,ta
pon یک پارامتر است که مقدارش مشخص است(از اکسل خوانده میشود).عبارت کامل بصورت زیر است.ممنون میشم معادل گمز اون رو بنویسید.
(U(i,t)-U(i,t-1)<U(i,ta عبارت معادله
[(,t ∈[2,L], ta ∈[t+1,min(t+1,pon عبارت شرط
دستور عضویت یک متغییر در متغییر دیگر را به چه صورت باید نوشت.راهنمایی میفرمائئید عبارت زیر را به چه صورت باید نوشت
[(,ta ∈[t+1,min(t+1,pon,
عبارت اصلی مجموعه زیر است و رابطه فوق شرط آن می باشد
(Uta<U(t,ta
متغییر نمی تواند در متغییر دیگری عضو باشد
t چیست ؟ عضو مجموعه است ؟
pon چیست ؟ متغیر است ؟ ست است ؟
سوالتون رو واضح و بهتر بپرسید تا بتوانیم شما را راهنمایی کنیم
سلام من یک برنامه بهینه دارم شما میتوانید حلش کنید
سلام
لطفا با ایمیل سایت یا شماره واتساپ در پایین صفحه در تماس باشید.
سلام.
من یه سری کد نویسی دارم میخونم.
با این تعریف پارامتر مواجه شدم. چه معنی میده ؟؟؟؟
Parameter report j star
اون star منظور نماد ستاره تو گمز نوشته شده.
میخوام بدونم اون ستاره چیه؟ چون اصلا تعریف نشده تو اندیس ها.کاربردش چیه؟
کد رو اینجا قرار بدید
با سلام
من یک محدودیت دارم که میگه فلان متغیر از فلان متغیر دیگر بزرگتر است برای تمام اون اندیس ها به شرطی که اندیس معادله سمت چپ همواره کوچکتر از اندیس معادله سمت راست باشد
نوع اندیس ها هم یکی هست مثلا K
از چه دستوری باید استفاده کنم؟؟؟؟؟
به عنوان مثال مجموعه {B={1,4,5 و مجموعه {C={2,3 یک بار مجموع Xi ها را با ازای iهای عضو مجموعه B محاسبه کرد ( یعنی X1+X4+X5) و یک بار هم Xiها را به ازای iهای عضو مجموعه C محاسبه کرد (یعنی X2+X3).
سلام
آیا در گمز دستوری وجود داره که یک اندیس هر بار به یک مجموعه اختصاص بده مثلا یک بار در سیکما اندیس i عضو مجموعه B باشد و یک بار اندیس i عضو مجموع C ؟
لطفا توضیح بیشتری بدهید
سلام من یک مدل داشته داشتم اما با داشتن ضرایب تو تابع هدف و متفاوت بودن iو j ها تو محدودیت ها و معادلات نتونستم بنویسم؟ میشه راهنماییم کنید.
Min z= (3*x12) +(4*x52) +(3*x23) +(2*x32) +(6*x26) +(4*x34) +(6*x45) +(5*x46) +(4*x64) +(3*x47) +(3*x65) +(7*x58) +(5*x76) +(6*x68);
1.. -20 + x12 = 0
2.. -x12 – x32-x52+ x23+ x26 = 0 ;
3.. -x23+x32+x34 = 0;
4.. -x34-x64+x45+x47+x46 = -15;
5.. -x45-x65+x52+x58 = 5;
6.. -x26-x46-x76+x64+x65+x68 = 0;
7.. -x47+x76 = 0;
8.. -x68-x58 = -10;
18≤x12≤24
0≤x52≤10
0≤x23≤25
0≤x32≤5
12≤x14≤12
0≤x45≤15
0≤x46≤10
0≤x64≤11
0≤x47≤10
0≤x65≤6
10≤x58≤20
0≤x76≤9
xij integer
معادلاتتون را به فرم ماتریسی بنویسید
min CX
AX=>B
بعد بهتر متوجه می شوید که فرم i , j آن به چه صورت خواهد بود
خیلی لطف کردی
اگه به فرض n را در set از 1 تا 20 تعریف کرده باشیم و پارامتری به نام x(n) داشته باشیم.
حال اگر از دستور sum استفاده کنیم به طور مثال چگونه میتوان از n=1 تا n=5 را در sum نوشت.
sum(n,x(n)*2)
یا چطور برای n مقدار گذاشت که تا اخرین عدد n پیشروی نکند.
ممنون از پاسخگوییهاتون
و یا به صورت مثال میخواهیم x(3) را نشان دهیم چه باید کرد؟
x(‘3’)
x.l(‘3’)
سلام
یه همچین عبارتی رو لازم دارید شما.
سلام
من توی برنامم این قید رو دارم:
(A(i,t متغیر هست و ta و td پارامتری از i هستند و به صورت زیر تعریف میشن:
نمیدونم چطور باید اون قید رو بنویسم. (مشکلم اینه که نمیدونم چطور باید ta و td رو که پارامتر هستند جایگزین ست t کنم، با ord هم نتونستم بنویسمش به خاطر این که ta و td متفاوتند)
خیلی متشکر از سایت خوبتون
سلام
میتونین یه اندیس به نام k تعریف کنین که از 1 تا 24 تغییر کنه و kp هم آلیاسش بشه. بعد A(i,k رو به عنوان متغیر تعریف کنین. بعد محدودیت به شکل زیر میشه:
ممکنه مقداری دستکاری بخواد. ولی روش همینه. روشای دیگه ای هم داره البته. همین کارتونو راه میندازه
سلام مهندس برای مثالی که گفتین خطای 375 بعد از gamsbook.dweibull
و خطای 409 قبل از پارامتر آلفا میده.؟
سلام
لطفا به همون گفتگو جواب بدین فقط.
متن خطا رو بفرستین. کسی حفظ نیست شماره ارور ها رو.
سلام
error 375
unit does not exist
unitled-1.gams(31) 3 mb 4 errors
error 409
unrecognizable item – skip to find a new statement
looking for a ‘ ; ‘ or akey word to get started again
unitled – 1.gams(55) 3 mb 4 errors
احتمالاً مشکل از نسخه تون باشه. به روزش کنین. اگه درست نشد ایمیل کنین کد رو ببینم جطور نوشتین.
ارسال کرده بودید برای ایمیل. شما در گمزبوک دومیه دونه oنوشته بودین. دو تابنویسین.
سلام
توزیع وایبول در کجای گمز وبا چه نامی میتونم بنویسم؟
سلام
چندتا راه دارین برای اینکه با گمز وایبول تولید کنین که یه سریش رو عرض میکنم.
1- راه اول:
ببینید هر توزیعی یه سری پارامتر ورودی داره، یه سری هم متغیر مثلا تو توزیع نرمال یه میانگین داره، یه واریانس و یه متغیر به نام x که میشه. حالا اگه فرمول توزیع نرمال رو بنویسیم (فرمول داره هر توزیعی) و یه مقدار شانسی به جای x قرار بدیم، میره برامون یه عدد تصادفی که بر اساس توزیع نرمال تولید شده بهمون بر میگردونه. همین کار رو برای وایبول هم میتونین انجام بدین. یعنی یه الفا، یه بتا و یه دونه x. حالا آلفا و بتا که پارامترن و قطعا شما هم سوالی روشون ندارین، ولی x رو چطور به توزیع بفهمونیم؟ میدونیم که x از صفر تا بی نهایت میتونه باشه. حالا اگه یه عدد تصادفی یکنواخت تو بازه ی صفر تا بی نهایت تولید کنیم و بذاریم تو فرمول وایبول، میتونیم اعداد تصادفی مختلفی براش تولید کنیم.
2- راه دوم:
همین راه بالا رو میتونین از طریق سایر نرم افزارها مثل متلب انجام بدین و به عنوان ورودی به گمز بفرستین.
3- راه سوم:
گمز یه سری کتابخونه داره که یکیشون stochastic library هست که تو اون توزیع وایبول تعریف شده. پس ما باید اول کتابخونه رو فراخوانی کنیم، بعد یه اسم برای توزیعمون بذاریم و توزیع رو فراخوانی کنیم و تو مرحله بعد ازش استفاده کنیم. مثال زیر یک عدد تصادفی با توزیع وایبول برامون تولید میکنه:
دقت کنین که در اینجا واژه ی weibull رو خودمون دلبخواه انتخاب کردیم ولی dweibull نباید تغییر کنه.
ممنون
با سلام و ادب خدمت شما
در مدل من یک مجموعه هست که حد بالای آن توسط توزیع نمایی تعیین می شود، چگونه می توانم آن را شبیه سازی کنم؟
این در حالی است که خروجی توزیع نمایی به صورت عدد بوده و اعضای مجموعه من داری حروفی از قبیل i است.
با تشکر فراوان از شما
سلام
از سه عبارت زیر استفاده کنین.
1-تابع توزیع نمایی
2- تولید عدد تصادفی در گمز
3- دستور $set
اولی رو که بلدین احتمالا. دومی و سومی رو یاد بگیرین.
سلام من 15 تا ماتریس 2500 در 2500 دارم که میخوام اونها رو به 15 تا ماتریس 43 در 43 تبدیل کنم نرم افزار گمز فرمولی برای این ادغام داره؟ میشه لطفا منو راهنمایی کنید.
سپاسگزارم
سلام
رویکردی که میخواین اینکار رو انجام بدین باید مشخص باشه. سوال گنگ هست.
سلام. در مدل من پارامترها و متغیرها وابسته به زمان هستند و در معادلات هم انتگرال دارم. چگونه میتوانم اندیس t که نشانگر زمان است را پیوسته تعریف کنم؟
سلام
انتگرال رو نمیشه تو گمز گرفت. باید دستی عملیات انتگرال گیری رو انجام بدین، بعد وارد گمز کنین. اندیس پیوسته کلا وجود نداره! نحوه نگاه به مسئله تون رو باید عوض کنین.
این محدودیت، محدودیت منابع انسانی ما رو نشون میده که با توجه به جواب گمز متوجه می شیم که این محدودیت منابع رو در نظر نگرفته، برای مثال از منبع نوع 3 تعداد 3 نفر داریم که تو جواب فعالیت های یک و دو همزمان با هم شروع میشن و هردو به 2 منبع نوع سه نیاز دارن که این تعداد منبع رو نداریم
پس یه جای تعریف این محدودیت مشکل داره
به نظر من قرار دادن پارامتر d(i,m) به این صورت در کد گمز یه مشکلی داره
http://uupload.ir/files/a5ps_capture.jpg
این کد
http://uupload.ir/files/39db_capture.jpg
اینم اصل رابطه
این مشکل حل بشه کل کد من آماده میشه و من راحت میشم
سلام
شما شرط رو کامل باید بذارین. طبق مدل شراط به شکل زیر هست:
پارامتره
این فرمول رو میخوام کد نویسی کنم
http://uupload.ir/files/vch1_mahdodiat_12.jpg
که برای بهتر رسوندن منظورم حالت اصلی متغیر X و اون سام رو نوشتم به صورت زیر
http://uupload.ir/files/aohy_mahdodiat_12-2.jpg
یعنی من تو کدم نه متغیر X(d,i,,m,h,s) دارم نه چیزی به نام d
(اما X(t,i,m,h,s) دارم)
این محدودیت هم بیان میدارد که هر منبع تخصیصی به هر فعالیت تا پایان فعالیت مختص آن میباشد
دوست عزیز لطفا فقط به همون مکالمه ایی که داشتیم ریپلای کنید.
در هر صورت، این شرط به این شکل هست
اول باید یه d رو به t آلیاس کنین.
بعد تو x به جای t بنویسین d و روی d هم سیگما ببندین. جلوی سیگما هم شرط زیر رو بذارین.
d(i,m) هم پارامتره table هستش
باز هم به همین صورت باید بنویسم؟
ممنون
درضمن من هر بار همون پیامتون رو ریپلای میکنم
سلام
بله به همین شکل هست.
تشکر
سلام
ایا این کد الان اشکالی داره؟
http://uupload.ir/files/1ny4_mahdodiat_12-3.jpg
همش میگه یه پرانتز یا چیزی کمه
مشکل کجاست؟
سلام
sum((i,s,m,E)$(ord(E)=ord(t)-d(i,m)+1),X(E,i,m,h,s))=l=1
دوست عزیز با بررسی جواب متوجه شدم که این محدودیت مثل اینکه کار نمیکنه
http://uupload.ir/files/pvye_mahdodiat_12.jpg
الان یه سوالی، تصویر بالا پارامتر d(i,m) رو نشون میده ، تو این محدودیت که در موردش صحبت کردیم چطور گمز متوجه میشه که کدوم مد (حالت یا m) برای انجام فعالیت انتخاب شده و مابقی داده ها رو دخیل نکنه؟
نمیدونم منظورم رو خوب بیان کردم یا خیر اما ب نظرم تو این رابطه d(i,m) یه مشکلی داره
سلام
جدول مشکلی نداره. مشکل شما با چه قسمتیشه دقیقا. این رویه استاندارد هست و شمام درست تعریف کردین.
سلام
اگر حد پایین یه سام عدد باشه طریقه نوشتنش این میشه
Sum(i$ord(i)>2,…)
حالا اگه حد پایینش یه عبارت مثل x-2 باشه چی میشه؟
قطعا اینی که مینویسم نمیشه ولی برا اینکه منظورم رو متوجه بشین مینویسم
sum(i$ord(i)>x-2,…)
این میشه؟
سلام
x متغیره یا پارامتر؟
به کانال تلگرام رفتم و اونجا جدول خوب کشیده شده بود و متوجه شدم
الان میگه integer infeasible برم ببینم چشه
بازم سول داشتم مزاحم میشم
http://uupload.ir/files/eo7i_mahdodiat_3.jpg
سلام
این عکس که گذاشتم رابطه پیش نیازی رو توی یک پروژه نشون میده یعنی j زمانی میتونه شروع به انجام شدن بکنه که فعالیت i به اتمام رسیده باشه. در واقع توی این فرمول گفته زمان شروع فعالیت i به علاوه مدت زمان فعالیت i میشه زمان شروع فعالیت j
Z(t,i,m) اگه فعالیت i در زمان t و در حالت m شروع بشه 1 میشه
d(i,m) مدت زمان انجام فعالیت i در حالت m هستش
v(i,m) اگر فعالیت i در حالت m انجام بشه یک میشه
j هم فعالیتی هستش که بعد از i انجام میشه
این دستور رو من چطوری توی گمز پیاده کنم؟
مرسی
سلام
شما دو تا سوال دارین پس. یکی اینکه اندیس t چجوری نوشته میشه و یکی اینکه A چجوری تعریف میشه.
برای اینکه اندیس t رو تو فرمول یا معادله بنویسین. به جاش بنویسین t.uel ولی حواستون باشه که تو تعریف sets اولین مجموعه ای که تعریف میکنین t باشه. با ord هم میشه این کار رو انجام داد که عمدا نگفتم. چون ممکنه مشکلاتی هم پیش بیاره.
برای لحاظ کردن روابط پیشنیازی، به پست زیر در کانال گمزبوک مراجعه کنین.
پیشنیازی فعالیت ها در گمز
const3(i,j).. sum(m,sum(t,t.uel*Z(t,j,m)$pr(i,j)))+sum(m,d(i,m)*V(i,m))=l=sum(m,sum(t,t.uel*Z(t,i,m)$pr(i,j)));
این کد همون عکسی هست که نوشتم
اگه این محدودیت رو از کد حذف کنم توابع هدفم مقدار دارن ولی وقتی اینو وارد میکنم همه توابع هدف صفر میشن
امکانش هست کد رو بزارم شما بررسی کنیدش؟
سلام
ببینید برا بررسی کد باید وقت بذارم و واقعا نمیرسم. حذفش که صحیح نیست. مجددا مدل رو بررسی کنین با داده ها. اول کارتونه تازه
سلام
من یه مجموعه دارم به اسم i،و دوتا زیر مجموعه c و p. بعدش alias گذاشتم که بگم h,n با c الیاس دارن y,o با p.اما در کل همه اینا از یه جنس اند.اما یه متغیر مثل dd(y,n) با dd(n,y) ارور میده که میگه متغیرات با اندیسا متفاوت نباید یکسان باشن که اندیسا من از یک جنس هستند فقط رنجشون متفاوته….
set
i/1*6/
c(i)/1*3/
p(i)/4*6/
j/1*4/;
alias (m,i);
alias (c,n,h);
alias (p,o,y);
سلام
تو تعریف متغیر از dd(i,m) استفاده کنین، ولی به همون شکلی که نیاز دارین به کار ببرین که مشکلی پیش نیاد.
با سلام
این قسمت را بارها خوانده ام منتها نمی توانم برای این مثال کاربردیش کنم
اگر لطف کنین فرم مجموعه ها رو بنویسین ممنون میشم
با تشکر
سلام
لطفا اگه گفتگویی با هم داشتیم فقط به همون ریپلای کنین. مرسی
با سلام
اگر میشه در تعیین مجموعه های زیر راهنماییم کنین.
ما 7 تا ژنراتور داریم g1*g7
5 تا شرکت داریم که این ژنراتور ها برای ان ها می باشد j1*j5
از این ژنراتور ها g1,g2 ,g7 برای شرکت j1
و g3 تاg6 هم به ترتیب برای j2 تا j5
سیگما هایی که داریم برای این ژنراتور های هر شرکت نوشته شده است که من نمی توانم مجموعه های این ژنراتور های هر شرکت را تعریف کنم تا بتونم معادله سیگما رو تشکیل بدم .ممنون میشم راهنمایی کنید
با تشکر از سایت بسیار خوبتون
سلام
مچکرم. تاپیک زیر رو بخونین مشکلتون حل میشه.
مجموعه های چند بعدی در گمز
با سلام
این قسمت را بارها خوانده ام منتها نمی توانم برای این مثال کاربردیش کنم
اگر لطف کنین فرم مجموعه ها رو بنویسین ممنون میشم
با تشکر
سلام
وققتون بخیر
من یه سوال داشتم اگه براتون مقدوره کمکم کنین.
من یه کدی برای یک شبکه مخابراتی دارم مینویسم. یه مجموعه دوتایی از ترافیک دارم. یعنی
set t /1,2/;
حالا یه مجموعه دیگه ای دارم که شامل یه سری گره مثل firewall و proxy و IDS هست که در هر ترافیک ترتیب اینها فرق داره. من این مجموعه رو اینجوری تعریف کردم
set L / firewall, IDS, proxy, proxy,firewall, IDS/;
set N(t,L)/1.firewall,1.IDS, 1.proxy, 2.proxy, 2.firewall, 2.IDS/;
حالا میخوام لینکهایی که بین این گره ها وجود داره رو تعریف کنم یعنی میخوام این مجموعه رو به صورت کد بنویسم
{(firewall,IDS) , (IDS,proxy) , (proxy,firewall), (firewall,IDS)}
این مجموعه لینک ها رو نمیدونم چطوری تعریف کنم. در حقیقت این مجموعه به عدد ترافیک بستگی داره یعنی در ترافیک اول و دوم لینکها فرق دارن.
ممنون میشم راهنمایی کنین.
سلام
قبلش باید عرض کنم که مجموعه ی N تنها شامل yes و no هست. و تغییر جای دو المنت مثل firewall و IDS به این معنی نیست که ترتیبشون هم عوض شده باشه. برای تعریف این ترتیب باید دید تأثیر این ترتیب تو کار شما چیه.
برای تعریف این لینک ها شما یه جدول تعریف کنین که سطر و ستونش شامل مجموعه ی L و مجموعه ی Lp که آلیاس هم هستن باشه. مثلا سطر L و ستون LP . بعد هر جا که میخواین این رابطه وجود داشته باشه، بزنین 1 و هر جا که رابطه ندارن رو صفر و یا خالی بذارین.
سلام مجدد
ممنون از اینکه وقت گذاشتین و روی سوالم فکر کردین.
مساله من طوریه که یه مشتری یه ترافیک رو درخواست میکنه که این ترافیک شامل ترتیب خاصی از این گره هاست. مثلا من این ترافیک رو با t1 تعریف میکنم و ترتیبش اینطوریه {firewall,IDS,proxy}
حالا یه درخواست ترافیک دیگه ارسال میشه که ترتیب گره هاش با اولی فرق میکنه که من اسمشو t2 میذارم و ترتیبش اینطوریه {proxy,firewall,IDS}
مساله یه پارامتر داره به اسم N(t) که شامل این توالی گره هاست. یعنی من وقتی میخوام یه عضو از N(t) رو فراخوانی کنم باید دقیقا بگم تو ترافیک اول عضو دوم رو میخوام . از طرفی N به t یعنی همون ترافیک هم وابسته اس.و این کار منو مشکل کرده. راستش نمیدونم N(t) رو باید به صورت مجموعه تعریف کنم یا پارامتر.
برای لینک ها هم منظورتون رو متوجه شدم.یک دنیا ممنون بابت راهنماییتون.
سلام
پس همون t که تعریف کردین رو به صورت مجموعه تعریف کنین که شامل اعداد طبیعی 1 تا تعداد اون بسته هایی که میخواین داشته باشین. سپس N رو که اندیس های زیر رو داره به صورت یک جدول تعریف کنین:
به این شکل
سلام وقت به خیر
من دو تا مجموعه G و B رو به این صورت /G1*G4/ و /B1*B3/ تعریف کردم که رابطه بینشون (MAP(G,B به شکل زیره
/G1.B1,G2.B1,G3.B2,G4.B3/ . و مارجینال کاست هر کدوم از B ها رو محاسبه کردم حالا می خوام مارجینال کاست هر
کدوم از G ها رو طوری تعیین کنم که برابر با مارجینال کاست B یی باشند که تو (MAP(G,B به هم مرتبط شدن. ممنون
میشم اگه راهنمایی کنید که این کد رو بنویسم.
سلام
از شرط استفاده کنین. پست زیر احتمالا بهتون کمک میکنه.
شرط و مجموعه های چندبعدی در گمز
سلام خیلی ممنون
یعنی p در کد به عنوان کا پرین عمل میکنه.
در ضمن در مدل یک متغیر صفر ویک دارم که در صورت بر قراری سه شرط برابر یک میشه و در صورتی که حتی یک شرط بر قرار نباشه متغیر صفر یک برابر صفر میشه سوالم این بود که در کدوم قسمت کد باید بنویسم
سلام
این p که من زدم یه مثاله. شما میتونین اسم رو kprime تعیین کنین، یا k2 …
برای شرط ها قضیه فرق میکنه. اولا باید تو معادلات تعریف بشه. ثانیا اگه فقط پارامتر توش باشه شرط ها، چیزی خاصی نداره. و با دلار میتونینا ین عمل رو انجام بدین. اگه متغیر توش باشه روش برخورد یه جور دیگه و معمولا ابتکاریه.
سلام وقت بخیر
می خواستم بدونم میشه در قسمت sets
دوتا اندیس به شکل K , K ‘ معرفی کرد
که هر دوتاش هم نمی تونن برابر هم باشن
وقتی می نویسم K ‘ به رنگ قرمز در میاد
سلام
در خصوص فرمايش شما، مگه ميشه يك انديس را بدون اينكه مجموعه اي داشته باشه در يك محدوديت بكار برد؟
ما بايستي مجموعه اي داشته باشيم كه اعضاي اين مجموعه متشكل از پارامترهاي مسئله هستند. مثلا مجموعه H و بعد بتونم انديس t را به عنوان نماد اين مجموعه استفاده كنم و با روشي كه شما گفتيد فيلتر گذاري كنم. حالا براي ايجاد چنين مجموعه اي مشكل دارم. تو زبانهاي مدلسازي ديگه اين كار شدني هست كه شما پارامترها را در قالب مجموعه تعريف كنيد ولي من در گمز چنين موردي را نديدم.
مهندس لطفا به همون گفتگویی که داشتیم ریپلای کنین فقط. تشکر
مشکلی نیست. شما میتونین یه t/1*100/ تعریف کنین، بعد تو سیگماها ازش استفاده کنین، بگین که t از فلان پارامتر تا فلان پارامتره. مشکلی هم پیش نمیاد
با تشكر فراوان
خواهش میکنم. موفق باشید
سلام جناب محمودي
سوالي در خصوص مجموعه ها داشتم. من مجموعه اي به شكل زير دارم:
مجموعه H شامل حالت تركيبي از چند پارامتر هست كه به شكل زير هست:
t عضوي از مجموعه H كه خود H شامل پارامترهاي r(j) , h(j) , p(j) هست كه در يك عبارت جمع sum از r(j) شروع ميشه و به h(j)-p(j)+1 ختم ميشه. و اينكه در حالت خاصي نقطه شروع مجموعه در جمع نيازمند گرفتن يك max يا min از مجموعه هست.
اصلا ميشه از پارامترها يك مجموعه ساخت؟
ممنون ميشم راهنمايي كنيد.
سلام
اینکه فرمودین ترکیبی هست رو من متوجه نشدم. ولی برای حدود مشکلی نیست. میشه گفت:
برای max و… هم تو همون شرطا میشه لحاظ کرد
با سلام مجدد.
فكر ميكنم با روشي كه فرمايش داشتيد بتونم مشكلم را حل كنم.
ايا ميشه هر كدوم از حدود را به صورت جدا و در قالب يك مجموعه مجزا نوشت و بعد به كمك اجتماع اين مجموعه ها در معادلات انديس ها را ارجاع داد؟
با تشكر
البته در خصوص استفاده از فيلتر گذاري كه فرمايش داشتيد من نياز به تعريف مجموعه اي دارم كه بتونم در محدوديت ها انديس را به ان ارجاع بدم و بعد با فيلتر گذاري حدود را تعريف كنم. اون مجموعه را ميشه به فرمي كه در پست قبل عرض كردم (اجتماع مجموعه ها) ايجاد كرد. من نميدونم چطور ميشه پارامترها را در قالب مجموعه نمايش داد.
ممنون
منظور شما چگونگی تعریف اندیس t هست؟
سلام
فکر نمیکنم به صرفه باشه فکر کردن روش. وقتی پارامتر دارین با این روش خیلی ساده کار انجام میشه
البته شرمنده یادم رفت بپرسم که خود Mi یا ( M( i رو به چه صورتی تعریف کنم ، بصورت پارامتر ؟ چون فک نمیکنم بشه تو بخش اندیسها تعریفش کرد … خلاصه سرتون رو زیاد درد نیارم این سه تا یعنی (i و r و Mi) بهم مربوطند باید جوری تعریفشون کرد که بهم وابسته باشند مخصوصا i و r
با سپاس
سلام ببخشید یه سوال داشتم
ما i تا مرحله کارگاهی(کارگاه تولید) داریم که قطعه باید از این مراحل عبور کند و با این مجموعه نشان میدهیم { 2,1,…,s} در اینجا نماد s تعداد مراحل هستش , البته اینجا تو کامنت متاسفانه مجموعه رو برعکس تایپ میکنه منظورم از راست به چپ مینویسه بهرحال ، در هر مرحله هم تعدادی ماشین موازی یکسان قرار دارند که اندیس ماشین های موازی در هر مرحله رو با r نشان میدهیم بصورت { 2,1,…,Mi} که در اینجا هم Mi نماد تعداد ماشین موازی در مرحله iام است خوب الان من این رو چجوری تو قسمت set تو نرم افزار ” گمز ” کدینگ کنم چون بنظرم r خودش یک اندیس اندیس دار !! هستش. یعنی r ی که مربوط به مرحله iام هستش به عبارتی r وابسته به i هست
اگر این مشکل پایان نامم رو حل کنید واقعا یعنی یه کوه از پشتم ورداشتید به هرکس گفتم چیزی نداشت بهم بگه
با سپاس از سایت پر مغز و عالیتون
سلام
توضیحاتی که لازم دارین مقداری زیاده. شما باید از مجموعه های دو بعدی یا TABLE ها نهایت استفاده رو بکنین.
مجموعه های دو بعدی رو میتونید اینجا مشاهده کنید.
سلام روز شما بخیر.
دو قطعه مختلف دارم که با k و h نشان داده می شود. که باید روی دستگاه j پردازش شوند. این دو را با دستور alise مشابه می کنم. در بعضی از محدودیت ها ذکر میشه که h مخالف با k می باشد.
لطفا بفرمایید دستور آن در گمز چگونه هست؟ آیا به شکل زیر صحیح است؟ آیا مورد دیگری نیز باید به آن اضافه شود؟
k / 1*k/
alias (k,h),
شرط در محدودیتها $(ord(k ord(h)
و یک سوال دیگر اینکه مجموعه ها و پارامترهای من مقادیر عددی ندارن آیا باید حتما برای آنها نمونه عددی در نظر گرفت یا به صورت پارامتری هم جواب می دهد؟
برای مثال
t /1*t /
k / 1*k/
و اینکه برای مورد k که محدوده آن هم از 1تا k تعریف میشود باید حرف k تغییر کند یا مشابه بودن آن مشکلی ندارد؟
سپاس فراوان
سلام
سوال اول: $ ( ord(k) ne ord(h
سوال دوم: اگه بخواین از قبل بهش عدد بدین، اولبا باید اون اسامی یکی نباشین، سایرا باید از دستور $set استفاده کنین که بشه به t1,k1 مقدار داد. 1*t1…
سلام ببخشید یک سوال داشتم
بعد از این که چند set تعریف کردیم و بخواییم چند alias تعریف کنیم باید چکار کنیم یا در واقع این چیزی که من نوشتم درسته یانه؟
سلام
درسته.
ولی میشه با یه دونه آلیاس هم نوشت همه اینا رو.
سلام
ببخشید یه سوال داشتم
میخام دو تا مجموعه J و K تعریف کنم که J عضو دو مجموعه M و W هستش و K هم عضو دو مجموعه W و E.
سوال اولم اینه که اینا رو چجوری تعریف کنم و دوم این که مثلا عبارت ∑▒〖F(I,J,K,T)〗 که سیگما روی J و K باشه رو چجوری بنویسم.
ممنون از سایت بسیار خوبتون
سلام
برای سوال اول اجتماع و اشتراع مجموعه ها رو بخونین.
برای سوال دوم، خیلی عادی قبلا چیکار میکردین الان هم همونه. مشکلی بابتش دارین که من متوجهش نشدم؟
مرسی و خواهش میکنم
موفق باشید
سلام و خسته نباشید
یه مجموعه زمان داریم t={1,2,..,11} یه مجموعه فعالیت داریم j={1,2,3,4} یه wj داریم که زمان شروع شدنی فعالیت j است.
w1={0,1,2,3,4} و w2={1,2} و w3={8} است.
w زیر مجموعه t و وابسته به اندیس j است.
مشکل من در تعریف مجموعه w است.
چطور میتونم w(j,t) تعریف کنم که در محدودیت زیر به کار ببرم:
co1(j).. sum(wj, x(j,t))=e=1
سلام
تاپیک مجموعه های چند بعدی رو بخونین حتما مشکلتون حل میشه. و مرسی که سوالتون رو شیک میپرسین.
سلام روز همه گی بخیر. میخواستم ببینم این فرمول چه طور نوشته میشه
Γ_jp= √(-2 |J| lnα )
Γ_jp^’= √(-2 |J| lnα )
Γ_jpt^”= √(-2 |J| lnα )
Γ_(j^’ pt)^”’= √(-2 |J| lnα )
لازم به ذکر می باشد در فرمول های بالا مقدار |J| برابر تعداد پارامترهای غیر قطعی محدودیت مورد نظر می باد. که این مقدار برابر t در هر محدودیت است. اگر Γ از t بزرگتر بود مقدار t درنظر گرفته می شود و اگر کوچکتر از t بود مقدار Γ را درنظر می گیریم.
α نیز حداکثر مقدار نقض شدن محدودیت می باشد (نشدنی شدن جواب) که در این مسئله برابر 0.01 درنظر گرفته شده است.
این طور درسته ؟
gama(j,p)=sqrt(-2*ord(j)*log(alfa));
gamaa(jj,p)=sqrt(-2*ord(jj)*log(alfa));
gamaaa(j,p,t)=sqrt(-2*ord(j)*log(alfa));
gamaaaa(jj,p,t)=sqrt(-2*ord(jj)*log(alfa));
سلام
خیلی واضح نیست، ولی برای ord ممکنه به مشکل بر بخورین، اگه به ord گیر داد، از j.uel استفاده کنین. قبلش هم تست کنین که این j.uel چی رو بر میگردونه (حتما)
سلام
من مدلم دو هدفه است.. با معیار جامع حلش کردم اروراشو برطرف کردم..ولی جواب بهم نمیده …اومدم بررسی کردم و متوجه شدم برای تابع هدف اولم جواب میده ولی برای تابع هدف دومم جواب صفر میده به همین علت جواب نهایی بهم نشون نمیده…نمیدونم چجوری درستش کنم؟؟؟
سوال دیگری ک داشتم اینه ک من یک اندیس دارم از یک تا t و مقدار t یک عدد هست ک از یک فرمول به دست می آید چجوری در گمز اینو بنویسم؟
سلام
تو معیار جامع یه حد پایین و بالا داریم برای هر هدف، شما باید این دو تا رو پیدا کنین اول، مثلا یه بار با هدف اول مدل حل میشه و هدف دوم میره تو محدودیت، هر جوابی که برای دو هدف به دست اومد رو ثبت میکنیم. برای هدف دوم هم همینکارو میکنیم. بعد تو مخرج اون هدف جدید باید تفاضل بیشتر مقدار هر هدف رو بذارین. مثلا برا اولی اینجوریه:
(F1max-f1)/(f1max-f1min)
برای سوال دوم هم از دستور دلار و ord استفاده کنین. تو کامنتای سایت بگردین
با سلام چجور میشه درایه دوم یک پارامتر که روی یک مجموعه است فراخوانی بشه؟ مثلا x(i)
مثلا درایه دوم x(2) فراخوانی بشه؟
سلام
x(‘2’)
ممنون از پاسخ تان.
ما یک مجموعه به نام t یک دوره یک روزه (t=24) در برنامه تعریف کرده ایم، در طول این یک روز یک سری خودروی برقی در یک ساعتی به نام t connect ( که زمان این ساعت را نمیدانیم )به شبکه وصل میشوند تا شارژ شوند. از طرفی در زمان t full این خودورها کامل شارژ میشوند که باید از شبکه جدا شوند( t full) را هم نمیدانیم. این زمان هارو چگونه تعریف کنم در مجموعه؟
ینی در معادلات sum را جداگانه هم روی t داریم و هم از t connect تا t full .
منظورم واضح است؟
سلام
اگه tful, tconn تو معادلات مختلف استفاده شدن:
اولا t که از یک تا 24 یا از صفر تا 24 هست.
برای اون دوتای دیگه، اونا اندیس نباشن بهتره. به جاش یه جوری به خود t ربطش بدین. مثلا فرض کنیم که tfull, tconn جفتشون متغیر اینتیجر مثبت هستن که حداکثر فلان هستن (بین صفر تا 24). حالا اگه از دستور ifthen تو معادله ای که روی t از tful تا tconn رفته sum بسته استفاده کنیم، اینجوری از حالت اندیس بودن خارجش کردیم.
البته تا جایی که من دیدم تو مدل ها tfull برابر با tconn به اضافه ی زمان مشخصی هست. مثلا هر دستگاه حتما یه ساعته شارژ بشه.
این توضیحات من ممکنه به مدل شما بخوره. شایدم مفاهیم شما بیشتر باشه و کل صحبت های من رد بشه.
سلام وقت بخیر، من یک مجموعه 24 ساعته دارم به اسم t ، در نوشتن تابع هدف sum رو باید روی یک t connect(زمانی که یک وسیله به برق برای شارژ متصل می شود)تا t full (زمانی که فول شارژ می شود) تعریف کنم که مقادیر اینهارو ندارم. میخاستم ببینم این دوتا زمان رو چگونه در set تعریف کنم و از طرفی در نوشتن معادله چگونه حد سیگما ( از t connect تا t full ) را تعریف کنم. ممنون میشم اگرجواب دهید
سلام
یعنی چی مقادیر tfull رو ندارین. مقداری شفاف تر بگین لطفا. مرسی
من تابع هدفه مدلم هم توان دو و هم جذر در قسمت هایی داره الان ک اجرا کردم ..خطا در اجرا میده و Exec Error at line 77: division by zero (0) میگه مشکلش چیه واس توان ها اشکال میگیره
سلام
تو مخرج یکی از کسرهاتون یه متغیر هست که ممکنه مقدار صفر بگیره. برای رفع کردنش یه عبارت خیلی کوچیک رو به مخرج اضافه کنین.
الیته برای رادیکال و توان هم ممکنه این ارور ها پیش بیاد. که یا خطیش کنین. یا اینکه بذارینش تو قدرمطلق
سلام وققتون بخیر
من می خوام کد یک مدلو بنویسم. 3تا اندیس داره که یکیشو من نمیدونم چجوری باید تعریف کنم!
{|k ∈ {1, . . . , |K این ینی چی؟ واسه عدد دادن فرق خاصی با حالت بدون قدرمطلقش نمی کنه؟
سلام
این معمولا منظورش اندازه ی k هست، به معنی تعداد. که معمولا میشه بزرگترین عدد k
حتی اگرم قدر مطلق باشه فرقی هم نمیکنه. خب قدر رو حساب میکنین، بعدش میگین کا از یک تا فلان میشه.
سلام
من توی مدلم ی اندیس دارم p ک زیرمجموعه ی اندیس دیگست t،مشکلم اینجاست ک مشخص نیس p دقیقا چه مقدارهایی میگیره ک توی set تعریف کنم ب عنوان زیرمجموعه،در حل مساله مشخص میشه p چ مقداری میگیره
حالا باید pرو چطوری تعریف کنم؟
ممنون
سلام
مثلا یک پارامتر 0 یا 1 بگیر که اگز عضو t بودن یک باشه اگر نه صفر . بعد در هر جا p نیاز بود این پارامتر ضرب کن و بگو به ازای برقراری این پارامتر عملیات انجام بده . p هم متغیر بگیر.
یک همچنین ابتکاریو باید انجام بدی
سلام
خسته نباشید.
من تو مدلم یه سری محصولات دارم که با اندیس i تعریفشون کردم. این محصولاتم دو دسته هستن…یسری محصولات فقط با مواد اولیه اصلی تولید میشن و یه سریاشون، هم با مواد اصلی و هم با مواد بازگشتی…چطور میتونم برای این محصولات دو دسته اندیس تعریف کنم؟
ممنون میشم راهنماییم کنین.
سلام
تاپیک اجتماع مجموعه ها رو بخونین حتما.
اجتماع مجموعه ها
مجموعه های چند بعدی
سلام خسته نباشید. من تو یه برنامه ام میخواستم در یک محدودیت از سه تا اندیس استفاده کنم .ولی دستورش رو نمیدونم .اگه ممکنه لطفا راهنماییم کنید.محدودیت بنده به شکل زیر می باشد و i و j و k اندیس ها هستند:
v(i,k)-q(i,j)=e=e(i,j)
i∈S,i≠0)∑(j∈S,j≠i,j≠N+1) Xij ≤|S| -1 ∀S⊂N-{0,1)∑
N اجتماعی از i,j هست.
مرسی
(i∈s,i≠0) ∑(j∈s,j≠i,j≠N+1) Xij ≤|S|-1 ∀S⊂N-(0,1)∑
N هم اجتماع مجموعه i,j هست.
مرسی
سلام
یه راهنمایی میتونه این باشه که:
sum((i,j)$(ord(i) <=s and ord(j) <= s and ord(i)........,x(i,j)=l=s-1;
سایر شرطا رو خودتون اعمال کنین. و اینکه s رو پارامتر تعریف کنین اینجا
سلام.خسته نباشید.از وبسایت خوبتون ممنون.
من توی نوشتن محدودیت حذف زیر تور در مسئله مسیریابی مشکل دارم ..می تونین راهنماییم کنید
یک مجموعه داریم که بین نقاطش دو به دو حر کت می کنیم که این رو به صورت یک مجموعه و alias تعریف کردم..
برای حذف زیر تور محدودیتو چطوری باید بنویسم.
مرسی
سلام
ممنون و خواهش میکنم.
محدودیت رو اینجا بنویسین که تو کد نویسی کمکتون کنم.
(i∈S,i≠0)∑(j∈S,j≠i,j≠N+1) Xij ≤|S| -1 ∀S⊂N-{0,1)∑
N هم اجتماع دو مجموعه i,j می باشد.
مرسی
سلام. من دو تا مجموعه تعریف کردم:
b /i1,i2,k1,k2,k3,k4,k5/
h/ j1,j2,j3,k1,k2,k3,k4,k5/
که هر کدام از مجموعه b,h در اندیس گذاری متغیرهای جدا استفاده میشن.
حالا میخوام مجموعه K(b) customer /k1,k2,k3,k4,k5/ و r(h) customer /k1,k2,k3,k4,k5/ تعریف کنم. اما در نهایت میخوام k,r باهم alias بشن. ولی هرجوری اینکارو انجام میدم ارور میده $406,158
ممنون میشم راهنمایی کنید
به نظر من یه مجموعه بزرگتر تعریف کنین که اجتماع b,h باشه مث مجموعه زیر:
m /i1,i2,j1,j2,j3,k1,k2,k3,k4,k5/
بعد b,h,k رو به عنوان زیر مجموعه m در نظر بگیرین و اخر سر هم r,k رو الیاس کنین
سلام
ممنون از پاسختون
یه سوال دارم . آیا اون طوری که شما x رو تو برنامم تعریف کردین، x رو به عنوان یه بردار می شناسه؟چون توی برنامم x باید یک بردار باشه
سلام
ببینید بردار تو گمز به یه المنت میگن که یه سری اندیس داره. شما اگه چیزی رو اندیس دار تعریف کنین، تو گمز یعنی بردار تعریف کردین. حالا این بردار اگه هنوز عددی نگرفته باشه، اسمش متغیر و اگه عدد گرفته باشه میشه پارامتر، و یا متغیری که سطح اون مشخص شده x.l
سلام
یه سوال دیگه دارم
می خوام یه برنامه خطی بنویسم و اون رو حل کنم. بعد جواب این برنامه رو فراخوانی و از اون به عنوان ورودی یه برنامه دیگه استفاده کنم . این کار رو چطور انجام بدم؟
سلام
میتونین تو یه کد این رو انجام بدین. مثلا وقتی مدل حل شد، با دستور x.l برای متغیر x تو مدل بعدی از اون استفاده کنین. دستور solve اول میاد مدل اول رو حل میکنه. مقادیر بهینه متغیرهای مربوطه (که با پسوند .L مشخص میشن) رو می تونین به مدل بعدی به عنوان پارامتر یا یک جواب اولیه معرفی کنین
سلام
من بازم توی فراخوانی یک سطر دلخواه از ماتریس مشکل دارم همون خطا رو میده برنامم فقط توی خط آخر خطا میده .
sets i /1*4/
alias (i,j);
parameters
T(i,j)
Q(i,j)
QT(i,j);
execseed = 20000*(frac(jnow));
loop ((i,j),
if (ord(i) = ord(j),
Q(i,j)=0;
else
Q(i,j)= uniformInt(10,100);
);
);
option QT < Q;
T(i,j)=Q(i,j)+QT(i,j);
display Q,QT,T;
Q('3',j);
سلام
شیوه display کردن در gams اینجوری نیست که. همین که Q رو display کردین کافیه که. میبینین اونجا مقدارشو. خط اخرو حذف کنین
درست شد مشکل از تساوی بود
تغییرات رو اعمال کردم ولی بازم همون خطاها رو میذه . جمع ماتریسی توی گمز نماد خاصی نداره؟
سلام
ببخشید که خیلی سوال می پرسم
من با دستور T(i,j)=e=Q(i,j)+QT(i,j); می خوام جمع دو ماتریس رو بدست بیارم ولی خطا میده T(i,j) رو هم parameter تعریف کردم. نمی دونم مشکل کجاست؟روی خط یکی مونده به آخر خطا میده .اینم برنامم:
sets i /1*4/
j /1*4/;
parameters
T(i,j)
Q(i,j)
QT(j,i);
execseed = 20000*(frac(jnow));
loop ((i,j),
if (ord(i) = ord(j),
Q(i,j)=0;
else
Q(i,j)= uniformInt(10,100);
);
);
option QT < Q;
T(i,j)=e=Q(i,j)+QT(i,j);
display Q,QT,T;
سلام
نه خواهش میکنم. خوشحال میشم کمک کنم. شما QT(i,j) تعریف نکردین، QT(j,i) تعریف کردین. واسه همین ارور میده.
بعدش اینکه وقتی i,j مث همن alias کنین همیشه. این یه قانونه که کارا رو براتون آسونتر میکنه
بله جمع، من اشتباه کردم
برای تولید یه ماتریس متقارن تنها راهی که بلدم اینه که خود ماتریس تصادفی رو در ترانهادش ضرب کنم. شما راه دیگه ای سراغ دارید؟
سلام
من راه دیگه ای سراغ ندارم. جمعشون فک کنم متقارن بشه. نه؟
یه کار دیگه ای که می خوام انجام بدم اینه که کابر بتونه بعد ماتریس رو به عنوان یک عدد دلخواه در هر بار اجرا به برنامه بده . ممنون میشم اگه راهنماییم کنید.
یعنی چی؟ بعد بده کجا استفاده کنه. با چه دستوری
من زیاد با گمز کار نکردم ولی توی متلب اصول برنامه نویسی ما این طوری بود که یه برنامه می نوشتیم و برای بُعد مساله یک پارامتر (مثلا n) تعریف می کردیم . موقع حل مساله چون برای ما تغییر بُعد خیلی مهمه بُعد مساله رو مرتبا عوض می کنیم تا زمان اجرای برنامه رو برای بُعد های مختلف مقایسه کنیم. می خوام برنامه رو طوری بنویسم که هر بار خواستم اجراش کنم از کاربر بُعد مساله رو بخواد و بعد از وارد کردنش توسط کاربر ، مساله اجرا بشه .آیا این کار توی گمز امکان داره؟( البته بُعد مساله همون بُعد ماتریس مربعی هست.)
سلام
بله.
وقتشه که مقداری محیط گمز رو تست کنین. مقداری با متلب فرق داره. میتونین از دستورایی نظیر $set استفاده کنین.
با سلام مجدد
خطاهای برنامه رو گرفتم اما در فراخوانی یک سطر دلخواه از ماتریس با اون روشی که گفتید خطای 409 رو میده
در ضمن برای ترانهاده ماتریس توی گمز دستوری وجود داره ؟
سلام
احتمالا سیمیکالون رو جا گذاشتین شما یه جایی.
برای ترانهاده دو روش هست. دو روش زیر رو ببینید. اولی روش کند، دومی روش سریع تر هست. برای سایز پایین فرقی نمیکنن ولی سایز که بره بالا، دومی خیلی خیلی سریعتر هست.
set i /1*5/
;
alias(i,j);
parameter a(i,j),b(j,i),c(j,i);
a(i,j)= uniformint(1,10);
* slow way
b(j,i)=a(i,j);
* fast way
option c < a; display a,b,c
سلام
طاعاتتون قبول
در مسئله مسیریابی با گره های مشتری 3،4،5 برای عدم تشکیل زیرتور در بخش مشتری یک مجموعه به شکل زیر تعریف کردم:
set
ComN/1*4/
sub(ComN,r)/ 1.(3 , 4)
2.(3 , 5)
3.(4 , 5)
4.(3,4,5)/
;
بعد در بخش alias با توجه به نوع محدودیت عبارت زیر را وارد کردم که به خاطر چند بعدی بودن مجموعه نمیپذیردش و من نمیدونم باید چ طور این مشکل رو حل کنم:
alias
(sub,SP)
;
محدودیت حذف زیرتوری هم که به مدل اضافه کردم به صورت زیر هست:
SubtourCons(ComN,out).. sum(Sub(ComN,r),sum(Sp(ComN,rr),w(r,rr,out))) =L= sum(Sub(ComN,r),1)-1;
خیلی ممنون میشم اگر من رو راهنمایی کنید.
سلام
ممنون و خواهش میکنم.
آلیاس مجموعه چند بعدی در گمز جایز نیست.
شما همون جوری که sub رو تعریف کردین. sp هم تعریف کنین و هیچ مشکلی هم پیش نمیاد
خیلی ممنون از پاسختون لطف کردید
تا الان یه ماتریس تصادفی عدد صحیح با درایه های روی قطر اصلی 0 تولید کردم ولی روی خط if خطا میده و من نمی دونم مشکل از کجاست
sets i /1*4/
j /1*4/;
parameters
Q(i,j);
loop ((i,j),
if (i=j);
Q(i,j)=0;
else
execseed = 100000*(frac(jnow));
Q(i,j) = uniformInt(10,100);
);
سلام
اندیس خالی نمیشه تو گمز استفاده کرد.
ord(i) = ord(j)
ممنون از پاسخ سریع و مفیدتون
می بخشید اگه بخوام ماتریس تصادفی متقارنی تولید کنم که عناصر روی قطر اصلی آن 0 و بقیه عناصر به صورت تصادفی با چگالی 60 درصد مخالف صفر باشند چطور باید این کار رو انجام بدم؟
اگه کمکم کنید واقعا ممنون میشم
خواهش میکنم.
ببینید شما باید از ترکیبی از دستوراتی که عرض میکنم این کار رو خلاقانه انجام بدین.
مثلای میاین به ازای اندیسهای پارامترتون loop تعریف میکنین.
بعد تو این لوپ داده رندمی که میخواین رو تعریف میکنین.
تو خط بعدی میگین عناصر روی قطر رو صفر کن.
بعد یه شرط if میذارین. اگه تعداد عناصری که بیشتر از صفر هستن، معدل 60 درصد کل آرایه ها هست که هیچی خلاص. اگه نه که تکرار کن رویه رو.
البته حلش زمان ببره این کار. از طرفی داده تصادفی ای که تولید میکنین شما باید از رویه ی زیر پیروی کنه.
تولید عدد تصادفی در گمز
قطعا راه های بهتری هم هست که فعلا به ذهن من نمیرسه.
سلام
چطور با دستور table یه ماتریس تصادفی تولید کنم؟
بعد از تولید اون می خوام مثلا سطر iامش رو فراخوانی کنم . با چه دستوری این کار رو انجام بدم؟
ممنون میشم اگه کمکم کنید
سلام
اگه تصادفی میخواین. نیازی به table نیست. مثال زیر هر دو سوال شما رو جواب میده:
parameter a(i,j);
a(i,j)=uniform(2,7);
a('3',j)
باسلام.
سوالم آینه که میخام یک اندیس مثل s تعریف کنم که اعضای اون بین ماکسیمم دوتا مقدار و مینیمم دوتا مقدار دیگه هست.برای تعریف مجموعه s باید چطور بنویسم؟آیا در گمز میشه مجموعه ای تعریف کرد که مثلا عضو اولش از ۶تا۹ و عضو دومی از ۲تا ۸ و به همین ترتیب بازه ماکس و مین در نظر بگیرم؟
سلام
خسته نباشید
ببخشید من مدلمو که ران میکنم تو بعضی از جوابهام MIP Solution با Final Solve م فرق داره….به نظر تون مشکلی داره…مرسی
MIP Solution: 1119393.462000 (373311 iterations, 1041 nodes)
Final Solve: 66220.349000 (9509 iterations)
سلام
تنهای چیزی که میدونم اینه که این بازیگوشیه cplex هست :دی
چیزی دیگه ای فعلا نمیدونم. هر وقت فهمیدم قطعا بهتون خبر میدم
ممنون…الان این جوابی که درآورده درسته 1119393.462000
من میتونم اینو گزارش کنم….
سلام آقای محمودی خسته نباشید.
سوالم این بود که اگه دو مجموعه i و j و یک پارامتر m(i) داشته باشیم. و مجموعه j از یک شروع بشه تا m(i ) حالا مجموعه j رو چطور تعریف کنیم؟ تو sum آیا نکته خاصی برای نوشتنش ایجاد میشه؟؟
ممنون میشم راهنماییم کنین
سلام
ممنونم همچنین.
لازم نیست تعریف j رو دستکاری کنین.
کافیه تو همون دستور sum که میگین از دستورات شرطی و ord استفاده کنین. مثلا
sum((i,j)$(ord(j) <=m(i)),x(i,j))
سلام
وقت بخیر
میخواستم اگه امکان داره در وارد کردن این معادله در گمز بهم کمک کنید معادله رو به این شکل وارد کردم ولی ارور زیادی دریافت میکنم.
i,ip) .. sum(i,ip) $alfa(i,ip)0,m(i,ip)=e=0)
سلام و خسته نباشید
بنده 3 مجموعه دارم i,j,k و میخوام یه مجموعه تعریف کنم به نام e که شامل تمام ارتباطات i به j به اضافه ی تمام ارتباطات j به k باشه.نمیخوام مجموعم ارتباطی بین i به k نشون بده.
چه جوری اینا باید بنویسم؟
الان این مجموعه که تعریف کردم ارور میزنه!
/i/i1*i10
/j/j1*j10
/k/k1*k5
;/(e(i,j,k)/(#i.#j),(#j.#k
سلام
تو اینجور مواقع، اگه من به جای شما اندیس تعریف کنم، این مجموعهی e رو به صورت پارامتر تعریف میکنم. که مثلا هر وقت i1 به j1 برابر یک شد یعنی این رابطه برقراره و بالعکس. حالا شما از این میتونین تو معادلاتتون استفاده کنین. به عنوان شرطی که هر وقت e یک شد معادله برقرار باشه.
تو تعریف مجموعه ها (همین سوالی که دارین میپرسین) هم می تونین این کار رو بکنین:
set e(i,j,k)/i1.j2.(k1,k2)/
این دیگه بستگی به این داره که نوع ارتباطا چجوریه. از اون علامت شارپ هم استفاده کنین واسه وقتی که طیف وسیعی رو شامل بشه. رو مجموعه زیر هم فکر کنین:
set e(i,j,k)/#i.#j.#k/
این مراحلی که فرمودید کمکی نکرد.برا روشن شدن سوالم خدمتتون عرض کنم فرض کنید هرکدام از مجموعه های بالا(i,j,k) گره های مشخصی هستند و میخوام پرامتر هزینه ی بین هر دو گره را بنویسم.یه راه هست که برای هر جفت مجموعه گره یک table بنویسم و هزینه های حمل و نقل را در اون بنویسم.اینجوری با توجه به مسئله ی خودم شاید 10 الی 15 جدول در گمز بنویسم.
در صورتی که میخوام با تعریف مجموعه ی جدید فقط یک table بنویسم.از طرفی طبق مسئلم مسیرهام مشخصه.به عبارتی از’ i به j’ و از طرفی ‘j به k ‘.اصلا نمیخوام هزینه ای به عنوان پارامتر بین i به k وارد کنم.یعنی تو گمز یه جدول کلی بشه که بین i و j و هم چنین بین j و k را ‘YES’ و رابطه ی بین i به k را ‘NO’ نشان دهد.
اما مطلبی که شما فرمودید مسیر i به j به k را نشان میده به عبارتی سه مجموعه را لحاظ میکنه و دو مجموعه میخوام.
این مراحلی که فرمودید کمکی نکرد.برا روشن شدن سوالم خدمتتون عرض کنم فرض کنید هرکدام از مجموعه های بالا(i,j,k) گره های مشخصی هستند و میخوام پرامتر هزینه ی بین هر دو گره را بنویسم.یه راه هست که برای هر جفت مجموعه گره یک table بنویسم و هزینه های حمل و نقل را در اون بنویسم.اینجوری با توجه به مسئله ی خودم شاید 10 الی 15 جدول در گمز بنویسم.
در صورتی که میخوام با تعریف مجموعه ی جدید فقط یک table بنویسم.از طرفی طبق مسئلم مسیرهام مشخصه.به عبارتی از’ i به j’ و از طرفی ‘j به k ‘.اصلا نمیخوام هزینه ای به عنوان پارامتر بین i به k وارد کنم.یعنی تو گمز یه جدول کلی بشه که بین i و j و هم چنین بین j و k را ‘YES’ و رابطه ی بین i به k را ‘NO’ نشان دهد.
شاید بگید یه جدول تو اکسل بنویسم و همه ی گره ها را در اون وارد کنم و هزینه هایی که وجود داره را وارد کنم و هزینه هایی که وجود نداره را خالی بذارم.چون اندیس هام زیاده دستی وارد کردن خیلی زمانبر هست و میخوام در گمز به صورت عدد تصادفی ایجاد کنم!
اما مطلبی که شما فرمودید مسیر i به j به k را نشان میده به عبارتی سه مجموعه را لحاظ میکنه و دو مجموعه میخوام.
سلام
وقتی که شما میخواین عدد تصادفی وارد کنین، خب بهتره این کار رو بکنین:
اول یه مجموعه به اسم E1 تعریف کنین. که جفتهای i,j رو yes کنه. بعد ست دیگهای مثل E2 که j,k رو yes کنه.
تو مرحله بعد مثلا همچین پارامتری دارین. c(o,d) شما اول باید اول به عنوان پارامتر تعریفش کنین. تو مرحله بعد بهش عدد تصادفی بدین. به شکل زیر:
set E1(i,j)/#i.#j/
E2(j,k)/#j.#k/;
parameter c(s,ss);
c(s,ss)$(E1(s,ss) or E2(s,ss))=uniform(2,10);
فقط دقت کنین که s مجموعه مرجع هست که اجتماع سه مجموعهی دیگه هست. و بقیه به عنوان زیر مجموعه ش تعریف شدن. ss هم آلیاسشه
تشکر و سپاس
سلام مثلا مجموعه p از 1 شروع میشه
اما تو یکی از محدودیت ها میخوایم بنویسییم سیگما روی p اجتماعش با 0 !
چجوری بنویسم ؟
و همچنین این شرط هم روی سیگما هست p مخالف p1
pو p1 مخالف هم باشند!
این رو از دستور شرطی $ استفاده کنین:
$(ord(p) <>ord(p1))
سلام
شما بجز p یه p1 هم تعریف کنین که اجتماع p با صفر باشه. این اجتماع رو اینجا میتونین یاد بگیرین.
فقط یادتون باشه وقتی متغیرها رو که اندیس p دارن. با اندیس p1 تعریف کنین. دیگه یه سری نکته دیگه :دی
p,p1 alis هستنا!
خب p2 تعریف کنین. چه فرقی میکنه اخه. مهم اینه که یکیشون صفر رو شامل بشه. و اون یکی زیر مجموعه ش باشه
سلام
مدل من به صورتیه که محصولات از کارخانجات به مراکز توزیع فرستاده می شود.2 نوع کارخانه داریم و دو نوع مرکز توزیع.الان 4 تا مجموعه دارم کارخانجات نوع 1، کارخانجات نوع 2،مراکز توزیع نوع1 و مراکز توزیع نوع 2. 8 گره داریم. میخوام مجموعه ای تعریف کنم که شامل تمام کارخانجات-و مجموعه ای شامل تمام مراکز توزیع باشه.
sets
/p1/1,2
/p2/1,2
/w1/1,2
/w2/1,2
/p/set.p1,set.p2
;/w/set.w1,set.w2
الان این تعریف درسته؟
به ازای هریک از این مجموعه ها محدودیت هایی وجود دارد.طبیعتا باید مجموعه ای به نام j نیز تعریف شود.مثلا j به ازای مجموعه p1 و یا w2و یا Wو …چگونه باید j تعریف شود؟
سوال آخر اینکه در تعریف متغیر ها ،متعیری وجود دارد به این صورت که مقدار محصول انتقال داده شده بین گره ها (X)در حالت بهینه چقدر است؟
با این تفاسیر این متغیر باید چگونه تعریف شود؟
سلام
نکته اول اینکه به جای اینکه p1 رو به شکل بالا تعریف کنین، به شکل زیر تعریف کنین (اینجوری اجتماعشون که میشه p یا w هم معنی پیدا میکنه):
p1/p01,p02/
سوال دوم: برای تعریف j از alias میتونین استفاده کنین. بستگی به مجموعه و معادلات شما داره. alias معمولا جواب میده
سوال اخر: خب یه متغیر مثبت یا integer تعریف کنین مشکلی پیدا نمیکنین که. نمیدونم مشکلتون چیه
ممنون بابت جواب سریعتون.
در مورد جواب سوال اول که دادید منظورتون تعریف به صورت زیر هست؟؟
sets
/w1/1,2
/w2/1,2,3
/w/w1,w2
/p1/1
/p2/1,2
;/p/p1,p2
اما در مورد سوال دوم باید از alias استفاده کرد.نحوه ی نوشتن اون درسته؟
;(alias (w,j),(P,j
در سوال قبل مطلبی فراموش کردم اونم اینه که یک سطح مشتری هم داریم.(کارخانه-مرکز توزیع-مشتری).
حال اینکه بین کارخانه و مرکز توزیع میزان انتقال محصول(Xpw) , و بین مرکز توزیع و مشتری(Xwc) که c مجموعه مشتری هاست. من میخوام فقط یک متغیر به صورت Xod تعریف کنم که o(مبدا) و d(مقصد) باشد و شامل هر دو مورد بالا باشد.
سلام
سوال اول: نه درست نیست. میگم وقتی p1 و اینا رو تعریف میکنین، یه شکل زیر تعریف کنین…
p1/p11,p12/
p2/p21,p22/
سوال الیاس: نه غلطه. یکی رو j بگیرین، یکی دیگه هم jj تو مجدودیت ها هم دقت کنین که کدوم رو بکار می برین.
سوال آخر: شما برای اینکه زوج های مبدا و مقصد رو تعریف کنین، بهتره از مجموعه های چند بعدی استفاده کنین که تو همین بخش توضیح داده شده.
خواهش میکنم و موفق باشین
سلام
مدل من به صورتیه که محصولات از کارخانجات به مراکز توزیع فرستاده می شود.2 نوع کارخانه داریم و دو نوع مرکز توزیع.الان 4 تا مجموعه دارم کارخانجات نوع 1، کارخانجات نوع 2،مراکز توزیع نوع1 و مراکز توزیع نوع 2.یعنی 4 گره داریم.
باز میخوام مجموعه ای تعریف کنم که شامل تمام کارخانجات-و مجموعه ای شامل تمام مراکز توزیع باشه.
sets
p1/1,2/
p2/1,2/
w1/1,2/
w2/1,2/
p/set.p1,set.p2/
w/set.w1,set.w2/;
الان این تعریف درسته؟
به ازای هریک از این مجموعه ها محدودیت هایی وجود دارد.طبیعتا باید مجموعه ای به نام j نیز تعریف شود.مثلا j به ازای مجموعه p1 و یا w2و یا Wو …چگونه باید j تعریف شود؟
سوال آخر اینکه در تعریف متغیر ها ،متعیری وجود دارد به این صورت که مقدار محصول انتقال داده شده بین گره ها (X)در حالت بهینه چقدر است؟
با این تفاسیر این متغیر باید چگونه تعریف شود؟
باسلام وخسته نباشید.
من در مدلم متغیری به این صورت دارم: C(j,0) = 0
که j نشان دهنده کارهاو متغیری که صفر شده( i)نشان دهنده ماشین هاست. چه طور می تونم این محدودیت رو اضافه کنم.(در صورتی که اندیس ماشین ها از صفر تعریف نشده اند).
ممنون
سلام
ببینید این محدودیتی که میگین از رو یه مفهوم اومده. ببینید مفهوم چی میگه. دقیقا همون باید پیاده شه تو مدل و تو گمز. اگه به این نتیجه رسیدین که همین درسته، باید یه صفر به اندیس i اضافه کنین. فقط دقت کنین که سایر محدودیت ها تحت تاثیر قرار نگرین. به عبارتی مجددا همه رو چک کنین. اگه با صفر درست بود محدودیتش میشه یه همچین چیزی:
eq(j).. c(j,'0')=e=0;
سلام
من سه مجموعه دارم که با هم ارتباط دارند به عبارتی بهم وابسته اند من این وابستگی را در یک جدول تعریف کرده و عناصر آن را صفر و یک قرار داده ام.جدولی که تعریف کردم
N(j,p,h) هستش.
حال در یکی از محدودیتهایم باید اندیس hj باشد hj-1 . که در اینجا h من با تغیر مقدار j تغیر می کند. که این مقادیر رو من در جدول بیان شده در بالا تعریف کرده ام. من برای اینکه hj-1 را درنظر بگیره ازشرط زیر استفاده کردم.
..((cont(j,p,h)$(ord(h) lt card(h
ولی این شرط فقط اولین h من رو درنظر میگیره. و اصلا توجهی به مقادیر وابسته به j ندارد.
سوالم این است که به چه صورت باید تعریف کنم که کلا ازhj ها یکی کم کنه؟
با تشکر
سلام
در بخش مجموعه ها- مجموعه های چند بعدی، این پست رو خوب بخونید، احتمالا مشکلتون رفع میشه. در ضمن، شرطی که گذاشتین همیشه برقراه و یه شرط بدیهی گذاشتین توی کد که کمکی بهتون نمیکنه.
سلام
یه سوال داشتم. اگر اندیس رو تعریف کرده باشیم i=1,…,I و دریکی از محدودیت ها داشته باشیم i=1,…,I-1 . این I-1 رو به چه صورت باید در محدودیت نوشت.
با تشکر
سلام
همین شکلی که گفتین بنویسین، مشکلی پیش نمیاد
سلام
یه سوال داشتم از خدمتتون اگه راهنمایی کنین ممنون میشم.
من دو تا sum دارم که sum اول روی p=1..P و sum دوم روی j=1…np هستش. حال با عوض شدنp مقدارsum دوم یعنیnp تغییر پیدا میکنه. حال من به چه صورت باید مجموعهjو معادله رو تعریف کنم که با تغییر p ، مقدارnp را از درون مجموعه تعریف شده انتخاب کند.
با سپاس
سلام
jو P و n رو تعریف کنید اول. بعدش با دستور ord -که تو بخش معادلات خیلی روش بحث شده تو کامنتا- شرطی که لازم دارین رو پیاده کنین.
لطفا بگید که ((sum(i, z(i را که i باید از مجموعه ((E(p,i انتخاب شود رو چطور بنویسم؟
سلام
اینطوری:
sum(i$(E(p,i),z(i))
من یه مجموعه ای از گره ها دارم i
یه مجموعه از گروه ها هم دارم p
می خوام زیر مجموعه ای از گره ها رو داشته باشم که گروه p از آن عبور می کند ip
مثلا 6 تا گره داریم که گروه p فقط از 3 تاشون می گذره.
می خوایم رو ی این زیر مجموعه سامیشن ببندیم
چجوری این زیر مجموعه رو باید مشخص کنم
سلام
اگه منظورتون اینه که مثلا i از i1 تا i6 باشه ولی p از i2 تا i4 :
set i/i1*i6/
p(i) /i2*i4/
;
موفق باشین
ممنون از این که پاسخ می دید
نخیر منظور من اینه که مثلا اگه مجموعه i از 1 تا 6 و مجموعه p از 1 تا 10 هست. زیر مجموعه
i(p=1)=1,3,5
i(p=2)=1,4,5,6
و همین طور تا
i(p=10)=2,3,5
خواهش میکنم
اینو بسته به کاردش میشه همه جوره نوشت. این پیشنهاد میشه:
set i/1*6/
p/1*10/
E(p,i)/1.1,1.2,1.5,2.1,2.4,2.5,2.6 ,....../
سلام
اولا ممنونم که وقتتون رو میذارین .
ثانیا سوالم اینکه
من یه متغییر (x(i,j,k,d دارم
این متغییر تو دو تا از محدودیت ها به این صورته :
(x(i,0,k,d و (x(0,i,k,d
اما این ارور میده
سلام
باید به شکل زیر بنویسین:
x("0",i,k,d) or x(i,"0",k,d)
البته اگه i و j صفر رو هم شامل بشن.
سلام آقای مهندس
من میخوام مساله پوشش پشتیبان رو توی گمز بزنم. یک مجموعه نقاط تقاضا دارم کهi هستن. مجموعه تسهیلات که J هستن. حالا به تعداد i ها مجموعه هایNi دارم که هرکدوم از اون مجموعه ها بسته به شرایط شامل چند تا j هستن.من نمیدونم این مجموعه های Ni رو چجوری به گمز معرفی کنم و توی محدودیت ها چجوری بنویسم. (توی محدودیت ها یه سیگماxj دارم ، به ازای هرi، که در اونj عضو Ni هستش)
سلام
این میتونه کمکتون کنه:
Set i/1,2,3/
J/5,6
N(i,j) /1.5,1.6,2.5,3.6 /
;
این n که تعریف شد نشون میده که یه n داریم که به ازای i های مختلف تعدادی j میگیره. مثلا اگه i برایر با یک باشه j برابر یک یا دو میشه، اگه i برابر سه باشه j فقط میتونه 6 باشه. بعد هر جا میتونین این مجموعه رو به کار ببرین
مثلا تو یه محدودیت میتونین بگین که این محدودیت به به شرط n برقرار باشه
به همین شکل ادامه داده می شود
ممنون خیلی خیلییییییی زیاد 🙂
با عرض سلام واحترام،ميخواستم بپرسم كه اگر مجموعه اي مثل m از مقدار 0 شروع شود ولي در بعضي از محدوديت ها مقدارش از 1 شروع شود بايد چه كار كنيم مهندس؟مثلا متغير x(m,nدر تابغ هدف مقدار انديس m اش از 0 شروع ميشود ولي در محدوديت ها با 1؟؟ممنون ميشم بنده رو راهنمايي كنيد؟
cost .. z =e= sum((i,j)$(ord(i) >= 1, c(i,j)*x(i,j)) ; z
سلام و خسته نباشید
من یک مجموعه انبار دارم که تعداد انبار را مساله تعیین میکنه.
چطور میتونه این مجموعه با تعداد نامعلوم را تعریف کنم و تو محدودیت ها که روی اندیس ها جمع بسته میشه و این اندیس ممکنه اندیس انبار باشه به مشکل برنخورم؟
ممنون از شما
سلام
به نظرم شما حدس میزنید که حداکثر چند انبار میتونه باشه. مثلا 10 تا. پس یه مجموعه 10 تایی اینتخاب کنید. اونایی که انبار بشن متغیر مربوطش که مثلا باینری هست یک میشه بقیه صفر
خواهش میکنم
سلام
تعريف مساله
i تا بيمارستان داريم که در هربيمارستان P(i) تا بيمار داريم که مي خواهيم هر بيمار به طور کاملا متمايز مشخص باشه. که اگر بعدا خواستيم فراخوانيش کنيم بتونيم
مجموعه هاش چه جوري مي شه
i /1*6/
سلام
من اینجوری تعریفش میکنم.
اول برای بیمارستان و بعدش برای بیمارا مجموعه میسازم. i برای بیمارستان j برای بیمار. مثلا 4 بیمارستان داریم با 20 بیمار.
set
i/1*4/
j/1*20/
;
بعدش هم میتونم مجموعه p رو تعریف کنیم. ولی من از دستور table استفاده میکنم. مثلا میگم که اگر p(i,j)=1 باشه یعنی اینکه بیمار jام تو بیمارستان iام است.
table p(i,j)
.
.
;
موفق باشید
ممنون از پاسخ تون
ولي مساله اينه که مي خوام سيگما ببندم روي بيماراي مثلا بيمارستان اول (که بيماراش فقط علي و حسن هستن)( براي محاسبه هزينه درمان در اين بيمارستان. اگه بشه با زير مجموعه تعريف کرد خيلي بهتره برام
ممنون از پاسخ تون
ولي مساله اينه که مي خوام سيگما ببندم روي بيماراي مثلا بيمارستان اول (که بيماراش فقط علي و حسن هستن)( براي محاسبه هزينه درمان در اين بيمارستان. اگه بشه با زير مجموعه تعريف کرد خيلي بهتره برام
مثلا 9تا بيمارستان داريم
sets i Hospital / H1*H9 /
net(pi,i) /pi1.(1,2)
pi2.(1,2,3)
pi3.(1,2)
pi4.(1)
pi5.(1,2)
pi6.(1,2)
pi7.(1,2,3)
pi8.(1)
pi9.(1,2)
حالا وقتي مي خواييم علي رو فراخواني کنيم ميگيم بيمار دوم بيمارستان اول
شکل بالا درست. توي يکي از از مساُيل کتابخانه گمز ديدمش (Numerical Puzzle )
p نشوندهنه بيمار
سلام
ببین، شما یا باید مجموعه تعریف کنی، یا پارامتر. خب. از جفتشون به عنوان یه مفهوم میتونی استفاده کنی.
مثال برای روش مجموعه:
set hos/1*9/
p/1*30/
pi(hos,p) /1.2,1.25,2.3,2.10 , ..../
;
یعنی مثلا بیمار شماره 25 تو بیمارستان شماره 1 بستریه (یا بهش تخصیص داده شده)
روش پارامتر هم همین کاربرد رو داره. مثلا تو محدودیت بنویسین که به شرطی که pi برابر یک باشه و… .
موفق باشین
با سلام
میشه بفرمایید با چه دستوری میشه تعداد اعضای یه مجموعه رو پیدا کرد. یه چیزی مثل دستور ord که شماره یک عضو از مجموعه رو میده.
ممنون
سلام
هر جا به تعداد اعضا برخوردین، از دستور card استفاده کنین.
ord شمارنده هست. و card تعداد اعضای مجموعه
موفق و پیروز
سلام مجدد
جناب محمودی یه سوال دیگه دارم از شما، آیا دستوری هست که مقدار قدرمطلق رو حساب کنه؟ یعنی مثلا می خوایم قدرمطلق یه مقدار ورودی رو به یه اسکالر نسبت بدیم.
ممنون
سلام
تابع abs این کار رو میکنه
خواهش میکنم
با سلام
اگه ممکن هست در خصوص برنامه ریزی غیر خطی نیز تاپیک بزارید. متشکرم
سلام
چشم
خواستم یه سلام عرض کنم و یه خسته نباشید برای سایت خوبتون
من همونم که اون بالا تو مجموعه تعریف کردین هیییین 😀
فدا همونی که اون بالا تعریف شده بشیم ما
سلام ببخشید مزاحمتون شدم
خواستم یه سلامی عرض کنم
من همونم که اون بالا تو مجموعه تعریف شده 😀
سلام . من یه اندیس j دارم که تعداد روز هاست . j=1 ta 30 . ویه اندیس s دارم که از j تا j+3 هست.اما خب j تو هر مرحله ممکنه از یه مقدار شرو شه .مثلا ممکنه روز 5 ام شرو شه تا روز 8 ام . یا اینکه روز 10 شروع بشه تا روز 13 ام. من الان باید چجوری اندیس s رو تعریف کنم ؟ اگه بنویسم /j+3*j/ خب j هم خودش مجهوله دیگه! چیکار کنم؟
سلام
پس ظاهرا بستگی به متغیر یا محدودیتی که دارین s رو باید استفاده کنین. شما نمیخواد s رو تعریف کنین. فقط روی s و j آلیاس alias بزنین. بعدش تو ر محدودیتی که اشاره ای به s شد، شما بهش بگین که s به شرطی که s=j+3 تا s=j
خیلی خیلی ممنون .اما این شرط رو چجوری بذارم ؟ اخه تو دستور sum اینجوری مینویسیم دیگه (( sum (s,x(i,s,,k اینجا که من نمیتونم واس s شرط بذارم .چیکار کنم؟
شرط میتونه شبیه این باشه:
c1(i,k,j).. sum(s$(ord(s) >= ord(j) and ord(s) <=ord(j)+3),x(i,s,k));
؟ میشه جواب بدید؟
گیر کردم
سلام
من در مدلم یه مجموعه محصولات j دارم و باید مجموعه هایی تعریف کنم که اجزای هر محصول Z(j) رو نشون میده، چطور باید این کار رو انجام بدم؟
سلام
نفهمیدم
فرض کنید من در کارخانه 2 نوع محصول تولید میکنم این دو نوع محصول رو در یک مجموعه محصولات به صورت j/1,2/ تعریف میکنم حالا فرض کنیم برای تولید محصول اول 3 جز نیازه که محصول اول از مونتاژ این 3 جز حاصل میشه، برای این محصول باید مجموعه اجزای اون مشخص بشه, z(1)/1,2,3/ من اول پارامتر item(j) رو تعریف کردم که تعداد اجزای هر محصول رو نشون میده، حالا وقتی z(j) به صورت z(j)/1*item(j)/ تعریف میکنم خطا میده
سلام
اولا اینکه item رو تعریف کردین.
این کدی که نوشتم رو بهش دقت کنین. تمام اون چیزی که نیاز دارین توش هست.
set
j/1*2/
i/1*6/
item(j,i)/1.1,1.6,2.4,2.5/
;
display i,item
کد بالا نشون میده که دو نوع محصول داریم. تعدادی جزء داریم که از 1 تا 6 نام گذاری شدن. اجزای 1 و 6 برای محصول اول و اجزا 4 و 5 برای تولید محصول دوم استفاده میشن.
هر جا خواستین از اجزای محصول فلان صحبت کنین، میتونین از item استفاده کنین.
با سلام من میخوام مجموعه های بیشتر از دو بعد تعریف کنم، چطور باید این کار رو انجام بدم؟
سلام
بستگی به هدف و کاربردش داره. یه جستجو بزنید. multi-dimensional sets in gams
با سلام
ممنون از مطالب آموزنده و مفیدی که در اختیار دوستان قرار می دهید.
سوال من این هست که اگر در مجموعه ها، اعضای یک مجموعه تا کاردینالیتی مجموعه دیگر تغییر کنند، چگونه می توان آن را در گمز پیاده سازی کرد.
به عنوان مثال مجموعه j یک مجموعه 10 عضوی است و مجموعه r نیز با توجه به مقداری که j می گیرد از یک تا کاردینالیتی j تغییر می کند.
با سپاس فراوان
سلام
شما میتونین که r رو یک پارامتر تعریف کنین و r(j)=card(j); قرار بدین. و به جای مجموعه ها از پارامتر مشابه استفاده کنین.
سلام .
مجموعه تک عضوی تعریف می شود؟
به صورت زیر تعریف کردم:
Singleton Sets
from(i) contains always one element: the from c
next(j) contains always one element: the to city
; tt(t) contains always one element: the current subtour
اما این دستور را نمی شناسد و خطا می دهد:
Unknown symbol 140
لطفا راهنماییم کنید
سپاس
سلام
بله تعریف می شود. شما ابتدا باید مجموعه i و j و t رو تعریف کنید. اگر تعریف نکنید، خطای 120 را میدهد (معرف یا همان اندیس ها را میخواهد)
و همچنین کلمه ی singleton رو هم بردارید. اگر حذف نشود، خطای 140 را می دهد (خطای unknown symbol)
نمیدونم در چه حد جوابتون رو گرفتید. ولی برای اطلاعات بیشتر به gams model library برید و عبارت tsp1 رو جستجو کنید، کد را که باز کردید، خطوط 43 تا 48 بهتون کمک میکنه
موفق باشید
سلام. آقا ترکیب مجموعه ها چطوری هست؟ من دو تا مجموعه H و O دارم که اجتماع آنها مجموعه ی S می شود.
ممنون میشم اگر کمکم کنید
سلام
یکی از تاپیک های آینده سایت همین هست.
به دو صورت میشه این سوالتون رو جواب داد.
1. i و j دو مجموعه هستند که مجموعه k رو تشکیل میدن. کدش به صورت زیر میشه:
Set i/1*10/
j/20*30/
k/set.i,set.j/
2. i و j زیر مجموعه k هستند:
Set k/yek,do,site,medad/
i(k)/yek,do/
j(k)/site,medad/
دقت کنین که اگر خواستین که ویژگی هایی که مجموعه ی مرجع میگیره زیر مجموعه ها هم بگیرن باید از کد دوم استفاده کنین.
موفق باشید
خیلی ممنون فک کنم اینی که نوشتین همونی باشه که دنبالش بودم
خواهش میکنم
هستم خدمتت مهندس