بارها و بارها تأکید کرده ایم که شما می توانید با تعریف مجموعه های چند بعدی هم سرعت حل مدل، هم نظم کد نویسی و هم دقت آن را بالا ببرید. به یاد داشته باشید، در مدل هایی که نیاز به تعریف set دارند، مهم ترین بخش همین تعریف set خواهد بود.
در تعریف مجموعه ها(set یا اندیس) شما به چند مهارت نیاز دارد.
این مهارت ها شامل تعریف مجموعه، اجتماع و اشتراک مجموعه ها، مجموعه های چند بعدی، مجموعه ی تهی، مجموعه های بدون بعد و… هستند.
در این تاپیک به تعریف مجموعه های چند بعدی پرداخته و جهت کاربرد آنها چند مثال را بیان می کنیم.
فرض کنید شما دو مجموعه ی زیر را دارید:
set i/a,b/ j/c,d,e/
حال قصد دارید یک متغیر تعریف کنید به نام x(i,j) که تنها زمانی بتواند عدد بگیرد که i برابر a و j برابر e باشد. به یاد داشته باشید، که تعریف این متغیر در دستور variable با شرط گفته شده غیر ممکن است! از طرفی یک متغیر تنها و تنها زمانی در کد شما دارای معنی است که در حداقل یک Equation مورد استفاده قرار گرفته باشد. پس باید متغیر را یکبار تعریف کرده و هر جا که مورد استفاده قرار می گیرد با یک شرط به گمز بفهمانید که تنها وقتی i برابر a و j برابر e باشد این محدودیت اجرا شود.
عملی که در اینجا مورد نیاز است تعریف یک مجموعه چند بعدی است. به مثال زیر توجه کنید:
set i/a,b/ j/c,d,e/ E(i,j)/a.e/
اگر کد بالا را ران کنید و مجموعه E را display کنید نتیجه به شکل زیر خواهد بود:
---- 4 SET E -- e a YES
به عبارتی وقتی I برابر a و j برابر e باشد مجموعه ی E عبارت yes را به خود می گیرد و این بدین معنی است که در سایر مواقع این مجموعه عبارت No را به خود میگیرد. این مجموعه را مجموعه ی چند بعدی می گویند.
حال برگردیم به تعریف متغیر. مثال زیر را مشاهده کنید:
set i /a, b/ j /c, d, e/ E(i,j) /a.e/; variable x(i,j); . . . Eq6$(E(i,j)).. y(i,j)-sqrt(something)=e=x(i,j)+...;
کد بالا نشان دهنده ی این است که محدودیت 6 فقط زمانی صادق است که حاصل E برابر با yes باشد. این امر دقیقا معادل این است که متغیر x را با شروط گفته شده تعریف کرده باشیم. دقت کنید که هر جا x داشتید باید شرط را هم به کار ببرید.
شما در گمز می توانید مجموعه هایی را تعریف کنید که بیش از 20 بعد داشته باشند! مثالها دیگری که در گمز می توانند تعریف شوند در کد زیر مشاهده می شوند:
<code>set i /a, b/ j /c, d, e/ ij1(i,j) /a.#j/ ij2(i,j) /a.c, a.d, a.e/ ij3(i,j) /#i.#j/ ij4(i,j) /a.c, a.d, a.e, b.c, b.d, b.e/ ij5(i,j) /#i:#j/ ij6(i,j) /a.c, b.d/ ij7(i,j) /#i:(d*e)/ ij8(i,j) /#i:(d,e)/ ij9(i,j) /a.(c,d)/; display i,j,ij1,ij2,ij3,ij4,ij5,ij6,ij7,ij8,ij9
به نحوه ی به کار بردن علامت های پرانتز، شارپ و “.” و “:” دقت کنید. احتمالا سریع مفهوم پرانتز و “.” را دریافت می کنید. عبارت شارپ به معنی تمامی مجموعه و علامت “:” نیز به معنی نظیر به نظیر بودن مولفه های به کار برده شده طبق دستور ord می باشد.
دستور بالا را ران کنید و مقداری در آن تأمل کنید. احتمالا مطالب مفید و کاربردی فراوانی را درخواهید یافت.
جهت آشنایی بیشتر با تعریف مجموعه ها و دستور Set به نوار دسته بندی، تعریف مجموعه ها مراجعه فرمایید.
با تشکر
مدیریت سایت gamsbook.ir
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
سلام وقت بخیر
اگر من یک مدل دو هدفه داشته باشم
دو جواب بهینه برای هر هدف وجود داشته باشه
اگر بخوام دو تا جواب را در یک جدول قرار بدم میتونین کدش را بفرستید
سلام.
كد ان را ميتونيد در كتابخانه گمز و به اسم epsilon پيدا كنيد.
به سادگي ميتونيد مدلتون را تطبيق بديد با ان.
موفق باشيد.
سلام وقت تون بخیر
برای پیدا کردن دو مقدار بزرگ یک مجموعه عدد از چه رابطه ای باید استفاده کرد؟ همچنین برای پیدا کردن دو کوچکترین مقدار؟ دستورهای smax و smin بزرگترین و کوچکترین مقدار رو میدن، من دو مقدار بزرگترین و دو مقدار کوچکترین رو می خوام
سلام
چند روش داره، مثلا میتونین سورت کنین. اما اگه فقط دو تا رو میخواین، روش زیر ساده تره:
از همین رویکرد می تونین برای کمترین و دومین کمترین استفاده کنین.
خیلی ممنونم از پاسخ تون.
موارد بيشتر را ميتوانيد در كانال ما ببينيد:
گمز بوك
سلام یه ماتریس به عنوان جواب دارم به شکل زیر
میخام این ماتریس 33 تا سطر داشته باشه و به جای 7 ستون که زیرشان یک درج شده دیتا را در داخل یک ماتریس با ابعاد 33 سطر و دو ستون به این نحو بیاره که در سطر اول تا ششم زیر ستون دوم درج کنه «1»، در سطر هفتم و هشتم زیر ستون دوم درج کنه «2»، در سطر نهم زیر ستون دوم درج کنه «3»، و به همین ترتیب جلوی سطر چهاردهم زیر ستون دوم درج کنه «7» تا الی آخر؛ به عبارتی جلوی هر سطر به جای عدد یک، شماره ستون جدول بالا رو بنویسه
سلام وقت بخیر
با فرض اینکه پارامتر شما x هست و i سطرها باشند، و y هم پارامتری که دنبال محاسبهاش هستید، به همچین کدی نیاز دارید:
دقت کنید که ممکنه نیاز باشه از لوپ استفاده کنید یا از شرط x=1 در شرط ها استفاده کنید. بسته به نیاز میتونید از کدی که فرستادم استفاده کنید.
سلام مجدد
نتونستم جواب بگیرم ممنون میشم این رو برای من حل کنید ماتریس بالا رو میخام به ماتریس زیر تبدیل کنم
سلام. اين چيزي هست كه نياز داريد:
موارد بيشتر در @gamsbook
با سلام
مجموعه ای مانند زیر داریم( تعداد ژنراتورهای نوع i)
می خواهیم تعداد عضو هر مجموعه را به یک متغیر دیگر مانند N_GT نسبت دهیم. چه کنم؟ من به روش زیر انجام دادم خطا دارد. لطفا شکل کد درست را درج نمایید.
set
i index for number of Gas Turbines(GTs) /1*4/
variable
N_GT Positive variable
EQUATION
NGT max number of GTs
NGT..N_GT=e=maximum(i)
سلام و ادب
منظورتون از تعداد اعضای مجموعه چی هست؟ سوال شفاف نیست
عرض سلام و خسته نباشید.
در مورد به دست آوردن عدد اصلی یک مجموعه چند بعدی سوال داشتم.
بنده دو تا مدل داریم که باید پشت سر هم حل بشوند. از نتایج مدل اول باید در مدل دوم استفاده بشه.
در مدل اول اندیس های i, j , k , t استفاده کردم. حالا در مدل دوم می خوام یک مجموعه چند بعدی مثل m استفاده کنم و به مدل دوم بگم که اندیس مجموعه چند بعدی m از عدد یک تا مقادیر به دست آمده از متغیری مثل x ( از مدل اول) تغییر می کنه. به عبارت دیگه عدد اصلی مجموعه چند بعدی m همان مقادیر بهینه متغیر x از مدل اول است. این مطلب را چطوری کد نویسی کنم. کد زیر را نوشتم ولی خیلی خطا داره. ممنون میشم کمکم کنید.
سلام وقت بخیر
الان فرضا x(i1,j1,k1,t1)=3 شده، مجموعه e با همین تک فرض برابر چی خواهد بود؟
سلام، وقت بخیر
در نوشتن مدل زمانبندی flexible flowshop در گمز، تعداد ماشینهای هر ایستگاه متفاوته (ایستگاه اول 2 ماشین، ایستگاه دوم 4 ماشین و ایستگاه سوم 3 ماشین دارد)؛ بصورت اندیس دو بعدی تعریفش کردم. یعنی:
SETS
s stages /1*3/
m machines /1*4/
k(s,m)
/ 1.1 , 1.2
, 2.1 , 2.2 , 2.3 , 2.4
, 3.1 , 3.2 , 3.3 / ;
و میخوام محدودیت زیر رو کد کنم:
sum(i,y(i,j,k,q) =g= y(i,j,k,q+1) ;
سوالم اینه که هم i هم j و هم خودِ k که روی i و j بسته شده، در اندیس متغیر y بکار رفتند.
چطوری باید صور عمومی بذارم که بازای i مشخص (مثلاً i=1)، فقط سطر اول k رو بخونه (که i=1 دارند)؟
اصلاً میشه اندیس دو بعدی رو به این صورت در یک متغیر فراخوانی کرد؟
چطوری تعداد متفاوت ماشینهای هر ایستگاه رو به گمز بفهمونم؟
ممنونم
سلام و ادب
بفرمایید که i,j چی هستن و ارتباطشون با k چی هست.
و اینکه منظور از y(i,j,k چی هست؟
سلام،
ببخشید من توی مدل یه اندیس t دارم اما در یکی از محدودیت ها به یک tprim هم نیاز دارم که tprim=t-d(a)+1 هست. d(a) یک پارامتر هست. وقتی به صورت زیر می نویسم با ارور مواجه میشم:
alias(t,tprim) رو در اندیس ها تعریف کردم.
Eq3(p,pNR(p,NR),t).. II(NR,p,t)=e=II(NR,p,t-1)+sum((s,NRs(NR,s)),q(s,p,t))-sum(((a,tprim)$(ord(tprim)=(ord(t)-d(a)+1))),dtt(a,NR)*z(a,tprim));
سلام
ببینید، شما محدودیت رو به ازای p,NR,t برقرار کنید، بعد بگید به شرط pNR
اولین سیگما هم sum((s,NR) بنویسید، بعدش هم بگید به شرط NRs
سیگماها رو این شکلی بویسید:
سلام وقتتون بخیر
من برای تعریف ستهای مدلم نیاز به راهنمایی داشتم.
مدلم مدل تخصیص ناوگان با زمانبندیه، برای دسته بندی هواپیماهام میخوام اندیس بندی کنم.
مثلا دو مدل کلی هواپیما داریم بویینگ و ایرباس بعد هر کدوم اینا یه زیر مدلم دارن مثلا بویینگ ۷۳۷و…
مدل اصلیشون رو با k نمایش میدیم که مجموعهاشو K اسم میذاریم.
زیر مدلشونم با t نشون میدم که اسم مجموعهاش Tk هست.
یه مجموعه کلی به اسم T هم میخوام تعریف کنم که اجتماع تمام مدل هواپیماهاست.
K رو که k1*k2 تعریف میشه
مثلا فرض میکنم مدل اصلی هواپیماهامم مدل ۱ دوتا زیر مدل داره و مدل ۲ سه تا زیر مدل داره.
توی تعریف Tk و T به مشکل خوردم.
T و Tk رو اینجوری تعریف کردم ارور داد.
Tk /t1.k1, t2,k1, t3.k2, t4.k2, t5.k2 /
توی خود مقالهها این سه تا مجموعه رو دقیقا این شکلی تعریف کرده
K: set of aircraft families in the fleet, indexed by k (e.g., k = 1 might denote the Boeing B737 family).
Tk: set of fleet types in family k, indexed by t (e.g., T1 might include the types B737-300 and B737-500 in the Boeing B737 family).
T: set of all fleet types in the entire fleet, where T = ∪k∈KTk
سلام
به نظر میاد درست تعریف کردید. فقط تو تعریف tk یادتون رفته که بنویسین:
خیلی ممنون از پاسختون
یه سوال دیگم توی استفاده از این اندیسها داشتم.
وقتی یه وریبل یا پارامتر داریم مثلا با اندیس t
ولی این t توی یک محدودیت عضو یه مجموعهاست و توی یه یک محدودیت عضو یک مجموعهی دیگه این رو چطور باید تعریف کرد؟
با در نظر گرفتن اینکه بعضی مجموعه اندیسها دو بعدیه و وقتی گذاشتمشون ارور 122 میده.
متن ارور
One dimensional set expected.
سلام
دو بعدی رو نمی تونید مستقیم به عنوان اندیس استفاده کنید. فقط تو شرط ها کاربرد داره دو بعدی و چند بعدی.
این t که هر بار عضوی از یه مجموعه هست، اگه همجنس هستن، بهتره از Alias در گمز استفاده کنید. اگه تفاوت داره مجموعه هاشون، از طریق شرط ها می تونید از t, tp,tpp و… استفاده کنید.
اگر جواب شفاف تری میخواید، شفاف بفرمایید در خدمت هستیم
سلام
اگه یه مجموعه مثلا n داشته باشیم وبخوایم بگیمiوj عضو nهستند چطوری باید کدش کنیم
از این iوjهم تو محدودیت ها و هم تو اندیس متغیر ها استفاده شده با اینکه به عنوان مجموعه تعریف نشده
سلام
از آلیاس استفاده میکنین که مشابه سازی می کنه.
سلام و وقت بخیر
من دستور زیر رو وارد گمز کردم ولی دو تا ارور میده یکی 148 و دومی 257 چطور میتونم این دو تا رو رفع کنم؟
سلام
محدودیت 5 رو تو بخش equations نوشتین به ازای هر b ولی تو فرمول b رو برداشتین. باید از تعریف equation حذفش کنین.
سلام، ببخشید چطوری بگم یک متغیر خاص در یک اندیس، فقط بهازای برخی از اعضای مجموعه برقرار باشد؟
فکر کنم در سوال قبلی جوابتون رو گرفتید
سلام آقای محمودی .وقت بخیر
برای تعریف سه متغیره در گمز باید چکار کنیم؟
من تازه دارم گمز کار میکنم ممنون میشم راهنماییام کنین.
سلام
یعنی چی سه متغیره؟
با سلام و خسته نباشید
من این محدودیت رو که تو گمز میزنم ارور 149 میده , چی رو باید درست کنم؟
;((Co1$(N1(i,j)) .. X(i)=l=sum(j,y(j
سلام
وقتی میگیم co1 بعدش شرط N1 رو میذاریم، باید بگیم محدودیت به ازای i,j برقراره. ولی شما ننوشتین.
نکته دیگه اینکه به نظر من اینجوری درسته محدودیتتون. (چون کلا اشتباه نوشتین نمیدونم قراره چی کد بشه البته!)
سلام وقت بخیر
توی کد من متغیر Fj یک متغیر بایونری هست و میگه اگر کامیون j به عنوان اولین کامیون به درب تخصیص پیدا بکنه برابر با 1 میشه و در غیر اینصورت برابر با صفر میشه و j هم یک مجموعه سه عضوی شامل 1و2و3 هست و Xi هم یک متغیر بایونری در خصوص تخصیص کامیون i به درب هست و حالا توی کد باید بگیم که:
F(a)+F(b)=l=3-X(a,i)-X(b,i)
حالا چطور در گمز باید کد بنویسم که متوجه بشه که a و b دو انتخاب تصادفی از مجموعه j هستن؟
سلام
طبق توضیحات نیازی نیست کار خاصی انجام بدید. کافیه a,b رو با j آلیاس کنین. و احتمالا تو ضور عمومی محدودیت یه شرط بذارین که a,b با هم برابر نیستن.
با سلام
یک متغیر (s(i دارم که اندیس آن مجموعه i است. همچنین یک جدول (c(i,j هم دارم که اعضای سطر و ستون آن همگی عضو مجموعه i هستند. در محدودیت ها نیاز دارم که گاهی s را هم با اندیس مجموعه i و هم با اندیس جدول c فراخوانی کنم. در فرواخوانی (s(i طبعا مشکلی ندارم ولی چگونه میتوانم ((s(c(i,j را فرواخوانی کنم؟ با توجه به اینکه (c(i,j یک مقدار از جدول را برمی گرداند، نباید مشکلی باشد، ولی ارور می دهد
سلام
از موارد زیر ایده بگیرید:
سلام. من یک مجموعه 3بعدی دارم. یکی از محدودیتهام باید فقط به ازای 2تا از اندیسهای موجود در این مجموعه تعریف بشه. بصورت زیر:
(co2 (j,l)$(N(j,k,l)) .. sum(k, v(k)*Q(j,k)) =l= cap(j)*x(j
با خطای 149 Uncontrolled set entered as constant مواجه میشم. چه کنم؟
سلام
شما صور عمومیتون دو اندیس داره. ولی شرط سه بعدی گذاشتین. که ارور میده و میگه k چی هست اصن؟ مدلسازیه مشکل داره احتمالا
سلام در مسائل زمان بندی پروژه جمع x(i,t) وجود داره که دو تا سیگما می خوره یکی روی i که به ازای تمام پروژه هاست اما سیگمای دوم روی t داستانی داره باید باشه بین max(1,t-d(i)+1) , min(t,T-d(i)+1 این رو الان چطوری باید تو گمز بنویسیم!!!؟؟؟ در واقع به طور کلی اگر یک سیگما داشتیم که شروع و پایانش محدود بود باید چیکار کنیم؟
ممنون از راهنماییتون
خیلی ساده
در جایی که کاندیشن می نویسید نباید متغییر داشته باشید همه موارد باید اسکالر یا پارامتر باشند (مقادیر معلوم)
سلام
من میخوام تو محدودیت مدلم بنویسم x(k) ها رو جمع کن اگر حداقل یک i وجود داشته باشه که t(i,k)<1000
ممنون میشم کمکم کنین
من مقدار n رو دارم که تعداد کارهاس و کارها از یک تا n هستش، i=1,2,3,..,n که مقدار n رو دارم.
و اما n min این هم فرمول داره که از تقسیم کوچکترین t که دارم برروی بزرگترین p که اونم دارم بدست می آد.
حالا غیر از این ی مشکل توی گمز کردن مدلم دارم اگه لطف کنید کمکم کنید ممنون میشم،
تابع هدفم مینیمم کردن مجموع دیرکرد و زودکرد هستش که محدودیتش به صورت زیر
( (T(i)=max(0, c(i) – d(i
( (E(i)=max(0, d(i) – c(i
تابع هدف و به این شکل نوشتم
; ((( obj .. z =e= sum(i,(T(i)+E(i
و محدودیت ها رو به این شکل
(co8(i) .. T(i) = g = c (i) – d (i
(co8(i) .. E(i) = g = d (i) – c (i
که اینجوری T که دیرکرد باشه رو برام محاسبه می کنه ولی E که زودکرد هست رو صفر میده درحالیکه صفر نیست.
ممنون میشم کمک کنید
سلام
اگه سمت راست دو محدودیت رو دقت بکنین، برای هر i یا هر دو صفر هستن (که یعنی c,d برابر هم هستن) یا یکیشون مفیه و یکیشون مثبت. وقتی یکیشون مثبت باشه، متغیر سمت چپش هم مثبت میشه، متغیر سمت چپ اونی که منفیه هم الزاما برابر صفر میشه. پس به طور همزمان اینا نمیتونن مثبت باشن و یا به عبارتی، یه کار یا زودکرد داره یا دیرکرد.
اگه هردو دیرکرد و زودکرد و داخل قدرمطلق بزارم چی؟
((co8(i) .. T(i) = g =ABS (c (i) – d (i
((co8(i) .. E(i) = g =ABS (d (i) – c (i
اینجوری درسته؟
زوری که نمیشه. یا دیرکرد دارین یا زودکرد. درسته این معادله
سلام ی مجموعه دارم (k) که از یک تا حد بالا هستش و حد بالا برابر با تعداد کارها بر روی مقدارکوچکترین کار
یعنی k=1,…, U که ) [(U= [n/n(min
اینو چطور کد کنم؟؟
سلام
لطفا در مورد u,n و nminصحبت کنین که اینا چه مقادیری هستن.
با سلام و احترام
لطفا در خصوص نحوه نوشتن محدودیت fifo در مسئله پیداکردن کوتاهترین مسیر چند مدی من را راهنمایی بفرمایید.
با تشکر
سلام
روش fifo تو مسائل مختلف فرق میکنه.لطفا فرمول ریاضی رو به همراه توضیحات بذارین که در خدمتتون باشیم.
با سلام و ادب خدمت شما
آیا دستور sum بر روی مجموعه چند بعدی به طور مستقیم تعریف می شه؟
با تشکر
سلام
خواهش میکنم. خیر.
ببخشید مقدار j رو باید ابتدا ثابت می کردم. ببینید من اصلا متوجه نمیشم مجموعه ی( L(p چطور مجموعه ای هست؟ آیا باید با استفاده از مجموعه های چند بعدی تعریفش کنم؟ تعریفش رو این گونه بیان کرده که
{(the set of positions at which a pitch of type p can start on a sequence :L(p)={1,…,lmax-l(p
در واقع هدف قرار گرفتن بهینه ی چند قطعه از نوع p به طول (l(p در یک توالی به طول کل lmax هست. حالا این مجموعه می خواهد پوزیشن های قرار گرفتن را نشون بده وقتی که توالی با نوع p شروع شده است.
عزیز قواعد ارسال کامنت رو لطفا بخونین. جا اینکه به همون سوال و جواب پاسخ بدین، به کل تاپیک جواب میدین که اینجوری همونطور که ملاحظه میکنین گفتگوها قاطی پاتی شده!
ببینید مجموعه هایی که دارای توالی هستند، و با دو اندیس معرفی شدن، شما باید با یه جدول سه بعدی که تعریفش کنین. یک اندیسش همون j شما هست، یک اندیس هم برای توالی استفاده میشه (در صورتی که این عملیات روی فلان ماشین انجام گیرد، چندمین توالی خواهد بود؟ چه توالی ای می تواند داشته باشد؟ و ….)
این مجموعه مقداری پیچیده تر از این حرفا هست احتمالا. باید مدلهای زمانبندی پروژه، توالی عملیات و تولید سلولی، رو مقداری مطالعه کنین (اونهایی که توالی براشون مهم هست) کم کم دستتون بیاد که چجوری تعریفش کنین. توجه کنین که مجموعه دو بعدی yes, no هست و جدول عدد میگیره. ولی برای سادگی و پیچیده نشدن تعریف مجموعه میشه از جدول استفاده کرد.
سلام مجدد
ببخشید ی سوال دیگه هم که داشتم این بود چطور مقدار یک مجموعه را بر حسب پارامتر مشخص کنیم به عنوان مثال
( T(j یک پارامتر بر حسب j است حالا مجموعه ی زیر را میخوایم تعریف کنیم:
{(i={1,…,T(j
i را باید چگونه تعریف کنم؟
سلام
این سوال هم نامفهوم هست. به ازای کدام j اندیس i این مقادیر رو میگیره؟
ممنون مطالعه کردم منتهی هنوز نتونستم مجموعه ی زیر را تعریف کنم اگر امکانش هست راهنمایی بفرمایید
lmax یک اسکالر و lp یک پارامتر بر حسب p و j یک مجموعه است.
{L(p,j)={1,…,lmax-l(p)-j
ببنید مجموعه های دو بعدی عدد نمیگرین. تنها مقادیری که میگیرن yes, no هست. ولی این چیزی که شما تعریف کردین مجموعه نیست. نمیشه گفت L(p,j هم یک هست، هم دو هست و… .
مقداری باید تکلیفتون رو با این تعریف مشخص کنین. بعد میشه کدش کرد.
با سلام
اگر یک اندیس خودش بر حسب اندیس های دیگر تعریف شده باشد برای تعریفش در مجموعه از چه دستوری باید استفاده کرد؟
مثلا (L(p,j که p و j هر دو اندیس تعریف شده ی دیگری هستند.
همین تاپیک رو مطالعه کنین قشنگ متوجه میشین.
در یک مجموعه سه بعدی اگر بخوام به جای yes وno عدد قرار بدم باید چیکار کنم؟
سلام
مجموعه های چندبعدی عدد نمیگیرن. اگه حتما لازمه عدد بدین از table شاید بتونین خلاقانه استفاده کنین.
سلام.چطور میشه یک نمودار پله ای رو تعریف کرد؟
سلام
معمولا از مدلهای تخفیف یا توابع قطعه قطعه استفاده میکنن. کتاب تحقیق در عملیات زاهدی سرشت معرفی کرده این توابع رو. مدلهای سفارش موجودی هم میتونن بهتون کمک کنن. معمولا از متغیرهای باینری کمکی استفاده میکنن.
با سلام خدمت شما و سپاس از سایت عالیتون. من یک سوالی دارم که اینجا خدممتون عرض میکنم:
که ست k من شامل سه کارخونه A,B,C هستش. حالا کارخونه A اندیس 1تا5 از i رو میگیره، B از 6 تا 10 وC از 11 تا 15. حالا من یک قیدی به این صورت دارم که نمیتونم بنویسمش:
در واقع من نمیدونم چجوری بهش حالی کنم که وقتی i 5 رو رود کردی بپر روی k بعدی.و وقتی i شماره 10 رو رد کردی برو روی کارخونه بعدی. ضمنا نمیخوام سه تا قید بشه چون x(i) رو تو یه سری معادله دیگه به همین فرمی که نوشتم دارم. خیلی ممنون میشم کمکم کنید.
سلام
فک کنم تاپیک رو معالعه کنین متوجه جوابتون میشین. در زیر E مانند تاپیک بالا تعریف شده
خیلی ممنون که پاسخ دادید . لطف کردید .
من با مشکل دیگری هم در همین فرمول مواجه هستم ، ممنون میشم اگر در این مورد هم من را راهنمایی کنید .
همین اندیس p که فرمودید ، در خود فرمول دخیل هست ولی وقتی همین اندیسی که در set تعریف شده را در فرمول می نویسم ارور می دهد . فرض کنید فرمول به صورت زیر باشد :
a^p/p(روی p)∑
به چه صورتی می توانم پارامتری تعریف کنم که برابر با اندیسی که بر روی sum قرار دارد، باشد و بتوان از آن به جای p در فرمول استفاده کرد ؟
بسیار ممنونم از شما .
مشکلم حل شد . لطف کردید
زنده باشید
بسیار عالی
موفق باشین
سلام. ممنون از سایت فوق العاده مفیدتون .
من نیاز دارم در مدلم اندیسی رو تعریف کنم که برحسب عدد یکی از پارامترها می باشد . ولی نمیدونم چجوری باید تعریف بشه .
فرض کنید مدل دارای اندیسی برای تعریف محل های مورد نظر به صورت /f/ f1*fn می باشد . که n برحسب هر مسئله می تواند متفاوت باشد . هریک از این محل ها دارای تعدادی اپراتور هست که پارامتر C بدین منظور مثلا به صورت مقابل
تعریف میشه /C(f)/ f1 2,f2 3,…,fn 5 . در هریک از محل های f باید فرمولی محاسبه بشه که این فرمول دارای یک sum هست که اندیس sum برای هر محل برابر 0 تا C(f)-1 می باشد یعنی مثلا فرمول در f1 دارای جمع با اندیس 0 تا 1 ، در محل 2 جمع روی 0 تا 2 و به این ترتیب تا محل n م محاسبه میشه . و من نمیدونم این اندیس رو به چه صورتی تعریف کنم . از طرفی نمیشه برای هر fi اندیس جدا در نظر گرفت چراکه ممکنه تعداد محل ها خیلی زیاد باشه و این کار معقول نیست . ممنون میشم راهنمایی بفرمایید .
سلام
مقداری برای من گنگ بود فرمایش شما.
ولی طبق چیزی که من از حرفاتون دریافت کردم، میتونین یه اندیس مثل p تعریف کنین که از 1 تا یه عدد بزرگ مثل 10 باشه (این 10 بزرگتر مساوی هست با ماکسیمم Cها باشه) بعد تو اون سیگما بنویسی سیگما روی p به شرطی که p از 0 تا cf-1 باشه.
اگه متوجه سوالتون نشدم دقیق تر توضیح بدین لطفا.
سلام خسته نباشید
من چندتا ست تعریف کردم که یکیشون سه بعدیه و ترتیب خاصی داره چون نحوه اتصال چندتا باس هست
میخوام از این ست سه بعدی استفاده کنم و معادله ای رو بنویسم
میخوام سامیشن روی اندیس j آزاد باشه و PF به شرط ترتیب اندیس سه بعدی n توی معادله باشه یعنی pf برای همه باس ها بر قرار نیس فقط طبق اون ترتیبی که توی n گفتم
اما متاسفانه ارور میده که uncontrolled set entered as constant
و این ارور رو روی n میگیره . وقتیم که به صورت
مینویسم میگه set is already under control
معادلم به این صورته که PF و سامیشن روی ترتیبی که من میگم بیان توی معادله و باقی موارد روی تمام J انجام بشن
ممکنه بهم کمک کنید
واقعا ممنون میشم
سلام
اولا شما باید از آلیاس استفاده کنین. (j,jp) . که هم تو تعریف n هم تو معادلات هر جا لازم بود j و هر جا لازم بود jp تعریف کنین.
ثانیا شما باید مشخص کنین که تو معادله ای که نوشتین کدومش j هست و کدومش jp
عمل اول رو انجام بدین، و برای ادامه ماجرا سوال دوم رو جواب بدین. عرض میکنم خدمتتون چیکار کنین
ممنون که پاسخ میدید.
من n رو توی ست تعریف کرده بودم به صورت n(j,j) که اگر طبق گفته شما n(j,jp) تعریف کنم چون n ست هست نمیتونم قبلش alias کنم مجبورم که بعدش انجام اما اگه این کار رو بکنم jp رو نمیشناسه. مجبور شدم یه سری ست جدید تعریف کنم به اسم
Jp /jp1*jp33/ که بتونم اون تفکیکی که شما گفتین انجام بدم. اما هنوزم نمیتونم مثلا pf(j,jp,t) رو مجبور کنم که طبق درایه های n یا طبق چینش j و jp عمل کنه .
شما یه j تعریف کنین. بعد jp رو الیاس کنین. بعد دوباره با یه دستور set دیگه بیاین n رو ترعیف کنین.
ولی من برای محاسبه همین زمان رسیدن نیاز به این مجموعه ها دارم. یعنی متغیر زمان رسیدن رو تعریف کردم ولی برای اینکه به من نشون بده از بازه زمانی تجاوز نمی کنه باید هر تور رو داخل یه مجموعه مجزا قرار بده تا گمز زمان رسیدن به هر گره رو بتونه محاسبه کنه. در واقع برای محدودیت ظرفیت وسیله نقلیه هم به این مجموعه ها نیاز هست.
لطفا مکالمه ای که داشتیم رو ادامه بدین فقط. تیکه تیکه میشه مکالمات اینجوری.
خب روشتون اشتباهه. شما باید همزمان که مدل حل میشه این اعمال رو بدست بیارین، نه اینکه یه بار حل بشه، سری بعد دوباره بیاین این دوباره کاری رو انجام بدین.
پیشنهادم اینه یه نگاهی به مدل های زمان بندی توالی عملیات یه نگاهی بندازین. اونجا معمولا یه متغیر رو تعریف میکنن به اسم ci که نشون دهنده ی زمان رسیدن به ماشین i هست. اینجوری هم ترتیب مرور و تور رو می تونین مشاهده کنین، هم زمان دقیق رو دارین. این چیزی که شما می فرمایین رو من درک نمیکنم.
یه سوال، شما میخواین تور رو به عنوان ورودی به گمز بدین؟ اگه اره که خب گمز چیکار میکنه این وسط اگه قرار نیست خود تور رو بدست بیاره
ممنونم از پاسخگویی شما، مدلی که من تا حالا نوشتم فقط نشون میده که هر وسیله چه گره هایی رو میبینه.
بذارید با مثال سوالم رو بپرسم: برای وسیله نقلیه نوع اول این گره ها وجود داره:
d1-s6
s1-t
s5-s1
s6-t1
t1-d1
t1-s5
گمز متغیر باینری مسیر برای این گره ها رو برابر 1 قرار میده. ای جوابی که گمز میده یه تور درست هست. درواقع معنیش میشه این تور:
d1-s6-t1-s5-s1-t1-d1
t ها ایستگاه تخلیه و s ها گره و dهم پارکینگ هست.
من میخوام به گمز بگم تمام زیر تور های مربوط به ایستگاه 1 رو جداگانه و تمام زیر تور های ایستگاه 2 رو جداگانه نشون بده.
در این صورت میزان تخلیه بار در هر ایستگاه رو میتونم مشخص کنم.
اگر بخوام جمع آوری بعد از هر گره رو محاسبه کنم باید گمز بدونه که چه گره هایی رو قبلش دیده. که این رو نمی دونم چجوری به گمز بفهمونم
سلام
بازم همون قضیه شد، نیاز به کد نویسی نسبتا پیچیده داره. که من چیزی خاصی به ذهنم نمیرسه الان!
فک میکنم بشه از اون متغیر صفر و یک استفاده کرد. با استفاده از اون احتمالا بشه معادله بازگشتی درست کرد. یه چیزی تو مایه های معادله ی موجودی در دوره های مختلف – البته اگه قبلا آشنایی داشتین باهاش.
مشکلی که تو مدل شما هست اینه که مشخص نمیکنه که وسیله نقلیه چه وقت به فلان گره میرسه. پس عملا نمیشه به گمز فهموند که توالی رو برای ما نشون بده. سعی کنین زمان رو بیارین تو مدل تا مشکلتون حل بشه
از محدودیت های پنجره های زمانی در مسائل مسیریابی استفاده کنید. مشکلتون انشاالله حل میشه
سلام من یک مدل مسیریابی رو در گمز کد نویسی کردم. میخوام به گمز بگم هر وسیله وقتی تعدادی گره (که مجموعه جواب هستند)رو مشاهده کرد و به ایستگاه یا پارکینگ رفت، اون تعداد گره رو برای من توی یک مجموعه نشون بده.
بطور مثال وسیله نقلیه نوع اول، بعد از ترک پارکینگ گره های s2وs5وs1 رو میبینه و میره به ایستگاه و تخلیه میکنه و بعدش میره s6 رو میبینه و میره پارکینگ. حالا می خوام s2وs5وs1 رو در یک مجموعه و s6 رو درون یک مجموعه دیگه نشون بده چیکار باید بکنم؟
متشکرم
سلام
برا کد نویسیش الکی وقت نذارین. اگه مدلتون صحیح و جامع باشه، احتمالا توش یک یا چند متغیر مثبت هست که نشون دهنده ی زمان رسیدن وسیله به گره ها هست. مثلا وسیله اول در شروع صفر در زمان صفر در مکان فلان بوده، در زمان فلان میره گره دوم، در زمان بهمان میره گره 5 و…. شما اگه این متغیر رو تو خروجی display کنین متوجه این کار میشین.
سلام آقاي محمودي
سوالي در خصوص تعريف مجموعه هاي چند بعدي داشتم.
در مسئله زمانبندي كار كارگاهي منعطف، انديس هايي به فرم زير دارم:
انديس J جهت كارها
انديس K جهت عمليات هاي كارها
انديس I جهت ماشين ها
انديش L جهت تعيين عمليات هر كار كه زير مجموعه اي از كار و عمليات هست.
در نرم افزار مجموعه چند بعدي كار-عمليات را به شكل زير تعريف كردم كه قابل قبول هست و خطايي نميده:
كه براي كار يك سه عمليات و براي كار 2 دو عمليات وجود دارد.
متغيير باينري دارم به نام (e(j,l,i كه بيانگر توانايي ماشين i جهت انجام عمليات L كار j هست. (به فرم table تعريف كردم)
زمان فعاليت ها هم دقيقا مانند جدول بالا تعريف شده.
زماني كه مسئله اجرا ميشه، خطايي ميده مبني بر اينكه انديس L در جدول تك بعدي تعريف شده و توقف ميكنه.
لطفا راهنمايي كنيد كه چطور ميشه اين مشكل را حل كرد. ايا بايستي پارامترها را به فرم ديگه اي تعريف كنم؟
(براي اينكه بتونم مسئله را حل كنم انديس L را از چند بعدي خارج كردم و براي همه كارها تعداد عمليات هاي يكسان گرفتم كه مسئله حل ميشه و درست هم هست، ولي اگر تعداد عمليات هاي كارها متفاوت باشه نميشه از اين روش استفاده كرد).
با تشكر
سلام
ال رو درست ننوشتین، اینجوری بنویسین.
جناب محمودي
سلام مجدد
من تغييري كه گفتيد را انجام دادم، ولي بازهم، همون خطا را ميده.
جسارتا فايل را ارسال كردم به ايميل بالاي صفحه. ممنون ميشم محبت كنيد و بررسي كنيدش.
با تشكر
سلام
دیدم فایل رو. شما یه اندیس دو بعدی به اسم L(j,k) تعریف کردین. بعد اومدین تو دستور table به اندیس L ریفرنس دادین، این عمل امکان پذیر نیست!
شما باید جدول e(j,k,i رو که تعریف کردین، تبدیل بکنین به e(j,k,i
جناب محمودي
لطفا اگر امكان داره در خصوص نحوه تعريف مجموعه بعد از پارامتر توضيح ميديد.
متاسفانه من نتونستم اين روش را كه شما گفتيد تعريف كنم.
ممنونم
سلام
عذرخواهی میکنم. متوجه سوالتون نشدم
سلام، فرض کنید ما یک مجموعه ی دو بعدی مانند jn داریم که بعد اولش رو از s که 1 و 2 و3 هست و بعد دومش رو از v که 1 و 2 هست میگیره، اعضای مجموعه ی jn بصورت 1.1 و 1.2 و 2.1 و 3.2 هست، حالا تو محدودیت ها میخوام بگم هرگاه s=1 شد آنگاه بعد دوم رو به من بده یعنی 1 و 2، هرگاه s=2 شد عدد 1 رو جایگذاری کنه و هرگاه s=3 شد، عدد 2 رو جایگذاری کنه، این رو چجوری میشه نوشت؟
سلام
یعنی چی بعد دوم رو به شما بده؟ یعنی vای رو لحاظ کنه که به همون s بخوره؟ اگه اینجوریه که شرطی لازم نیست. فقط تو محدودیت بگین که به شرط jn همین.
باز هم سلام و عرض احترام.
من در ندل ریاضیم نیاز دارم که در دوره های مختلف مقدار یک متغیر چک بشه و بیشترین مقدارش گزارش بشه. برای این کار از SMAX استفاده کردم. نکته جالب اینه که با اضافه کردن این محدودیت که مقدار SMAX در اون حساب میشه، مقدار تابع هدفم با قبل خیلی فرق داره. یعنی از 400 به 1600 میرسه. مدلم غیرخطی هست و با سالور Bonmin حل میکنم.
بسیار ممنون از شما
سلام
خواهش میکنم.
چرا میخواین این متغیر بیشترین مقدارش حساب بشه؟ چرا بعد از حل مدل این کار رو نمیکنین؟
بله در حقیقت میشه این کار رو هم کرد و دستی این مقدار رو پس از حل مدل محاسبه کرد. برام جالب بود که چرا همچین اتفاقی میفته و مقدار تابع هدف قبل از اضافه کردن این معادله، و بعد از اون متفاوته. در هر صورت ممنونم از پاسختون.
بسته به مورد کاربرد متفاوت هست. یعنی ممکنه تغییری هم نکنه، ولی این عدم تغییر دلیل خواصی نداره و احتمالا صرفا یه اتفاقه.
پس وقتی میشه بعدش انجام بدین شما.
موفق باشید
سلام و تشکر می کنم از راهنمایی های همیشگی تون.
ممکنه سوال من رو بررسی کنید؟
مجموعه هایی به این شرح دارم:
m /1,2,3,4,5,6,7,8,9,10/
k(m) /1,2,3,4,5/
j(m) /6,7,8/
w(m) /9,10/
ولی حالا می خوام متغیری بسازم که 1- فقط از دو اندیس w و k در ساختنش استفاده بشه (و j استفاده نشه) و 2- اندیس های k و w استفاده شده هم تکراری نباشند (مشابه نباشند ). به نظرتون چه باید بکنم؟
ممنون
سلام
یه راه اولیه میتونه این باشه که یه اندیس به اسم kw(m) هم تعریف کنین.
kw(m)/1*5,9*10/
بعد k و w رو زیر مجموعه ی kw تعریف کنین و نه m
خیلی ممنون از پاسختون.
در مورد تکراری نبودن اندیس ها هم در یک کامنت خوندم که استفاده از جدول رو پیشنهاد کرده بودید. به نظرتون بهترین راه همونه؟
از راهنمایی های بی چشمداشتتون هم متشکرم.
خواهش میکنم.
جدول هم میتونه استفاده بشه. ولی فکر میکنم برای شما این روش مناسبه. اگه تشخیص دادین جدول بهتره از همون استفاده کنین. تو سایزای بالا جدول به صرفه تر میتونه باشه. بستگی به ساختار مسئله داره و هیچیش قطعی نیست.
خیلی متشکرم
سلام من مجموعه های چندبعدی را مطالعه کردم ولی نتونستم مدل خود را کد کنم .ممکنه لطف کنید کد مدل زیر را بگید.تعرف مجموعه ها و نوشتن محدودیت مد نظرم هست. متشکرم
i,j:شاخص گره ها {0و1و2و…وn}
N:مجموعه همه گره ها شامل فروشنده
NP: مجموعه همه گره ها به جز فروشنده (گره صفر)
A: مجموعه کمان های ساخته شده توسط گره ها{(i,j) عضوN و iمخالف j}
i,j)∈A ∑ X ijh ≪ek-bk , ∀h)
سیگما روی (i,j) بسته شده و علامت سیگما یکی است و h سور عمومی دارد.xijh: زمان پیمودن کمان ij با وسیله نقلیه h میباشد
سلام
بهتره A رو به صورت table تعریف کنین. و ارایه هایی که کمان هست رو یک و بقیه رو صفر بذارین.
set i/n1*n10,np1*np10/
N(i)/n1*n10/
np(i)/np1*np10/
;
alias(i,j)
....
eq(h).. sum((i,j)$A(i,j)
مشکلی داشت خودتون ویرایشش کنین. این همه چیزیه که نیاز دارین.
با سلام و خسته نباشید
من یک مسأله مسیریابی دوره ای دارم که در آن هر مشتری در طول هفته روزهای مختلفی ویزیت می شود. مثلا مشتری i روزهای شنبه و دوشنبه و مشتری j روزهای یکشنبه و سه شنبه. این پارامتر را باید به چه صورت به گمز بدهم؟ اگر در قالب table باشد باید به چه نحو تعریف شود؟
سلام
اگه از table میخواین استفاده کنین که سطر ها رو مشتری، ستون ها رو روزای هفته بذارین (فرضا اسم جدول cm باشه. بعد هر جا که مشتری تو اون روز ویزیت میشه رو یک بزارین، بقیه ش هم خالی یا صفر.
بعد اون شرطی که تو محدودیت ها در این مورد صحبت میکنه اینجوری بذارین:
equation1(i,j)$(cm(i,j)..
با سلام و تشکر از سایت خیلی خوبتان-یک سوال دارم من مدل مسیریابی کمان را در گمز نوشتم وگرافم 24 گره دارد حال برای نوشتن کمان ها و یال هایم باید زوج مرتب این 24 گره را بنویسم که خیلی زیاد می شود چگونه باید این را در بخش مجموعه ها وارد کنم؟
سلام
اگه شبکه شما کامل هست، یعنی همه با هم ارتباط دارن که نیازی به تعریف زوح مرتب ندارین و شرط هاش رو ندیده در نظر بگیرین (مگه این که شرایط دیگه ای تو مدل شما اومده باشه)
اگه شبکه کامل نیست و رویه خاصی نداره، از مجموعه های دو بعدی استفاده کنین. (البته برای هر دو حالبت میشه از دوبعدی استفاده کرد)
روی لینک زیر کلیک کنین.
تعریف زوج مرتب در گمز
منظور از پارامتر یک بعدی، یک بردار هست
سلام.
من یه ماتریس به صورت
(A(i,j دارم که می خوام دقیقا درایه های سطر اولش رو در یک پارامتر یک بعدی ذخیره کنم. با چه دستوری این کار رو انجام بدم؟
سلام
بستگی داره کجا میخواین این کارو بکنین. ولی یه روش همیشه اینه:
x(j)=b(j)*A('1',j);
شرمنده
{(i,j): i,j,< P +{o1,o2} ,ij } i,j مخالف هم هستن
سلام ، خسته نباشید
من داخل مدلم یک مجموعه p{1,…..n} و یک مجموعه D{n+1,…..2n} و که هر درخواست بصورت یک زوج مرتب ( i, i+n) نشان داده می شود که i گره برداشت محصول و گره i+n گره تحویل محصول متناظر با ان است .که این محصولات اول به انبار می روند بعد به مشتری تحویل داده می شود که با مجموعه O{o1,o2,o3,o4} نشان داده می شود که o1 و o2 گره شروع و پایان مسیر برداشت و o3 وo4 گره شروع و پایان مسیر تحویل است . کل گره موجود در شبکه شامل N=P+D+O هستش و کل کمانهای موجود شامل
{(i,j): i,j,< P +{o1,o2} ,ij } و {i,j<D +{o3,o4},ij :(i,j) } هستش .
+ یعنی اجتماع ، > یعنی عضو و مخالف
چجوری میتونم اینارو اندیس گذاری کنم
باتشکر
سلام
برای شروع و پایانا نمیتونم نظری بدم. ولی برای زوج مرتب شما می تونید یه پارامتر تعریف کنین که هر وقت شرط برقرار باشه برابر یک بشه و در غیر اینصورت صفر بشه. با اندیس هم میشه.
و ضمنا مقداری صحیح نیست همه مسئله ای که باهاش مواجه هستین رو یک باره بپرسین. این یعنی انگار من اومدم کل مجموعه رو براتون نوشتم. و اینجوری حق بقیه ضایع میشه و مقداری وقتم هم کمه. هر چند کاملا خوشحال میشم بیشتر کمک ممکن رو بهتون بکنم.
با عرض سلام و خسته نباشید ببخشید بنده می خواستم توی یک محدودیت سه تا اندیس به کار ببرم . با کدام دستور باید این کاررو بکنم.لطفا کدشو برام بنویسین در واقع محدودیت من به شکل زیر می باشد و اندیس هام i و j و k می باشد:
v(i,j)-q(i,k)=e=e(i,j)
سلام
متوجه نشدم. شما این تاپیک رو خوندین؟
با سلام
من یک مسئله طراحی شبکه دارم که یک مجومه راه داریم که می خواهم از بین این مجموعه راه چند زیر مجموعه بگیریم که مثلا این سه تا راه هزینه اش مثلا 5 باشه و این 8 تا راه هزینه اش مثلا 10 باشه و الی آخر.
برای این کار اومدم یک مجموعه I تعریف کردم که شامل مجموعه شهرهای من است و یک مجموعه j تعریف کردم که با I یکی است (alias(I,j)) . بعد اومدم مجموعه G(I,j) تعریف کردم که شامل تمام راه های ارتباطی ممکن بین شهر ها است (در حقیقت G زیر مجموعه I و j است). حالا می خواهم یک مجموعه دیگر تعریف کنم که زیر مجموعه G باشد در حقیقت می خواهم از بین راههای ارتباطی چند راه معین را مشخص کنم ولی نرم افزار این اجازه را به من نمی دهد که برای G یک زیر مجموعه تعریف کنم. لطفا راهنمایی کنید
با تشکر
سلام
در حقیقت G یه زیر مجموعه نیست. یه مجموعه دو بعدیه ترکیبیه.
زیر مجموعه هایی که میخواین تعریف کنین (جفت ها یا مسیرها) چه قانونی دارن برا تعریفشون دقیقا؟
کد من به صورت زیر است /sets I ‘set of nides in the network’ /a,b,c,d,e,f,g,h
;alias(I,j)
sets
; G(I,j)
;G(i,j)= yes$(not sameas(i,j))
حالا می خواهم یک مجموعه دیگر تعریف کنم که زیر مجوعه G باشد چه کار کنم؟
کد من به صورت زیر است
sets
i set of nodes in the network /a,b,c,d,e,f,g,h,I,j/
alias(i,j);
sets
G(i,j) set of links in the network ;
G(i,j)= yes$(not sameas(i,j));
حالا می خواهم یک مجموعه دیگر تعریف کنم که زیر مجوعه G باشد چه کار کنم؟
برای تعریف زیر مجموعه های مجموعه G قانون خاصی نیست فقط باید یک سری از مسیرها به صورت دستی انتخاب شوند و در یک زیر مجموعه قرار بگیرند به طوری که جمع این زیرمجموعه ها تشکیل همان مجموعه G دهد.
خب نیازی نیست زیر مجموعه انتخاب کنید. تنها مجموعه ای رو که میخواین رو تایپ کنین. همین. مقلا:
set g1(i,j)/1.4,2.7/
g2(i,j)/2.6,3.9/
...
سلام وقت بخیر
من دقیقا به همین مسئله برخورد کردم. یه l و k دارم که alias هستند. از همینا میخوام یه M2(k,l) داشته باشم که دستی وارد میشه. الان مثلا یه عضو داره مینویسم مساویه /d.f/
حالا میخوام فقط برای همین k,l ام محدودیت مثلا دومم چک بشه مینویسم
co2 $(M2(k,l)) .. x(k)+x(l)=l=1 ;
ولی وقتی run میکنم ارور 149 میده.
ارور هم میره روی یه کاراکتر بعد k,l
ممنون میشم پاسخ بدید خیلی فورسه
سلام
به صورت زیر بنویسید:
با سلام
من یک مساله جریان کارگاهی دارم که مجموعه ها به صورت مختصاتی بیان می باشد اگه میشه لطف کنید راهنمایی کنید چطور باید مجموعه ها رو در گمز باید بیان کنم.مثلا فرض کنید (i,j) یک نقطه مختصاتی است و مساله دارای نقاط مختلفی است
سلام با استفاده از table ! اول i و j را توسط set تعریف کنید و تعداد نقاط را در آن بگویید.
برای مثال :
set i/1*2/
j/1*2/
parameters
.....
table esm (i,j)
2 1
1 1 1
;0 1 1
VA ...
من اعداد را همین جوری دادم. شما میتونید بر اساس نیازتون داده وارد کنید.
سلام
فرض کنید یک مجموعه کلی داریم شامل مجموعه های a برابر {a1,a2,a3 } و b برابر {b1,b2,b3,b4 } و cبرابر {c1,c2,c3,c4 } و d برابر {d1,d2,d3,d4 } که همگی در یک مجموعه به نام j قرار دارند. j برابر:
{{a1,a2,a3 } و {b1,b2,b3,b4 } و {c1,c2,c3,c4 } و {d1,d2,d3,d4} }
اگر در مدل محدودیت هایی وجود داشته باشه که j به ازای اجتماع a و b باشد و محدودیت دیگر j به ازای اجتماع cو d و همین طور محدودیت های دیگر j به ازای مجموعه های a و b و c و همین طور دیگر محدودیت ها …
مثلا محدودیتی که به ازای اجتماع a و b باشد را می توان یک بار محدودیت را به ازای a و یکبار به ازای b در گمز نوشت.و راه بعد اینکه اندیس جدیدی اضافه کنیم که شامل اجتماع a و b باشد محدودیت را به ازای اندیس جدید حل کنیم.ولی چون تعداد حالات زیاد هست خیلی تعریف اندیس جدید منطقی نیست.ولی راهی هست که در هر محدودیت شرط اجتماع در خودش نوشت؟مثلا محدودیت به ازای اجتماع a و b .
نمونه محدودیت به صورت زیر:
Uj≤1-Yj
که j اندیس است و به صورت j∈a∪b است.
سلام
set
j/1*15/
a(j)/1*3/
b(j)/1*4/
….
j یک مجموعه کلی هست که a,b,c,d زیر مجموعه هاشن.
مثلا a اجتماع b میشه
((J) $ ( a(j) and b(j) and not c(j) and not (d)
و به همین صورت بقیه
خیلی خیلی ممنون.
بعد در ادامش یک سوال دیگه دارم.
فرض کنید می خواهیم دو متغیر تعریف کنیم که هر دو باینری هستن.مثلا Yj به ازای مجموعه های a و b و Xj به ازای مجموعه های c و d.
تعریف این متغیر ها چه جوری میشه؟
سلام
شما باید اجتماع دو مجموعه a و b رو بگیرین، مثلا اسمش رو میذارین ab بعد y رو به صورت y(ab) تعریف میکنین و همونجوری هم بکارش ببرین، برای x هم کار مشابهی انجام بدین.
فقط توجه کنین که اگه y باز هم ممکنه به ازای اندیسای دیگه هم برقرار باشه، باید اجتماع همه رو به جای ab بنویسین و تو محدودیت ها ریزترش کنین
سربلند باشین
و اینکه اگر بخواهیم سیگما به ازای چند مجموعه بنویسیم چه طوری میشه؟مثلا سیگمای j به ازای مجموعه ی a اجتماع b.
مرسی
باز همون میشه. میگین که:
sum(ab,...)
salam man y masale daram k tabe hadafam minz=x1^2+2×1+x3 hast va mahdoodiatam x1+x2<=2 maznooram ine mahdoodiatam khatiye va mahdoodiye sos noe 2 ham daram man nemidoonam vaqti mikham c yani zarybae tabe hadafao tarif konam vase x1 b tavan 2 zaribe 1 va ase x1 zaribe 2 daram nemidoanm chetor bayd in ghesmat moshakhas she tavan 2 motaghyri k y ja faqat to tabe hadaf hast va dar mahdoodiata va baghiye ghesmata tabe hadafam ba tavan 1 hast to kodom ghesmat bayd benivisam?
va ink man sos2 variable tarif mikonam aya bayd z ra ham variable tarif konam ya dg niazi nist? va mahdodiate x ha bozorgtr mosavi sefr ham lazem ast ya na?
سلام
بهتر توضیح بدید. و لطفا فارسی بنویسید
سلام
خسته نباشید
سوالی داشتم در خصوص اینکه چطور میتونم یک محدودیت به شکل زیر رو به تابع هدف اضافه کنم؟
(co2(i,j) .. y(i,j)=l=x(j
ممنون میشم راهنمایی کنید.
obj..goal=e=sum((i,j),y(i,j)-x(j));
سلام وقت بخیر
من یه مدل زمان بندی پروژه دارم که توی کد کردن محدودیت پیش نیاری مشکل دارم یعنی وقتی مدلم را ران میکنم همه محدودیت های پیش نیازی رو رعایت نمیکنه.من ابتدا توی مجموعه prec1 فعالیت هایی که پیش نیاز هم هستند رو مشخص کردم و بعد با کد پایین زمان شروع فعالیت ها رو بدست اوردم که در جواب زمان شروع فعالیت ها بر اساس رعایت رابطه پیش نیازی بدست نمیاد.
/activity /a0*a5
; ( alias(activity,i,j
/ prec1(i,j) precedence relations of project /a0.a1,a0.a2,a1.a3,a2.a4,a3.a5,a4.a5
..sum(t$(ord(t)<=card(t)),(ord(t)*s(j,l,t)))=g=smax(i$prec1(i,j),(((sum(t,ord(t)*s(i,l,t))+p(i,l
ممنون میشم اگه منو راهنمایی کنین.
salam
مدلتونو بفرستین تا ببینیم مشکل کجاست و حل کنیم.
سلام
با تشکر از پاسختون ، مدل رو به ایمیل شما ارسال کردم.
سلام
ممنون از توجهتون ،مشکل من حل شد .ایراد از مدل بود که اشتباه بود.
با تشکر
سلام و خسته نباشید
من یک سوال داشتم در مورد اینکه چطور یک عبارت غیر خطی رو به عبارت خطی تبدیل میشه کرد.به طور مثال تو کد پایین از smax استفاده کردم که مدلم رو غیر خطی کرده . آیا روشی برای خطی کردن این عبارت وجود داره؟
= sum(t$(ord(t)<=card(t)),(ord(t)*s(j,l,t)))=g
((( smax(i$prec1(i,j),(sum(t,ord(t)*s(i,l,t))+p(i,l
ممنون میشم اگر راهنماییم کنین
سلام
راهش اینه قبل از نوشتن تابع هدف و محدودیت ها با استفاده از لوپ ها مثلا با for مقدار smax رو پیدا کنین و برابر یک متغیری قرار بردین و برای محدودیت ای که گفتین برای smax نوشتن متغیر رو بنویسین
سلام
ممنون از پاسختون. ولی چطور میتونم قبل از نوشتن تابع هدف مقدار smax اون عبارت رو پیدا کنم؟ توی عبارت( s(j,l,t متغیر هست!
سلام
شما میتونین یه عبارت معادل smax رو بنویسین. مث مثال زیر:
c1(i).. x(i)=e=smax(j,y(i,j);
* this constraint make your model non-linear
* try this dear fallah
x(i)=g=y(i,j);
این محدودیت یعنی x از همه y ها بزرگتره (تو حالت بهینه برابر بزرگترینشون میشه)
سلام
لطفا نحوه تولید اعداد تصادفی یکنواخت برای پارامتری مثل( p(j,i,t را به طوری که j , i, t هرکدام در بازه خاصی باشند را توضیح دهید.
ممنون
( p(j,i,t مساوی با uniform(a,b) قرار بدین. a, b عدد هستن
سلام
يك ماتريس دارم كه يك در ميان پر شده است چگونه مي توانم ستون هاي خالي آن را در گمز حذف كنم.
با تشكر
سلام
با شرط ماتریس تون را نمایش بدین.
سلام
ممنون میشم به سوالم جواب دهید.
فرض کنیم d(i) و n(j) به عنوان متغییر و x(i) پارامتر باشد و دربخش معادلات بخواهیم به صورت زیر تعریف کنیم:
d(i)=min(abs(x(i)-n(‘1’)) , abs(x(i)-n(‘2’)) , abs(x(i)-n(‘3’)))
یعنی هر کدام از این سه تا { abs(x(i)-n(‘1’)) و abs(x(i)-n(‘2’)) و abs(x(i)-n(‘3’)) } کوچکتر بود، در d(i) قرار بگیره از چه روشی میتوانم استفاده کنم.
باز هم ممنون
سلام
d(i)=e=min(abs(x(i)-n("۱")) , abs(x(i)-n("۲")) , abs(x(i)-n("۳")))
سلام وقتتون بخیر
یه سوال داشتم ازتون: تابع floor رو میشه واسه متغیر هم به کاربرد؟؟؟ مثلا: n=t*a که n , t متغیر و a پارامتره. من اینجوری می نویسمش:
n=floor(t*a)
بعد مدل و ران میکنم سریع رانش انجام میشه و یه best solution هم میده منتها یه جا می نویسه:problem solving fixed problem. dual variables for nlp subproblem not
available.
این ینی این ک ب جوابش هیچ اعتباری نیست؟؟؟ ممکنه ایرادش از floor باشه؟
با minlp هم رانش میکنم.
مرسی.
سلام
مشکلی نیست به اون صورت، فقط گپ چند میده؟ صفر؟
سلام
absolute gap: 1.000000e+000 و relative gap:1.855288e-003 رو میده.
باید صفر باشه؟
سلام
صفر نبود ولی با یه دستوری صفرش کردم. باید صفر باشه؟
بله باید صفر باشه اگه جواب دقیق بخواین
سلام. خسته نباشید
من یه پروژه توی گمز نوشتم. ارور 502 میده…. میگه فایل gdxin باز نمیشه
میشه راهنماییم کنید لطفا
سلام
کد gdx رو دقیق نزدین. unable to open میزنه دیگه؟
بله دقیقا همینو میزنه. امکانش هست من پروژم رو براتون ایمیل کنم ؟ شاید مشکلش تو نوشتن برنامه هاست و مشکل اساسی داره..
ممنون میشم راهنماییم کنید… از لحاظ هزینه هم مشکلی نیست… تقدیم میکنم
چطوری میتونم مقدار یک متغییر را به ازای بعضی از اندیس ها صفر بدهم؟
متشکرم.
سلام
با تخصیص ویژگی از نوع فیکس متغیر. مثل مثال زیر:
variable x(i);
x.fx(i)=0;
or
x.fx("3")=0;
35 dey bahman esfand
**** $170 $1$148 $334
36 a 60 110 70
37 b 50 120 130/
38 ;
هنگامی که برای پارامتر D(i,j) مقدار دهی اولیه میکنم این ارور ها رو میده.
؟
اقا مشکل ما حل شد. درواقع باید table باشه نه پارامتر و اخرش سیمیکولن باشه.
sets
i Set of product/a,b/
j Set of month /dey, bahman, esfand/
Parameters
C(i) production Cost per month
CC(i) overtime production Cost per month
H(i) Holding Cost of product i per month
MPN(j) capicity of normal production at month j
MPO(j) capicity of overtime production at month j
D(i,j) Demand of product i at month j
با سلام
نمیدونم این ارور برای چیه؟
سلام
کل کد رو نذارین لطفا.
بگید ارور چی میگه همین کافیه
با سلام و خسته نباشید.
یه سوال دررابطه با همین تعریف مجموعه ها داشتم. من یک مجموعه دارم مثلا 5 عضوی:/
s ‘station’ /s1,s2,s3,s4,s5، حالا میخوام چن تا subset با توالی های مختلف تعریف کنم مثل: /s2,s3,s4 / و /s1,s4,s5,s2 /. منتها اولی مشکلی نیست ولی واسه دومی ایراد میگیره چون ترتیب رعایت نشده! الان من نمیدونم چه جوری این مشکل و حل کنم. گره مجازی تعریف کردوم ولی تو شرط هایی که میخوام واسه محدودیت ها بزارم ایراد میگیره.
ممنون میشم اگه راهنماییم کنین. و ممنون به خاطر سایت خوبتون.
سلام
ممونم.
تعریف مجموعه شما خیلی اشکال نداره. شما شرط هایی رو که دارین میذارین به جای دستور ord از دستور uel استفاده کنین. ساده ست. یه مقدار این دستور رو تست کنین یاد میگیرین. ولی اگه با ord بگیرین، چون ترتیب رو رعایت نکردین احتمالا ارور میده. و اینکه مجموعه بزرگتر یا s رو اول تعریف کنید، بعد s1,s2 رو به عنوان زیر مجموعه ش تعریف کنین
سلام و مرسی بابت پاسختون.
خیلی از این دستور uel ک فرمودین سردر نیاوردم!:( به صورت همون گره های مجازی تعریفش کردم دیگه ارور شرطش برطرف شد. مثلا مجموعه کل رو به صورت
/s1,s2,s3,s4,s5,s55,s44,s33,s22,s11/ تعریف کردم که چهارتای آخر گره مجازین و سابست دومیه تو پست قبلیم به صورت /s1,s4,s5,22/ تعریف کردم. منتها باید به گمز بفهمونم که مثلا s2 همون s22 هستش یا s5 همون s55 هستش، ولی نیدونم چ جوری بهش بفهمونم!
مرسی.
خب اینم براش شرط بذارین که برابر در نظر بگیره. مثلا ord هاشون طبق یه رابطه ای به هم ربط داده بشن. مثلا ords2 مساوی ords22 منهای 8
اونوقت چ جوری باید بنویسمش؟ چون من هرجور مینویسم ارور میده:
مثلا: cons(s)$(ord(s2) eq (ord(s22)-7))
به چی ارور میده
ارور 311 ! یه جورایی میگه ord و اینجوری نمینویسن!
اروررش اینه:
the function ord(‘string’,expr) needs the second argument…
الان که دقت کردم شما Ord رو اشتباه زدین که، ord(s2) درست نیست. باید یه اندیس آزاد مث s بهش بدین. چون s2 خودش یه element تو مجموعه s هست این ارور رو میده.
شما چرا همون s2 رو به جای s تو متغیرتون نمیزنین؟ اینجوری مثلا x(“s2”)
یه چیزی:
این اروری ک گفتم واسه وقتیه ک s2 و s22 رو تو کوتیشن قرار میدم. وقتی که همینجوری مثه بالا مینویسم ارور 2 رو میده:
indentifier expected
جناب مهندس مرسی با توضیحات شما اوکی شد این قسمت:)
یه سوال دیگه بی زحمت. واسه جزء صحیح یه متغیر و گرفتن از floor استفاده میکنیم درسته؟
آخه من استفاده کردم ارور سینتکسی نمیده منتها میگه:
cannot handle function ‘floor’
مرسی و ببخشید سوال زیاد می پرسم.
سلام
نه خواهش میکنم. خوشحال میشم که از طریق این سایت سوالاتتون رو مطرح میکنید.
فلور رو باید درست به کار ببرید. نباید با بقیه برنامه ها مث متلب قاطیش کنین.
parameter a;
a=floor(1.1);
display a
پارامتر نیستا متغیره! ک این متغیر از حاصلضرب یه متفیر ضربدر پارامتر بدست میاد:
n=t*a که n , t متغیرن و a پارامتر. حالا من میخوام جزء صحیح n و بگیرم. نوع نوشتنی ک فرمودین واسه پارامتر نوشتم اوکیه ولی واسه متغیر نه!
سلام
تو محدودیتا مینویسین؟ یا جای دیگه ای؟
سلام مهندس
من مکان یابی هاب کار میکنم
دو تا مشکل دارم اولیش این که من مقدار جریان تعریف کردم. w(i, j
از اکسل فراخوانیش کردم
حالا میخوام یک پارامتر a(i)
تعریف کنم ب طوری که مجموع تمام wij
به شرط i مشترک محاسبه کنه و تقسم بر 20 بشه و در نهایت جز صحیح بگیره و نشون بده
اینجوری تعداد وسیله رو نشون میده
چجوری بنویسمش
دوم اینکه شما loose lp و tight lp میشناسید؟
سلام
سوال دومتون رو واضحتر بپرسید لطفا
سلام من یک ماتریس ۹۰*۹۰ روابط بین افراد دارم، که ساختار بین ۴ نفر تشکیل میشه، یعنی ۴ اندیس رو یک table. اینو به چه صورت باید نشون داد؟ برای تعریف مجموعه که از alias استفاده میشه، ولی table رو چطور باید وارد کنیم؟
سلام
دستور table رو بخونید. اینجا کلیک کنید