با اطمینان 99 درصد تمامی کد نویسان گمز -از مبتدی گرفته تا فوق حرفه ای یا توسعه دهنده-
پس از Run کردن مدل خود، حداقل یک Error را مشاهده خواهند کرد.
خوشبختانه اکثر Error هایی که GAMS به کاربر می دهد با تغییرات بسیار ساده ای در کد نویسی رفع خواهند شد.
در این بخش قصد داریم خطاهای رایج و معمولی که دوستان در بخش های مختلف کامنت گذاشته اند، را به عنوان تاپیک های جداگانه ای مورد بحث قرار دهیم.
با ما همراه باشید
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
سلام وقت بخیر
من در کد زیر با ارور 125 مواجه شدم، میشه بفرمایید ایراد در کدام قسمت بوده؟ ممنون
constraint8(t,s)..sum(m1,sum((m2,m1)$(ord(m2) ne ord (m1)),MV(m1,m2,t,s)))=e=NM(s);
سلام
یه بار روی m1 سام بستین. دوباره نبندین دیگه.
سلام و وقت بخیر . من بعد از ران که باید جواب دارای صورت و مخرج باشه و مخرج را به حالت کسری و همراه با یک کاما ایجاد می کنه .
همونطور که ملاحظه می کنید 6\1 باید بصورت ضرب ایجاد می شد یعنی عدد ۶ به مخرج ضرب می شد و عدد ۱ به صورت و لی نه تنها به حالت جدا ایجاد کرده بلکه به جای ضرب نیز کاما ایجاد شده . لطفا کمکم کنید ممنونم
سلام
این کد بهم ریخته س. لطفا به ایمیل ارسال کنین و توضیح هم بدین مشکلتون رو چیه.
ممنون
ببخشید علت اینکه توی مدل های حمل و نقل inf. ایجاد میشه و حتما باید رفع شه چی هست؟
الان من برای کار خودم اگر مدل رو ساده بنویسم inf.هست اما وقتی inf رو روی دو طرف بررسی میکنم جواب optimal میده
و اینکه وقتی جواب رو داریم میاریم در پایان نامه باید حتما ذکر کنیم که inf بوده و ما رفعش کردیم
بازم از لطفتون ممنون
سلام
وقتی مدل نشدنی میشه، معنیش اینه که شما جوابی امانپذیر ندارین. یعنی جوابی ندارین که قابل اجرا باشه. پس باید به جواب قابل اجرا در دنیای واقعی باشه. شاید یه نفر خواست مدل حمل و نقل رو برای سیستم پیاده کنه. نمیشه که نشدنی باشه.
“اینکه دو طرف رو بررسی میکنیم” رو من متوجه نشدم. لطفا شفافتر ذکر بفرمایین.
سوال اخر، خیر اینکه رفع کردین جزو وظایف شماست.
سلام و شبتون بخیر
من داشتم مثال های گمز 25 برای مدل حمل و نقل رو میخوندم، توی این ورژن از نرم افزار از کد زیر که شامل breakهست استفاده کرده
میخواستم بدونم این قسمت منظور و هدف استفاده از break چی هست؟ و اگر در کل استفاده نشه چه تاثیری در جواب مدل داره
ممنون
سلام
احتمالا اینجا میخواد مطمئن بشه که مدل به صورت Optimal حل شده باشه. میگه اگه اینطور بود، عملیاتی که الان داری انجام میدی رو قطع کن (مثلا اگه حلقه باشه)
با سلام. چطوری اثر خارج شدن نیروگاه ها یا خرابی خطوط را در برنامه اعمال کنیم؟ متغیری باینری برای نیروگاه ها در نظر گرفتم و احتمال هر پیشامد را حساب کردم ولی نحوه ارتباط برقرار کردن را بلد نیستم. راهکاری دارد؟
سلام
سوال واضح نیست.
با عرض سلام و خسته نباشید
من تا جایی که تونستم خیلی از سوال جوابهارو خوندم ولی متاسفانه سوال مشابه سوال خودم را پیدا نکردم.تگر هم تکراری بوده شرمنده.
من یک مجموعه ای تعریف کردم که شامل 14 عدد هست . دوباره 2 تا ازین اعداد را در مجموعه دیگری تعریف کردم که در جاهایی شرایط ویژه ای دارند.
در قسمت نوشتن معادلات برای حل وقتی که میخواهم بنویسم این فرمول برای همه مجموعه به جز آن دو عدد، با خطا مواجه میشوم. امکان داره بگید این رو چطور در حن نوشتن معادله بنویسم؟
در اینجا b مجموعه شامل تمامی اعداد
و omeN زیر مجموعه ای b می باشد.
سلام
میتونین به زیر مجموعه دیگه تعریف کنین که شامل omen نباشه مثل b2 بعد const5(b2 تعریف کینن و هر جا b داشتین بذارین b2
سلام این پارامتر مقادیر تولید مثلا 1000 عدد در t1 و… را که به پارامتر مقداردهی کرده ام باید بگیرد اما در صورتی این مقادیر رو می تواند بگیرد که کارخانه احداث شده باشد. در واقع در صورت عدم احداث کارخانه، تولیدی نیز وجود ندارد پس باید پارامتر مقدار صفر را بگیرد و مقادیری که برایش مشخص کرده ام نگیرد، ایا امکان تعریف چنین پارامتری وجود دارد؟
ممنون می شوم در مورد سوالات زیر نیز راهنمایی کنید:
1. اینکه میگن مدل رو باید با مثال های محتلف حل کرد چند تا مثال کافیه؟ ایا 3 تا مثال کافی هست؟
2. مدل من مثال هایی که همه اندیس ها از 1 شروع و همه اندیس ها تا عددی برابر با هم مثلا 5(همه اندیس ها از 1 تا 5 ) رو حل می کنه و با تغییر یکی از اندیس ها مدل با صرف چند ساعت هم به جواب نمیرسه. ایا این گونه مثالهای دارای اندیس های برابر معتبر هستند؟
3. این که مدل اندیس 1 تا 10 را در 15 دقیقه حل میکنه اما اندیس 1 تا 5 ( که اعداد کمتر ی هستند) را در 45 دقیقه حل میکنه غیرعادی نیست؟
4. در برنامه ریزی تصادفی سناریو محور روش مالوی، متغیر دلتا براساس چه منطقی به محدودیت ها اضافه می شود؟ در واقع از کجا بفهمیم که دلتا به کدام سمت محدودیت با چه علامتی اضافه می شود؟
(عکس روش مالوی خدمتتان ایمیل شده است)
ممنون
سلام
بنده وقت نکردم روش رو ببینم.
ولی تو مولوِی یا هر روش روباست دیگه ای، جهت نامساوی، تحت عدم قطعیت بودن هر یک از پارامترهای A,B,C برای این جهت های مثبت و منفی تعیین کننده هست. مثالای بیشتری رو باید مطالعه کنین.
سلام
1- برای حوزه های مختلف فرق میکنه. ببینین تو مقالات مشابهی که کار شده چند تا کار شده. من دیدم فقط یه مثال حل کردن، یا زیر 5 تا، ولی اونا مسائل خاص بودن و کاربرد خاص داشتن. معمولا بالای 15 تا خوبه.
2- تعداد همه اندیسها برابر باشه هم خیلی جالب نیست. اگه 3 تا اندیس دارین، میتونین این ترکیبا رو داشته باشین، و حتی بیشتر (افزایش سایز مسئله)
2.2.2
2.2.3
2.3.2
2.3.3
3.2.2.
…
5.2.4
…
10.4.7
3- این دیگه بستگی به مدل داره و داده هایی که توش به کار رفته، ممکنه این 10 تا یه جوری داده دهی شده باشه که گمز سریع بفهمه بیشتر جوابها نشدنی هستن و یا مفید نیست، و زودتر گزارش جواب بهینه رو اعلام کنه. نمیشه نتیجه گرفت. این باید کامل مدلتون تحلیل شه و بنده نمیتونم کمکی بکنم.
خیلی ممنونم، حال اگر فقط اندیس های برابر را حل کند نه اندیس های نابرابر و اندیس های کمتر از عدد،10احتمال اینکه مدل مشکل داره وجود داره؟
این دیگه بسته به مدل شماست. اگه ذات مسئله به شکلی هست که فقط باید اندیسها برابر باشن، منطقیه که گمزم جواب نده. در غیر اینصورت مشکوکه
سلام اقای مهندس
من تقاضا رو به صورت parameter d(l,t);
d(l,t)=uniformint(7000,8000);
کد زدم. برای تحلیل حساسیت وقتی بازه تقاضا روبه (7700,8800) افزایش میدهم تابع هدف سودم زیاد می شود که منطقی هست و یا وقتی بازه هزینه رو کم میکنم تابع سود زیاد میشه. اما وقتی برای تحلیل حساسیت نظامند از کد زیر استفاده میکنم همواره تابع هدفم ثابت هست در صورتی که با افزایش تقاضا باید افزایش پیدا میکرد
parameter dc;
dc=sum((l,t),d(l,t));
loop(iteration,
dc=dc*0.1+dc;
solve myfirstmodel using mip max z;
results(iteration,’demand’)=dc;
results(iteration,’z’)=z.l;
);
ممنون می شوم بفرمایید چرا این تناقش به وحود می اید؟ و چه باید کرد؟
در خصوصپارامترهای هزینه و… نیز همین مشکل وجود دارد
سلام
این iteration که نوشتین هیچ عمل مفیدی انجام نمیده. تنها کاری که میکنه اینه که به تعداد iteration یک مسئله رو بارها و بارها حل میکنه!
شما وقتی loop می نویسین باید یه جایی از اندیس این loop استفاده بشه. مثلا تو فرمول dc میتونین بنویسین.
سلام
بهتره به همون گفتگویی که داشتیم جواب میدادین.
فرضا احداث شما با متغیر y باشه، و اون متغیری که قراره این اعداد رو بگیره x(t، این معادله میتونه براتون مفید باشه:
که m یه عدد بزرگ هست (خیلی هم بزرگ نگیرین، همین که از اون مقادیر بیشتر باشه خوبه.
سلام ممنون از راهنماییتون ولی با این محدودیت x یک متغیر محسوب میشه و گمز با حل مدل برایش مقدار مشخص می کنه اما من میخواهم این x در واقع پارامتر باشه و من قبل حل مدل بتونم بهش مقدار دهم
سلام
بله متغیر محسوب میشه. احداث شما هم متغیره دیگه! وقتی x بستگی به یه متغیر داشته باشه، خود x هم متغیر میشه. الان کمک بیشتری نمیتونم بکنم. چون هر سری یه جا کامنت میذارین و معلوم نیس کجا میفتن با اینکه بارها عرض کردم که دوستان لطفا به یک گفتگویی که اغاز کردین جواب بدین نه تاپیک
سلام
خیلی ممنون از راهنماییتان
سعی کردم رعایت کنم. برای مواقعی که رعایت نشده عذرمیخواهم.
من مدتی است که با ارور out of memory مواجهه شدم و به شدت کارم رو دچار مشکل کرده از دستوراتی مانند:
استفاده کردم اما مشکل حل نشده است.اندازه مساله هم فکر نمیکنم بزرگ باشه
از لحاظ اندازه: مساله دارای اندیس های 50، 31،31،10،10 هست و بقیه اندیس ها تک رقمی هست و 24 محدودیت، 4 متغیر باینری و 15 متغیر عدد صحیح هست. حل کننده هم cplex
ممنون می شوم راهنماییم کنید چه جوری مشکل رو حل کنم؟
استفاده از فایل op4 که در کامنت های قبلی بیان کردید می تواند مفید باشد؟؟
ممنون می شوم این فایل رو برای من نیز بفرستید
سلام
از نظر شما این تعداد کم هست؟ این تعداد برای اکثر مسائل غیر قابل حل هست. فایل op4 هم شامل همینا میشه که تو فایل opt گذاشتین. فرقی نمیکنه.
سایز رو کوچیکتر کنین.
سلام، اخه برای اندیس های کوچکتر هم چک کردم. فقط تا اندیس 6 جواب میده برای اندیس های بالاتر مثل 7 یا 8 جواب نمیده!!!! گرچه داده هایی مثل تقاضا با ظرفیت متناسب هست. این مشکل رو چه جوری میتونم حل کنم آیا؟؟؟
سپاس
ظاهرا مسئله شما شدیدا کامپلکس هست. با یه کامپیوتر با رم بیشتر هم تست کنین. چاره ای نیست. ممکنه استفاده از option cutoff هم براتون مفید باشه. تو کانال هست مطالعه ش کنین.
سلام. عذرمبخواهم ممنون می شوم لینک کانال تلگرامی که فرمودید رو ارسال کنید
ممنون
سلام
تو صفحه اول سایت هست لینکش
t.me/gamsbook
سلام بله در صفحه نخست وجود داشت ولی پیام اینکه: چنین کانالی وجود ندارد اعلام میکرد و امکان عضو شدن وجود نداشت. اما با ادرسی که ارسال کردید توانستم عضو شوم.
سپاس فراوان
با عرض سلام و وقت بخیر
ببخشید من یک مدل زنجیره تامین دارم و می خواهم در ان یک پارامتر تعریف کنم به طوری که اگر کارخانه احداث شد این پارامتر مقادیری که برای ان در طول زمان مشخص کردم بگیره اما اگر کارخانه احداث نشد پارامتر صفر بشه. ایا امکان تعریف چنین پارامتری وجود دارد؟
پیشاپیش ممنونم از راهنماییتان
سلام
خواهش میکنم.
در مورد اون مقادیر بیشتر توضیح بدین.
سلام
من مسئله مدلسازی را برای تخصیص سفارش بهینه به تعداد 3 تامین کننده برای 2 محصول رو مدل سازی کردم ولی متاسفانه جواب مسئله من یعنی جواب همه Xها صفر بدست آمده است. لطفا راهنمایی کنید متاسفانه متوجه اشکال کارم نشدم. ممنون.
سلام
اول شما باید دقت کنین که لایسنس دارین یا خیر. اگه ندارین تو همین سایت میتونین دانلود کنین.
اینکه همه صفر بشن، یا جواب به صورت آپتیماله یا اینکه نشدنیه، model status و solver status رو چک کنین نتیجه رو می بینین. بعدش دیگه تازه کارتون داره شروع میشه، شما باید اول فرضیات مدلتون رو مجددا چک کنین. مجددا مدل رو اصلاح و ویرایش کنین با دقت. بعد داده ها و کد رو چک کنین. بعد مدل رو با تعداد محدودیت کمتر تست کنین و هر بار رانش کنین. تا جایی که نشدنی شد باید بشینین تحلیل کنین که چرا نشدنی شده. همه این کارا رو با دقت انجام بدین موفق میشین.
سلام
من مسئله مدلسازی را برای تخصیص سفارش بهینه به تعداد 3 تامین کننده برای 2 محصول رو مدل سازی کردم ولی متاسفانه جواب مسئله من یعنی جواب همه Xها صفر بدست آمده است. کد های مسئله به صورت زیر می باشد لطفا راهنمایی کنید. ممنون
سلام
مسئله شما نشدنی است. باید سعی کنین که این مشکل رو رفع کنین.
سلام. وقتتون بخیر. عذر میخواهم که مجددا سوال می پرسم. ممنون می شوم راهنمایی فرمایید.
ارور 66 بالاخره رفع شد و مدل ران شد اما جواب نمی دهد زیرا در مراحل حل ارور ابی رنگی مبنی بر شدنی نبودن دو تا از محدودیت ها می دهد (خطوط 484 و 485 بیان شده در ارورها همان دو محدودیت هستند)
محدودیت اول سامیشن متغیر a با اندیس های b,j,t,v برابر با یک است و محدودیت دوم سامیشن aa با اندیس هایb,j,t,c برابر یک است این دو متغیر باینری بوده و مدل mip است.
با حذف این محدودیت ها مدل ارور نمی دهد اما جواب هم ندارد مقدار z صفر می شود و
MODEL STATUS 10 Integer Infeasible می شود.
– برای رفع نشدنی شدن محدودیت ها باید چه کرد ؟
– بعد از رفع مشکل محدودیت ها برای MODEL STATUS 10 Integer Infeasible چه باید کرد؟
ایا مدل مشکل دارد؟؟؟
پیشاپیش از وقتی که میگذارید ممنونم
ارورها:
— Starting execution: elapsed 0:00:00.004
— my first modellgms.gms(421) 4 Mb
— Generating MIP model myfirstmodel
— my first modellgms.gms(484) 5 Mb
*** Error at line 484: Equation infeasible due to rhs value
— my first modellgms.gms(485) 5 Mb 1 Error
*** Error at line 485: Equation infeasible due to rhs value
— my first modellgms.gms(497) 5 Mb 2 Errors
*** SOLVE aborted
سلام مجدد خدمت شما . خسته نباشید
من برای کنترل محدودیت های مدل از دستور limrowو 250و limcol=100 استفاده کردم اما در بعضی از محدودیت ها همه حالات ان محدودیت رو به صورت گسترده نشون نمیده تا بشه کنترل کرد و پیام زیر رو نوشته. ممنون می شوم بفرمایید چه جوری میتونم این مشکل رو هم حل کنم تا همه حالات مختلف رو نشون بده
REMAINING 6 ENTRIES SKIPPED و یا REMAINING 105 ENTRIES SKIPPED
سلام
limrow رو بیشتر کنین. مثل 1000 تا.
خیلی نیازی ندارین به بسط داده شده محدودیت ها احتمالا.اولیا رو تحلیل کنین. ببینین درستن یا نه.
سلام
اینکه مدل نشدنی هست تازه اول کار شماست. باید مدلسازی، داده ها و کد رو دقیق چک کنین اول. بعد میتونین اول تابع هدف با یه محدودیت بذارین و مدل رو ران کنین. اگه شدنی شد، یه محدودیت دیگه هم اضافه کنین. تا جایی که نشدنی بشه. اون موقع باید تحلیل کنین و تلاش کنین که مشکل رفع بشه. اون محدودیت هم که ارور آبی داده یه ارور بدیهی هست. یعنی بدون حل مدل هم گمز فهمیده که همچین محدودیتی اصلا امکان نداره. باید تحلیل کنین اینجا هم.
سلام، خیلی ممنونم از راهنمایی ها ی ارزنده تان
سلام
وقتتان بخیر
ببخشید در مدلم ارورهای 66 و 256 مانع ران شدن می شوند
در کامنت های بالا گفته اید که باید مقدار دهی صورت گرفته باشه و علائم چک شود و تا قبل از دستور solve مقدار دهی نشده باشند. همه این موارد چک شد اما باز هم این ارور رفع نشد. ایا دلیل دیگری می تواند داشته باشد؟؟
Error 66 in C:\Users\Lenovo\Documents\gamsdir\projdir\my first modellgms.gms
The symbol shown has not been defined or assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
*** Error 256 in C:\Users\Lenovo\Documents\gamsdir\projdir\my first modellgms.gms
Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
ممنون
سلام
اندیس ها و ورودی ها همه باید مقدار دهی شده باشند. و معادلاتی که در دستور model میان هم باید همه علاوه بر اینکه با دستور equation تعریف شده باشن، باید فرمولشون رو هم وارد کرده باشین.
ضمنا عباراتی نظیر z.l هم تو مدل نیارین تا وقتی که مقدار گرفته باشن.
سلام. ممنون از پاسخگوییتان
من تمامی این موارد را چندین بار کنترل کردم. همه موارد رعایت شده اند اما متاسفانه باز هم این ارور ها را دارد.
الان نمیدونم مشکل کار از کجاست که همچنان این ارورها پابرجاست و اینکه برای رفع این ارورها و ران شدن مدلم چه کار دیگه ای میشه انجام داد ؟؟
سلام وقتتان بخیر
عذر میخواهم من در کدنویسی محدودیت مدلم به مشکل برخورده و خطا اعلام می کند. از انجا که با اوردن کدها در اینجا به هم ریخته می شدند و امکان اوردن محدودیت نبود. ان ها را به ادرس ایمیل ابتدای سایت ایمیل کردم ممنون می شوم بنده را راهنمایی فرمایید.
با سپاس
سلام وقت بخیر
سلام
من برای تحلیل حساسیت وقتی مقادیر بازه تقاضا (l,t)d رو از( ۶۰۰۰،۷۰۰۰)uniform به(۶۷۰۰،۷۷۰۰) افزایش میدهم و مدل ران میکنم تابع هدف سودم افزایش پیدا میکنه که منطقی هم هست. اما وقتی از کد زیر استفاده میکنم که نظامند تقاضا افزایش پیدا کنه با افرایش تقاضا همواره تابع هدفم ثابت میمونه، انگاری به این دلیل ثابت میمونه که dc در محدودیت ها نیست و تاثیری در تابع هدف نداره. با توجه به عدم کارکرد کد زیر سوالم این هست چه جوری میتونم تقاضا رو نظامند افزایش دهم وتغییرات تابع هدف رو به دست بیارم.
ممنون می شوم بنده را در این زمینه راهنمایی کنید.
سلام
من این سوال رو یه جای دیگه خدمتتون جواب دادم.
اینکه dc کلا تو مدل نباشه که نمیشه. و قطعا تأثیری نخواهد داشت. حلقه هم اشتباه نوشته شده. و عملا dc ربطی به تکرار نداره. باید ارتباط داده بشه. مث جواب قبلی که براتون نوشتم.
سلام ببخشید من متوجه اینکه قبلا پاسخ داده اید نشدم. ممنون از راهنماییتون اما کد رو باز به شکل زیر اصلاح کردم فایده ای نداشت. ممنون می شوم بفرمایید چه مشکلی داره؟
سلام
این کد باعث میشه dc از dc تا 2dc تغییر کنه. شما باید مشخص کنین که بازه تغییرش چجوری باشه. با هر فرمولی که میخواین. حالا این تغییرات ممکنه تأثیری نداشته باشه. (اینایی که من نوشتم) به علت اینکه حساسیت تو اون بازه روی dc وجود نداشته باشه.
سلام ممنون از راهنماییتان و وقتی که می گذارید
راستش من در نهایت متوجه نشدم چه جوری باید کد رو اصلاح کنم تا تحلیل حساسیت انجام بشه :(((
اگر ممکنه میشه خودتون کدی یا راه دیگه ای که با افزایش تقاضا به صورت نظامند، تابع هدف را محاسبه کنه و تحلیل حساسیت رو انجام دهد ، بگید
ممنون
سلام
این ادامه ی کدوم کامنته؟
میبخشین امکانش هست با جزییات بیشتر یا یک مثال در این مورد راهنمایی کنین؟
متغیرها تعریف شده همزمان محاسبه میشن، بحث طرفین وسطین کردن حله (مدل به صورت زیر اصلاح شده)مشکل اصلی خطی کردنه است.
(VSF_bus_h1(bus,h) *VSF_p(bus,h)=e= VSF_bus_h(bus,h
(VSF_bus_h1(bus,h : متغیر پیوسته مثبت و حداکثر برابر 1 است. این متغیر باید 0 یا 1 برابر یا 0.5 برابر یا 1/3 برابرمتغیر اصلی((VSF_bus_h(bus,h) شود.
(VSF_p(bus,h: متغیر عدد صحیح که یا 0 یا 1 یا 2 یا 3 است. که از جمع چندین متغیر باینری بدست می اید.
(VSF_bus_h(bus,h: متغیر پیوسته اصلی مسئله که از یکسری معادلات دیگه مسئله بدست می اید.
ببینین رویه به این شکله. vsfh1 رو بگیریم Y که یه متغیر مثبت باشه. و Vsfp1,vsfp2,vsfp3 رو بگیریم x1,x2,x3
حالا Yx1+yx2+yx3 رو داریم تو سمت چپ محدودیت. الان میخوایم yx1 رو خطی کنیم. (که طبیعتا بقیه هم به همین شکل خطی میشن)
yx1 رو بگیریم z1
[css]
z1<=x1 z1<=y z=>y-(1-x1)
z>=0
[css]
این عمل برای بقیه x ها هم انجام میشه.
پس کافیه شما محدودیت رو به صورت z1+z2+z3<=vsf_bus_h بنویسین. و محدودیت های مربوط به هر z رو تعریف کنین. دقت کنین که اندیسا رو چجوری به کار میبرین.
سلام من یک مدل خطی دارم که به معادله پایین ایراد غیر خطی میگیره. VSF_bus_h(bus,h) متغیر پیوسته مثبت که از محاسبات دیگه ای بدست میاد. VSF_p(bus,h متغیر صحیح که با از یه سری محاسبات قبلی محاسبه میشه و شامل اعداد 0و1و2و3 هست. و متغیری که نیاز هست به عنوان جواب محاسبه بشه VSF_bus_h1(bus,h). مشکلی که هست یکی صفر مخرجه و یکی اینکه این معادله مدل رو غیر خطی میکنه. روشی هست بشه این رو خطی کرد.
const58(bus,h) .. VSF_bus_h1(bus,h) =e= VSF_bus_h(bus,h)/VSF_p(bus,h);
سلام
محاسبات قبلی یعنی از یه مدل دیگه خروجی گرفته شده و به عنوان ورودی به مدل جدید داده میشه؟ اگه اره که باید از suffix استفاده کنین. اگه نه که بریم ادامه ماجرا:
برای اینکه تقسیم بر صفر نده، طرفین وسطین کنین و vsfp رو در vsfbush1 بکنین. برای مقدار صفر هم که گذاشتین برای متغیر صفر و یک کار بی معنی ای نیست آیا؟
برای خطی کردنش دردسر دارین. شاید به صرفه نباشه خیلی. مثلا یکی از راه ها اینه که vsfp رو به مجموع سه متغیر صفر و یک تبدیل کنین (تو یه محدودیت جدا). بعد که طرفین وسطین انجام دادین حاصلضرب سه متغیر صفر و یک رو در متغیر مثبت باید خطی کنین که حدود 10 تا محدودیت احتمالا به مدلتون اضافه میشه.
سلام. وقت بخیر.
در واقع من میخوام این این چهار محدودیت رو ریلکس کنم با روش لاگرانژ. ولی وقتی میبرمشون تو تابع هدف خطای 149 میده. نمیدونم چجوری باید تعریفشون کرد به عنوان جریمه در تابع هدف. ممنون میشم راهنمایی بفرمائید. متشکرم.
*co3(i) .. sum((j), x(i,j)) =e= 1;
*co8(i) .. sum((j,m,r), w(i,j,m,r))=g= a10(i) + h(i);
*co12(i,p) .. sum((j), y(i,j,p)-y(j,i,p))=e= q(i,p);
*co13(i,j,m,r) .. B1(i,j,m,r)=e= ZI(i,j,m)*(ZI(i,j,m)-1)+(1-ZI(i,j,m))*(v(‘m2’,r)/v(‘m3’,r)-1);
سلام
co3(i,j)
سلام. وقت بخیر.
این روش ها رو هم امتحان کردم ولی متاسفانه جواب نمیده
سلام
لطفا به همون سوال جواب بدین. من نمیدونم بحث چی بوده. تشکر
Loop( i,
while(to(i) lt td(i),
if ( price_re(to(i)) lt price_ch(i),
با عرض سلام و ادب
من کد بالا رو برای منظور زیر استفاده میکنم:
ابتدا در loop ماشین i ام رو مشخص میکنیم بعد در پارامتر to زمان بهرهبرداری ماشین i رو به دست می آوریم حال میخواهیم قیمت مربوط به زمان to برای ماشین i ام رو بدست بیارم
مثلا to بصورت زیر هست که برای ماشین 1 برابر 1354 هست و من میخواهم price_re(1354) رو بدست بیارم
1 1354
2 500
3 728
4 644
و ارور 121 رو دریافت میکنم
سلام
بخش حلقه ها در گمز رومطالعه بفرمایین.
این کدربطی به چیزی که فرمودین نداره.
سلام ممنونم از لطفتون بابته جواب دادن به کامنت ها
من یسوال داشتم تو گمز نمیدونستم چجوری بنویسمش. یک مقدار تقاضای سالیانه داریم که به معادله ان به صورت زیره
الان برای مقدار هزینه سه حالت وجود دارد که اگر (pm(y بزرگتر از pload(y)*0.8 باشد که pload(y) یک پارامتر از قبل تعریف شده است مقدار این هزینه به صورت زیر است:
و در غیر این صورت به صورت:
این معادله را من چجوری و در کجای گمز باید بنویسم چون گویا توی equation نمی توان از دستور های if استفاده کرد.
سلام
فرمول اول که سر جاش هست و به نظرم توضیحات اضافه بود که اضافه کردین.
برای دو فرمول بعدی و شرط مورد بحث، به شکل زیر عمل کنین:
یه متغیر صفر و یک به نام z تعریف کنین، و معادلات زیر رو بنویسین:
M عدد بزرگ هست.
با عرض سلام و خسته نباشید
ممنون از سایت خوبتون من یه مشکلی برام پیش اومده ممنون میشم کمکم کنید.
من این کدو توی قسمت equation گمز نوشتم :
;((CDG_operation =e= sum((y,i),PDG(i)*CF*8760*29*power((1+infr)/(1+intr),y
که مقادیر infr , intr نرخ تورم و بهره هستند که هر ساله باید به توان y برسن که y یک set هستش به صورت :
y /y1*y20/;
که این مقدار باید جمع بشه هر ساله و یک هزینه رو به ما بدهد الان این خطا ها تو گمز برام اومده :
148 Dimension different – The symbol is referenced with more/less
indices as declared
201 Invalid argument for function
ممنون میشم اگه کمک کنید
سلام
بجای y بنویسین ord(y
سلام مدل من ارور 66 و 256 را می دهد در صورتی تعریف معادلات و حتی عدد دهی به پارامترها مشکلی ندارد؟ لطفا راهنمایی کنید؟ ممنون
*** Error 66 in C:\Users\user\Downloads\Untitled_7.gms
The symbol shown has not been defined or assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
*** Error 256 in C:\Users\user\Downloads\Untitled_7.gms
Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
سلام
ویرگول ها، سیمیکالون ها و پرانترهای مربوط به sum و سایر توابع به کار رفته رو چک کنین. تو مدل هم تا متغیر مقدار نگرفته از عبارت .L استفاده نکنین.
سلام . من یه مدل غیره خطی دو هدفه دارم که به روش وزنی نرمال شده در گمز کد کردم . این دو خطا رو داره
The symbol shown has not been defined or assigned66
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
سلام
این ارور یعنی شما یک نماد عددی (اندیس، پارامتر یا هر مقدار مشخص دیگری) رو تو مدل اوردین ولی مقداردهی نکردین. و بدون مقدار وارد حل شده.
سلام.
ببخشید متوجه منظورتون نمیشم.
خب دوتا جمع هستن که دارن از هم کم میشن.
ممنون میشم درستش رو بنویسید.
متشکرم از راهنماییتون.
به چند روش میشه نوشت. باید دید کدومشون مفهوم شما رو میرسونه. این دو تاش:
که باید در روش بالا j,jj رو آلیاس کنین.
ممکنه مشکل پرانتز داشته باشن اصلاحش کنین.
سلام. وقت بخیر.
من ی معادله توی تابع هدف نوشتم ولی خطای 149 میده. و همه مجموعه ها و اندیس ها رو هم چک کردم درست تعریف کردم. ولی نمیدونم مشکلش از کجاست. ممنون میشم راهنمایی بفرمائید. متشکرم.
objectivefunction .. T =e= sum((i,j,p), c(i,j,p) * y(i,j,p))-(lm*(1-sum((j), x(i,j))));
سلام
دقت کنین که کجا پرانتزا رو باز کردین و کجا بستین. مثلا اینجا شما بعد y سیگما رو بستین، در حالی که برای x هنوز i دارین و بدون صور عمومی.
سلام وقتتون بخیر
من ی مدل دو هدفه دارم. حتما باید با روش اپسیلون محدودیت حل بشه یا میشه چون دو هدف مینیمم سازی و از جنس هزینه هست با همم جمع کرد؟
من باهم جمع کردم ولی جوابای منطقی نمیده مثلا p>130 گذاشتم تو محدودیت ولی مقدار p رو صفر میده با این خطا
(LHS = 0, INFES = 130 ****)
ممنون میشم اگه راهنماییم کنید.
سلام
الزامی نیست که از یک رویکرد خاص استفاده کنین.
قضیه اینه که توافق کاملی برای چندهدفه ها وجود نداره، مگه اینکه مثلا مدیریت بخواد که یک جواب پارتو بهش بدیم که در این صورت نمیشه با روش مثلا معیار جامع حل کرد و بهتره با اپسیلون حل بشه.
نکته دیگه اینکه وقتی توابع هدف از یک جنس هستن معمولا باید با هم جمع بشن. فقط ضرایب هزینه دو هدف باید به شکلی در نظر گرفته بشه که هر بخش از هدف سهم خودش رو ایفا بکنه. یه حورایی باید به هم بخورن عدداشون.
بحثی که در مورد p کردین متوجه نمیشم. میخواین بگین که چنین محدودیتی رو در نظر گرفتین شما یا چجوریه؟ p چه نوع متغیریه؟
ممنون بابت راهنمایی و پاسخگوییتون
p یک متغیر ( متغیر قیمت ثانویه بعد از تحلیل حساسیت در یک معادله پیش بینی مناقصه است) که وقتی مثلا p>130 گذاشتم تو محدودیت ولی مقدار p رو صفر میده با این خطا
(LHS = 0, INFES = 130 ****)
یا با تغییراتی نهایت p رو 130 میده که p چون قیمت مناقصه است انتظار داریم بیشترین مقدار رو بده
ممنون میشم در این مورد راهنمایی کنید؟
لازمه مدل رو بفرستم؟
سلام
ببخشید من متوجه نشدم باز. فرض کنین کسی مسئله شما رو نمیدونه چیه. با این اطلاعات نمیشه کمکی کرد.
خط 1667 به صورت زیر است
البته فکر کنم اون خطا به خاطر خطاهای زیر باشد که قبل از آن وجود دارد لطفا نظرتون رو در مورد خطاهای زیر اعلام فرمایید
که خط های مربوط به آن ها به صورت زیر است
سلام لطفا قواعد کامنت گذاری رو مطالعه کنین (به همون سوال ریپلای کنین که دوستان استفاده بحث رو گم نکنن)
بله مشکل از همینا هست. عبارتی که به توان میرسه رو میتونین بذارین تو abs ارورای قبلی رفع میشه.
با سلام و احترام
آقای محمودی عبارتی را که به توان می رسد را داخل abs قرار دادم ولی مشکل حل نشد و زمانی که توان را داخل abs قرار می دهم مشکل رفع می شود.
امکان دارد توضیح بدهید به چه صورت این کار را انجام بدهم.
سلام
پایه رو وقتی داخل abs گذاشتین ارورش چی بود.
بعد از اجرای برنامه خطاهای بالا نشان داده می شود لطفا مرا راهنمایی بفرمائید
سلام
همونطور که تو خط اول گفته، خط 1667 کد گمزتون یه خطایی داره که باعث میشه برنامه متوقف بشه.
سلام.
خطا به هنگام فراخوانی گمز در متلب:
پس از بستن خطا:
نسخه هر دو 64 بیت
مسائل کوچک (مثل مساله transport خود گمز) توسط متلب حل میشه.
لایسنس اکیه.
می دونید مشکل چیه؟
ممنون
سلام
مسیر شما اشتباه هست. سعی کنین دایرکتوری دو نرم افزار رو یکی کنین تا مسیر یکی بشه.
سلام.وقت بخیر
من دستور شرط را که داخل محدودیت ها قرار میدم ارور154 میده.ممنون میشم راهنمایی کنین
cons1(k)$(ord(i)=o(k)) .. sum((i,j),x1(i,j,k))-sum((i,j),x2(i,j,k))=e=v(k);
cons2(k)$(ord(i)o(k)) or ord(i)d(k)) .. sum((i,j),x1(i,j,k))-sum((i,j),x2(i,j,k))=e=0 ;
cons3(k)$(ord(i)=d(k)) .. sum((i,j),x1(i,j,k))-sum((i,j),x2(i,j,k))=e=-v(k);
x2(i,j,k),x1(i,j,k)پارامتر هستن
سلام
قوانین رو رعایت کنین. مواردی مثل: تو اولی باید شرط رو ببرین داخل sumها
علامت ضرب بین ord ها چی میشه، رابطه ای براشون تو دومی تعریف نشده…
سلام وقت بخیر سایتتون عالیه واقعا ممنون
یه سوال داشتم من برنامه ای را به صورت خطی در گمز نوشتم. در معادلات دو متغیر (t)x و (t)y دارم میخوام متغیر دیگری تعریف کنم ک به این فرم باشه
به این صورت ک مینویسم ارور میده و میگه با MIP حل نمیشه
میخواستم بدونم میشه برای متغیر، شرطی مثل رابطه بالا گذاشت؟
سلام
مرسی. لطفا قبل اینکه من جواب بدم، عکس شرط رو هم شرح بدین. یعنی وقتی x
با سلام
من در یک مدل وقتی مدل استیت رو می دم فیزیبیلیتی رو بمن 13 میده مفهومش چیه؟
سلام
میگه مدل جوابی نداره.
این لینک رو ببینین.
سلام. من گمز و متلب رو لینک کردم تا یک مسئله ای رو حل کنم. این مسئله در گمز به خوبی حل میشه، اما وقتی گمز و متلب رو لینک میکنم با خطای زیر روبرو میشم.
abnormal GAMS termination running C:\GAMS\win64\24.1\gams.exe test1 lo=0: check listing file
البته اگر تعداد متغیرهای مسئله رو کم کنم جواب میده. اما مسئله ی اصلی در یک سیستم جواب میده و در سیستم دیگر خطای ذکر شده در بالا رو داره.
لطفن راهنمایی بفرمایید.
سلام
نسخه متلب و گمز باید به هم بخورن. و اینکه لایسنس گمز هم نیاز دارین شما برای سایزهای بالاتر.
سلام
شما معادله ای رو در بخش equation تعریف کردین ولی براش فرمولی از نوع .. نذاشتین.
با سلام
از برنامه ران گرفتم ولی بعد از 52 دقیقه زد time limit is reached و سالوری که استفاده میکردم lindoglobal بود. از چه دستوری استفاده کنم که اررور زمان نده و جواب بهینه رو نشون بده و چجوری استفاده کنم؟؟
ممنون میشم.
سلام
option reslim=10000000;
کد بالا میگه که شرط توقف زمانی رو برابر عدد داده شده قرار بده. این کد رو باید قبل از دستور solve وارد کنین.
بعد از اجرای برنامه گمز خطای 36 و 141 می دهد، چگونه می توانم این خطاها را برطرف کنم؟
سلام
متن خطاها رو بذارید لطفا
سلام این متن کامل 2 ارور
*** Error 66 in C:\Users\saeed 09131835126\Downloads\Untitled_3.gms
The symbol shown has not been defined or assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
*** Error 256 in C:\Users\saeed 09131835126\Downloads\Untitled_3.gms
Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
— Untitled_3.gms(42) 3 Mb 2 Errors
سلام توی گمز model را بر چه اساسی تعریف میکنیم , ارور شماره 66 و256 واسه چیه ممنون
سلام
لطفا متن ارور رو بذارین. اولین ارور و دومین ارور
این متن کامل برنامه
Set
i ‘generators’ / p1*p3 /
genchar ‘generator characteristics’ / a, b, c, upplim, lowlim /
cg(genchar) ‘cost categories’ / a, b, c /;
Alias (i,j);
Table gendata(i,genchar) ‘generator cost characteristics and limits’
a b c upplim lowlim
p1 0.00142 7.2 510 600 150
p2 0.00194 7.85 310 400 100
p3 0.00482 7.97 78 200 50 ;
Parameter pexp(cg) ‘exponent for cost function’
feulcost(i) ‘feul cost’/p1 .9,p2 1,p3 1/
demand ‘max power used’;
Variable
p(i) ‘power generation level in MW’
loss ‘total transmission loss in MW’
cost ‘total generation cost – the objective function’;
Positive Variable p;
p.up(i) = gendata(i,”upplim”);
p.lo(i) = gendata(i,”lowlim”);
Equation
costfn ‘total cost calculation’
lossfn ‘total loss calculation’
demcons ‘total generation must equal demand and loss’;
costfn.. cost =e= sum((i,cg), gendata(i,cg)*power(p(i),pexp(cg)));
lossfn.. loss =e= sum(i, feulcost(i)*p(i))/100
+ sum((i,j), p(i)*p(j))/100;
demcons.. sum(i, p(i)) =g= demand + loss;
Model edc / all /;
solve edc minimizing cost using nlp;
سلام
شما پارامتر یا اندیسی تو برنامه تعریف کردین ولی بهش مقدار ندادین. بگردین ببینین کدوم یک از این هاست.
سلام. وقت بخیر، ممنون از پاسختان.
اندیس k که حدود آن از ۱ تا پارامتر Xij هست. که خود پارامتر Xij رو به صورت table تعریف کردم. حالا حدود اندیس k رو چطوری باید تعرف کرد؟ لطفا راهنمایی کنید.
Xijخود یک پارامتر هست که آن را به صورت table معرفی کردم. حالا اندیس k رو چطور باید تعریف کرد؟؟
سلام
لطفا به همون گفتگویی که داشتیم ریپلای کنین تشکر.
ببینید شما با دو مسئله روبه رو هستین. اول اینکه اندیس k چطور تعریف بشه، دوم اینکه i تو سامیشن به چه شکل تغییر بکنه.
برای مسئله اول، اینو میدونیم که k باید از 1 تا حداکثر بزرگترین مقدار موجود در جدول x تغییر کنه. فرض کنیم بزرگترین مقدار x برابر با 10 باشه. پس:
حالا میمونه تعریف محدودیت: (یه محدودیت فرضی گذاشتم براتون)
اَجرِ کُم عِند الله.
ممنون از لطفتون.
دوستان هیچ گروهی در شبکه های مجازی مثل تلگرام ندارید؟
اینجا نمی شه فایل و … فرستاد!!!
خیر.
میتونین فایل رو تو سایت های دیگه آپلود کنین و لینکشو اینجا بذارین.
با سلام و عرض ادب،
دوستان یه اندیس دارم که حدود آن از 1 تا یه پارامتر هست. که خود این پارامتر رو به صورت table تعریف کردم. حالا حدود این اندیس که بعدا در یک معادله که به صورت حاصل جمع هست رو چطوری تعرف کنم؟ لطفا راهنمایی کنید.
سلام
لطفا سوالتون رو واضح تر بپرسید در خدمت هستیم.
سلام وقت بخیر ممنون از سایت خوبتون
من یک عبارت [ (y=sqrt [ (sign(x1-x2) *(x1^2-x2^2 دارم، (خلاصه: توی تابع ام sign ، توان دو ، جذر دارم و من هر قسمت و جدا نوشتم)
نوشتن مشکل
1) (X=x1-x2 sign(X به من جای 1و-1 ، یک عدد مثبت و منفی میده ( 0.91)
2) (Sqr(X1)-Sqr(X2
3) (ضرب دو عبارت بالا) Sqrt ارور میده، اینکه عبارت درون پرانتز منفی میشه
نمیدونم مشکل کجاست، حتی من از عبارت دوم abs هم گرفتم و بعد جذر گرفتم ولی بازم ارور میده (اینکه عبارت زیر رادیکال منفی میشه) + (البته متغیرها اندیس t هم دارند، t=1:24)
ممنون
سلام
ممنونم.
برای راهنمایی به کامنت های پست زیر میتونین مراجعه کنین. این مهمه که تابع sign شما چه مقادیری به عنوان خروجی ارائه میده. تو اون کامنتا فقط دو مقدار رو میگیره. همون رو برای کار خوتون توسعه بدین. برای منفی بودن هم باید یا همه عبارت در abs قرار بگیره. به این هم دقت کنین که عبارت بالا وقتی که x1 و x2 بزرگتر از صفر باشن مثبت هست و وقتی کمتر از صفر باشه منفی میشه.
تابع sign در گمز
سلام
من یه مدل ران کردم که SOLVER STATUS 1 Normal Completion
MODEL STATUS 2 Locally Optimal هستش…ولی این خطا رو هم میده…
*** Error Cannot open parameter file “C:\Users\Utop\Documents\gamsdir\projdir\co
nopt3.op2”
*** Error Error code = 2; No such file or directory
میشه بفرمایید چیکارش کنم؟
سلام
برای خطا، شما رفتین nop3 و فراخوانی کردین؟
اینکه locally میده مشکل از اینه که تو بهینه محلی گیر کرده. از سالورای دیگه هم استفاده کنین و جواب اولیه هم ممکنه بهتون کمک کنه
سلام
من دو تا محدودیت فاصله دارم و بصورت زیر تعریف کردم
ولی اررور میده invalid argument for function
ممنون میشم بتونید کمکم کنید
سلام
شما باید abs رو بردارین. و خطیش کنین. سرچ کنین. تو کامنتای سایت هم به کرات جواب داده شده. البته یک سری از سالورای غیر خطی abs رو پشتیبانی میکنن. تست کنین ببینین کدوم سالورا به دردتون میخوره (اگه نمیخواین خطی کنین).
با سلام
موقع اجرا کد (با سرعت پایین) پیام میده که ther is no enough space. و میگه provide memory انجام بده تا سرعت اجرای برنامه افزایش پیدا کنه. کدی برای این منظور هست؟
سپاس
سلام
لطفا متن کامل پیغام رو بذارین. تشکر
سلام خطای 140 و 96 در گمز واسه چیه من هرکاری میکنم اصلا رفع نمیشه لطفا کمکم کنید؟
سلام
ارور 140 یعنی نمادی که استفاده کردین رو باید از قبل تعریف کرده باشین. و نمی شناسه چیزی که نوشتین رو.
ارور 96 هم ممکنه از سیمیکالونی باشه که یادتون رفته وارد کنین.
با سلام و عرض خسته نباشید
من تازه دارم این نرم افزار رو یاد میگیرم، یک مسئله زنجیره تامین رو بهش میدم اما کلی خطا میده. خیلی ازتون ممنون میشم اگر
لطف کنید و کد ها رو بررسی کنید و ایرادهاشو بهم بگید
سلام
اینجوری یاد نمیگیرین. اولین اروری که بهتون داده رو سعی کنین خطاش رو رفع کنین. دوباره ران کنین. و مجددا همین کار رو ادامه بدین تا آخر. اینجوریه که یاد میگیرین. ارور بخش اصلی هر برنامه نویسی هست. رفعش رو بایدتسلط داشته باشین. اگه موفق نشدین بپرسین کمک میکنیم.
با سلام و خسته نباشید.
من کدهای مربوط به یک مدل cge رو در گمز نوشتم و وقتی مدل رو run میکنم فقط داده های ورودی و معادلات رو نمایش میده ولی مدل رو solve نمی کنه (SoLEQ و SoLVAR بهم نمیده):
ممنون می شم راهنماییم کنید که چرا مدل solve نمی شه؟ و اینکه چرا آدرس خطوطی که مشخصا در اون خطوط execution error وجود داشته رو چرا نمیده؟
سلام
دلایل زیادی میتونه داشته باشه، یکیش اینکه شما از دستور abort تو مدلتون استفاده کرده باشین. اگه این دستور تو کد شما نیست، کد رو بفرستین به ایمیل سایت براتون بررسی بشه.
ایمیل بررسی شد.
مشکل از تقسیم بر صفر بود. شما باید خط 878 رو به صورت زیر باز نویسی کنین:
با سلام متشکرم از راهنماییتون.
من کل کامنت ها رو نگاه کردم. در مورد خطی کردن صحبت شده بود اما راهنمایی در موردش نشده. میشه راهنماییم کنید و یا یک لینک آموزشی مرتبط با کار من بهت معرفی کنید.
ممنون میشم
سلام
مرسی.
اینجا توضیح بدین سوال رو در خدمت هستم.
با سلام و خسته نباشید:
مدل رو ران کردم هیچ اروری نداده فقط بعداز اجرا خروجی نمیده درواقع متغیرها رو نشون نمیده انگار مشکل حل نشدگی دارد؟
solve aborted
execution error
اینها مواردی هست که نشون میده، لطفا راهنمایی کنید با تشکر.
سلام
این abort شدن مربوط به چه خطی هست؟
دستور abort دارین تو کدتون؟
آیا تو بخش command window چیزی نوشتین؟ اگه آره پاکش کنین.
و اینکه شما اطلاعات بیشتری از چیزایی که مربوط به خطاش هست رو باید اینجا بذارین.
با سلام.
من یه تابع هدف خطی دارم با متغیرهای عدد صحیح و باینری
من تابع هدف رو به این صورت نوشتم:
z =e= sum(j,sum(i,b(i)*x(i))*y(j));
بعد از این که مدل رو برای ران می زنم ارور 56 می دهد مبنی بر اینکه اجازه ندارم از علامت * در مدل های خطی استفاده کنم. از طرفی هم وقتی به ضرب درونی (.) تبدیلشون می کنم خطای 8 مبنی بر اینکه پرانتز رو نبستم می دهد در صورتی که تمام پرانتزها درست می باشد.
میشه لطفا راهنماییم کنید.
سلام
در گمز ضرب درونی نداریم و باید با استار ضرب رو مشخص کنین.
مدل با این شرایط غیر خطی هست. باید حاصلضرب دو متغیر باینری x*y رو خطی کنین تا از سالورهای خطی بتونین استفاده کنین. در غیر اینصورت باید از سالورهای غیر خطی استفاده کنین. خطی کردنش چیز سختی نیست. احتمالا تو همین سایت اگه جستجو بزنین مشکلتون حل میشه.
ممنون خیلی جوابتون کمک کرد، لطف کردید.
یه سوال دیگه از خدمتتون دارم، چطور میشه در نرم افزار گمز آلفابرش هایی برای روش خمینز تعریف کرد که بعد بشه با روش قطعی مقایسشون کرد؟
آیا گمز چنین امکانی داره؟
بازم ممنون که وقت میذارید
سلام
برای آلفا برش معمولا loop می نویسن. بله امکانش هست. مقداری خلاقیت و زمان میخواد.
با سلام
یه سوال دارم از خدمتتون.
استادم یه برنامه مکان یابی بهینه آماده برام نوشته که 7 تا مرکز تقاضا داره و 3 تا مرکز پاسخ و قرار شده من داده هام رو جایگزین کنم و خروجی بگیرم. بعد از جمع آوری داده ها تعداد مرکز پاسخ هم 7 تا مشخص شده. اما وقتی جدول ها رو به 7در7 تغییر دادم خروجی بهم نمیده. چنین بار امتحان کردم در آخر اومدم یکی یکی ستون به جدول هام اضافه کردم که تا 6 شتون خروجی گرفتم ولی مرکز پاسخ 7می رو که اضافه میکنم خروجی خیلی کمی نشون میده و اصلا display بینشون نیست. ارور نمیده ولی تو پنجره دوم یه چیزایی نوشته بعدش نوشته exit code = 7.
ممنون میشم راهنمایی بفرمایید
سلام
فکر میکنم از کانال دیگه ای پاسختون دادیم.
با سلام
خطای 149 رو چطور میشه برطرف کرد؟ مثلا وقتی 3 تا i,j,m اندیس داریم وسامیشن روی i بسته شده برای اینکه محدوده دو تا اندیس دیگه رو مشخص کنیم چطور باید عمل کنیم و کجا تعریف کنیم؟
خطای 171 و 300 و 257 هم نمیدونم که چه خطایی هست؟
سپاسگذارم
سلام
لطفا متن خطاها رو بنویسین. حفظ نیستم شماره هاشون رو.
سلام ببخشید من یه سوال داشتم. همچین محدودیتی دارم و خطای 154 میده. نمیدونم چطور باید رفعش کنم؟
سلام
شما گفتین که td از tt بزرگتر باشه، tt کجای کاره؟ بدون اینکه تو صور عمومی بیاد، نمیشه روش شرط نوشت که
بببنید در اصل من یه مسئله چند دوره ای دارم که توی هر دوره باید از اون دوره تا کل افق زمانی مسئله رو حل کنه. مثلا وقتی دوره دوم هستیم باید از دوره دو به بعد و حل کنه، دوره سوم باید از سه بعد و حل کنه و…
من واسه مسئله یک لووپ تعریف کردم و یک مجموعه پویا،
توی محدودیت ها به جای t مجموعه u(t,td) و تعریف کردم.
دوره های زمانی هستند
توی حلقه شرطی که گذاشتم اینه که در هردوره مجموعه u از همان دوره تا اخر دوره و در نظر بگیره ولی بازم جوابش اشتباست.
سلام
این ord ضربدر رو من متوجه نشدم و اصلا مفهومی نداره به نظرم.
روش زیاده برا اینکار. با همین کد خودتون شروع کنیم.
این کد رو استفاده کنین. یا مودیفای کنین برای کار خودتون.
با سلام و عرض ادب.
در برنامه زیر دو مشکل دارم،لطفا راهنمایی کنید.
1- تابع هدف اپسیلونی است که رابطه ای برای آن وجود ندارد ولی در محدودیت ها وجود دارد و باید مینیمم بشه که اسمش توی مدل z هست. وقتی اجرا می کنم برنامه رو ارور میده.
2- در قسمت معادلات، ماتریس C(j,k) رو میخام فراخوانی کنم طوری که درایه دوم همیشه ستون دوم یعنی M باشه. یعنی C(j,”M”).چطور این کار رو انجام بدم که ارور تولید نکنه.
سلام
سوال اول: نیازی به تعریف تابع هدف نیست. معادله ی objevtivefunction رو حذف کنین. تنها کافیه تو دستور سالو بگین که z رو بهینه کن.
سوال دوم: درست نوشتین که.
با سلام و عرض ادب
ببخشید برای رابطه زیر بر روی s(r) ارور 149 میده. ممنون میشوم راهنمایی فرمایید
سلام
لطفا اول بفرمایین که تو صور عمومی محدودیت شرهایی که گذاشته شدن چیا هست؟ و همچنین برای اندیس r توی سیگما، آیا شرطی نوشته شده؟ مثلا بگه که r کمتر از r؟
سلام وقتتون بخیر
خطای unbounded چی هست و چه طور میشه رفع کرد؟
سلام و ادب
این ارور زمانی هست که هدف ما تا بی نهایت ممکنه پیش بره. مثلا متغیر x که در مخرج هست، ممکنه خیلی نزدیک به صفر بشه، و چون هدف ما ماکسیمم کردن هست، پس کل هدف ممکنه به بینهایت میل کنه. یا مثلا z=x+epsilon، اگر مقدار اپسیلون بتونه در جهت تابع هدف تا بینهایت حرکت کنه، پس گمز جواب بینهایت یا بیکران به ما خواهد داد.
سلام
خطاهای 58 و 256 نشان دهنده چه مشکلی هستند؟
ممنونم
سلام
متن خطاها رو بذارین. کسی حفظ نیست.
ممنون از پاسخ تون. می خواستم بدونم یک متغیر تجمعی رو چطور توی گمز تعریف کنم؟
متغیر تجمعی منظورتون چیه
سلام
برای حل مدل با دو تابع هدف در گمز لطفا میشه راهنماییم کنید. چطور تعریف کنم تابع هدف ها رو؟ آیا فایلی هست که معرفی بفرمایید مطالعه کنم؟
سلام
چند روش هست درموردشون تحقیق کنین. مثل:
روش وزنی
روش ال پی متریک
روش لکسیکوگراف
روش برنامه ریزی آرمانی
روش فازی کردن هدف
روش محدودیت اپسیلون
با سلام.
من یه کد به صورت زیر دارم. ارور 125 و 149 میده. میشه لطفا بگید مشکلش چیه؟ همه ی پارامتر ها رو هم تعریف کردم.
سلام
این خطاها رو که گذاشتیم تو سایت آموزشش رو
اگه پیدا نکردین، متن خطاها رو بذارین که جوابتونو بگیرین. اعداد رو حفظ نیست کسی
سلام وقتتون بخیر خسته نباشین.ببخشین من یه مدل گمز نوشتم mipهست. ارور نمیده ولی جواب هم نمیده میشه براتون ایمیل بزنم بهش نگاه بندازین؟واقعا هرکاری میکنم درست نمیشه در صورتی که مدل سختی نیست
سلام
یعنی چی جواب نمیده. نشدنی میشه؟
با سلام
توی گمز از سالور dicopt استفاده میکنم. جوابی که بر میگردونه اینه که : dicopt: stopped on maxcycles, no integer solution
بنظرتون مساله نشدنیه؟ چه راه حلی پیشنهاد میدین؟
از کجا میتونم بفهم که کدوم معادله نشدنیش کرده یا کدوم متغیر در بازه مجازش قرار نگرفته که اصلاحش کنم؟
ممنون میشم پاسخ سوالاتم به ویژه سوال اخری بدین
با تشکر
سلام
کد زیر رو بین دستور solve و model قرار بدین. اینجوری سایکل ها تعدادشون صد هزار میشه . (دیفالت برابر 20 هست. اگه کم بود باز میشه بیشترش کرد) اگه موفق نشد. از سالورهای دیگه نظیر بارون و لیندو هم استفاده کنین و نتیجه رو مقایسه کنین.
باسلام
برای حل و نمایش از عبارات ذیل برای مساله چهار هدفه استفاده کردم ولی مساله حل نشد
solve cp using minlp maximizing z,minimizing v,maximizing w,minimizing q ;
display z.l,v.l,w.l,q.l,x.l,y.l,u.l,;
لطفا نحوه صحیح کد نویسی برای عبارات فوق را تشریح فرمایید.
با تشکر
ارژنگ
سلام
گمز چند هدفه نمیتونه حل کنه به این شکل.
از روش eps-constraint استفاده کنین. مقداری دردسر داره و یادگیریش کاری نداره.
سلام وقت بخیر من این مشکل را دارم ارور 148 میده
چجوری حلش کنم
سلام
شما یه پارامتر یا متغیر با یه تعداد و ترتیب از اندیس ها تعریف کردین ولی موقع استفاده این ترتیب رو به هم زدین.
سلام
منم این ارور 148 رو دارم ولی توضیحی که دادید رو متوجه نشدم. میشه بیشتر توضیح بدید چطور خطای 148 رو رفعش کنم؟
سلام.
شما وقتی x(i) رو تعریف میکنین، تو معادلات نباید x(i,j به کار ببرین. یا وقتی x(i) تعریف میکنین، درصورتی که k و i آلیاس هم نباشن، نمیتونین عبارتی مثل x(k رو تو معادلات استفاده کنین.
سلام
من میخوام بین نرم افزار متلب و گمز ارتباط برقرار کنم ولی متاسفانه این ارور با ران کردن برنامه اصلی ظاهر میشه
Error using gams
abnormal gams termination, check listing file
با تشکر
سلام
نسخه گمزتون رو بروز کنین معمولا مشکل حل میشه (بهتره از سیستم 64 بیت استفاده کنین).
با سلام .یکی از ارور ها با تغییری که گفتین حل شد این دو تا ارور رو چه جوری حل کنم.ممنون از پاسخ تون.
معادلاتی که ارور گرفتن
تشکر لطف میکنین.
سلام
شما نمیتونین Dn رو به t اضافه کنین به عنوان یه اندیس. باید یه اندیس تعریف کنین. مثلا tp که آلیاس با t باشه و یا t زیر مجموعه ای از tp باشه. بعد اون u آخر رو به شکل u(j,tp) بازنویسی کنین. و تو محدودیت شرط بذارین که به شرطی که tp برابر با dn+t باشه
سلام.ممنون از سایت خوبتون
من یه کدی رو در نرم افزار گمز run می کنم . اما display در خروجی( lst ) که می گیرم وجود نداره.
ممنون میشم اگر راهنمایی کنید.
سلام
لایسنس دارین؟ تو پنجره ی process windoew چی نوشته؟ 5 6 خط اخر رو بفرستین.
سلام
خسته نباشید
چرا من هر چه پیام میفرستم پاک میکنین و هیچ پاسخی نمیدین.
خواهش میکنم جواب بدین.
ممنون
سلام
هیچ پیامی پاک نمیشه دوست عزیز. به همه سوالات پاسخ داده میشه.
سلام جناب محمودي
من مدلي را در خود گمز اجرا ميكنم و به صورت درست حل ميشه. پارامترهاي اين مدل را از اكسل ميخونم و براي همين پارامترها، مدل حل ميشه. ولي وقتي كمي تغيير در مقدار پارامترها ايجاد ميكنم (در اكسل) گمز خطاي كد 3 ميده. قاعدتا نبايستي در مدل و پارامترها مشكلي باشه. من پارامترها را از نظر تعداد ديتا كمي زياد يا كم ميكنم و تغيير ديگه اي نداره. جالبه كه فقط هر فايل اكسل ظاهرا برا مدلي كه اولين بار حل ميشه قابل اجراست و با تغيير حتي يك پارامتر، باز هم خطاي 3 ميده.
ميشه بگيد چطور ميتونم اين مشكل را حل كنم.
فرض كنيد يه مدل دارم كه ميخوام به صورت ثابت فقط با تغيير در مقدار پارامترها اون را هر دوره اجرا كنم كه در خود گمز حل ميشه ولي با خواندن از اكسل فقط براي حالت اوليه و نه براي تغييرها حل ميشه و خطا ميده!!!!
ممنونم
سلام
یعنی شما یه عدد رو از 3 به 5 تغییر میدین ارور میده یا اینکه یه سایز اندیس رو از 3 به 5 تغییر میدین و مجددا عدد گذاری رو کامل میکنین؟
سلام خسته نباشید .من با این ارور ها مواجه شدم لطفا راهنمایی کنید.
معادلاتی که ارور گرفته اینها هستند.
تشکر.
سلام
تو یه مدل Mip اگه abs بیاد مدل رو غیر خطی میکنه. پس مدل minlp میشه. نه mip
سلام… من یه همچنین دستوری رو دارم که Error 149 میده، ظاهرا همه چیزش درسته، ممنون میشم راهنماییم کنید:
Parameter Toy(J,K);
Toy(J,K)=uniform(A(P,K),B(P,K)+3);
سلام
شما یه طرف از اندیس j,k استفاده کردین، طرف دیگه اندیساش فرق میکنه. نمیشه اینجوری. اگه واقعا باز اصرار دارین این شکلی بنویسین (که مشکوکه) یه loop بنویسین که به ازای k,p اجرا بشه. توی لوپ toy محاسبه بشه
سلام و وقت بخیر
جناب محمودی برای تعریف سناریو عبارت تکراری دوم رو چطوری تعریف کنیم که که ارور نده
مثلا
یعنی یه مساله سناریویی داریم مثلا عبارت (این فرم فشرده همون بالایی هست )
a
میخوایم واریانسشو حساب کنیم یعنی از میانگین تصادفیش کنیم
یعنی
حالا برای اینکه این عبارت دوم یعنی
رو گمز بشناسه چیکار کنم؟
چی تعریفشون کنم؟
سلام
خیلی متوجه نشدم چی به چی شد. ولی دقیقا به همین شکلی که a گذاشتین باید عمل کنین. یعنی اینکه شما اون عبارت درازه رو اسمش رو میذارین a (که قبلا به عنوان متغیر باید تعریف شده باشه) و به عنوان یه محدودیت به مدل اضافه می کنین. بعد تو اون دو عبارت بالایی به جای اون درازه a رو میذارین. فقط حواستون باشه که اون عبارته به ازای هر اندیسی برقرار باشه، a هم باید اون اندیسو داشته باشه. که ظاهرا اینجا s هست.
اگه این کارایی که کردین به همزمان با حدل مدل هست که به همین شکل که گفتم عمل کنین. اگه بعد از حل مدله که رویه مشابه همینه
سلام
من میخوام بین نرم افزار متلب و گمز ارتباط برقرار کنم و همه مراحلی که در آموزش فرادرس گفته رو انجام میدم ولی وقتی کد testinst رو اجرا میکنم همچین خطایی میده
Error using gams
abnormal gams termination, check listing file.
Error in testinst (line 9)
[Q] = gams(‘testinst’,e,m),
مرسی بابت وقتی که میزارید و پاسخ میدید
با عرض سلام وخسته نباشید
من میخوام نرم افزار گمز و متلب رو به هم مرتبط کنم، تمام کارهایی که گفته شده رو هم انجام دادم،(کپی matout.gams در فولدر گمز،gams.dll در فولدر متلب و اضافه کردن آردس c:\GAMS در آدرس environmental variable)
اما وقتی کد مربوط به testinst رو اجرا میکنم همچین خطایی میده:
error: cannot find gams – please set path appropriately
Error using gams
failed to spawn process.
بعدش اومدم خود نرم افزار گمزم رو چک کنم میبینم هر کدی که باهاش run میگیرم همچین خطایی میده:
solver BONMIN cannot solve MIPs
status: Terminated due to parameter errors
exit code=6
خیلی ممنون میشم اگه راهنماییم کنید
سلام
مشکل اول: مشکل از اضافه کردن فولدر هست. شما طبق مسیر عکس زیر فولدر رو اضافه کنین:
اینجا
بعد برا تست گرفتن، عبارت help gams رو بزنین، اگه ارور نداد کار تمام هست. و کار دیگه ای نیاز ندارین انجام بدین.
مشکل دوم: به جای بونمین، بزنین cplex
سلام خسته نباشید ممنون بابت سایت خوبتون
من کدی نوشتم که مشکلم ارور 149 هستش میتونید کمکم کنید؟
روی معادله دوم ارور میگیره
سلام
سور عمومی محدودیت رو ننوشتین شما. opc(t)
ممنونم از پاسخگوییتون
ارور 66 و 256 رو چچوری برطرف کنیم؟
66 The symbol shown has not been defined or assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
سلام
شما یهکی از پارامترهایی که تعریف کردین رو بهش مقدار ندادین. و گمز میگه بهش مقدار بدین
سلام آقای محمودی خطا ها اینها هستند.
326 model E_M_I_P /all/ ;
327
328 solve E_M_I_P Using MIP Minimizing O ;
**** $62,51,256
**** The following MIP errors were detected in model E_M_I_P:
**** 62 equation Constraint5.. VAR lag operation
**** 62 equation Constraint6.. VAR lag operation
**** 51
equation Constraint_utility_grid.. the function ABS is called with non-constant
arguments
برادر من با گوشی وارد شدم مقداری کامنت ها قاطی شده. لطفا فقط به اون گفتگویی که داشتیم فقط ریپلای بزنین. اینجوری من تاریحچه رو میبینم. مرسی
سلام جناب مهندس
من متلب و گمز لینک کردم
حالا وقتی که یک مسئله ساده باهاش حل میکنم همه چی درسته
ولی وقتی یک مسئله کمی بزرگتر حل میکنم تو متلب ارور لایسنس بهم میده
درحالی که همین مسئله در حالت عادی داخل گمز (بدون لینک با متلب) حل میکنم مشکلی نداره و کاملا جواب میده
چه طوری این مشکل حل کنم؟؟
متن خطلا در متلب :
سلام
شما باید دقت کنید که نسخه ی هر دو نرم افزار باید از یک نوع باشند. به عبارتی وقتی ویندوز شما 32 بیت هست، از گمز و متلب 32 بیتی باید استفاده کنید. همچنین لایسنس جدید هم استفاده کنین، اینجا لایسنس مناسب برای این کار آپلود شده که شما می تونید که ازش برای نسخه ی گمزتون استفاده کنین. دایرکتوری ها هم یادتون نره. اگه باز موفق نشدین، فایل ها رو به ایمیل سایت ارسال بفرمایید.
با سلام و با تشکر از زمانی که برای پاسخگویی به سوالات صرف می کنید.
سوال من هم مثل دوستمون در مورد ارتباط بین گمز و متلب هست.
فقط میخوام بدونم آیا این ارتباط در نسخه های 64 بیتی هم امکانپذیره؟
در صورت امکان آیا نسخه خاصی از متلب و گمز باید نصب بشه؟؟
سلام
خواهش میکنم.
بله امکان پذیر هست. فقط باید نسخه ی ویندوز، متلب و گمز هر سه 64 بیتی باشن و یا هر سه 32.
نسخه ی 2014a متلب و نسخه های 24 به بالای گمز این امکان رو دارن برای 64 بیت. قبلیا تعدادیشون مشکل داشت.
پیروز باشید
سلام خسته نباشید مهندس من رو دستور SOLVE با چند تا ارور مواجه شدم براتون فرستادم ممنون میشم راهنمایی کنین.
سلام
متن ارور رو ارسال بفرمایید و بگید که مدل شما از چه نوع تعریف شده. تشکر
با سلام و احترام
برنامه ای با دو حلقه تو در تو نوشتم .
قبلا با خطای اورفلو مواجه بودم در حال حاضر پس از چند تکرار حل برنامه متوقف شده و هیچ خطایی هم نمی دهد و مجبور می شم حل رو موقف کنم. این هم برنامه نوشته شده:
.
Filtered By admin
.
.
ممنون از لطف شما
سلام
برنامه رو ایمیل کنید. و اینکه یعنی چی هم متوقف میشه و هم خودتون متوقف میکنین؟
سلام
جناب محمودی
من یه مشکل اساسی دارم
توی محدویتها کلا هر 2 تا متغیری رو با هم جمع میکنم ! یکیش 0 میشه!!!!
مثلا:
سمت چپی ها دو تا متغیرن
سمت راست یه متغیر باینری ys
, cas هم پارامتر ظرفیت
مقدار ضرایب تابع هدف رو هم یکسان میگیرم باز یک متغیر رو 0 میکنه!
سوال دوم:
توی همون مثال بالا اگه بخوام مثلا فقط یکی از اندیسهام عدد بگیره
مثلا:
فقط r=1 بخوام عدد بگیره
و بقیه حالتهای r رو 0 کنه
نوشتم
ولی جواب infeasible داد!
شرط مساوی با صفر رو بر میدارم ران میشه!
مشکل از کجاست ؟!
ممنون
سلام
سوال اول: این دیگه بسته به ساختار مدله، اگه انتظار دارین که صفر نشه پس داده ها یا مدل ممکنه مشکل داشته باشه. مشکل از گمز نیست
سوال دوم: اینم باز به همون دلیل قبلیه.
سلام آقای محمودی
خیلی ممنون بابت راهنمایی هاتون. یه سوالی داشتم اونم اینکه فرق RMIP با MIP در چی هست و آیا سالور RMIP دوگان متغییرها رو درست میده یا نه؟ چون به من گفته بودن که سالور RMIP دوگان رو درست نمیده
سلام
مسئله RMIP میاد متغیرهای گسسته رو آزادسازی میکنه. پس جوابایی که برا اون متغیرها بدست میاد ممکنه گسسته نباشه و اعشاری توش باشه.
برای دوگان هم الزاما نمیشه از متغیرهای دوگان ارائه شده توسط RMIP برای MIP استفاده کرد. به همین دلیل آزاد سازی که عرض کردم.
با سلام جناب محمودی برنامه ای رو در محیط گمز نوشتم خروجی optimal solution رو میده ولی در بخش equations خطای infeasible مشاهده می گردد.
ممنون از راهنمایی جناب عالی
سلام
خواهش میکنم.
شما اون رو چک نکنین شما.
شما باید این دو تا رو چک کنین: یکی solver status یکی هم model status . اینا اوکی باشن مشکلی نیست.
با سلام
آقای محمودی من حلقه لوپ را اینجور تعریف کردم ولی ارور 125 میده (Set is under control already
چند سری این سوال رو پرسیدین مهندس. بالاتر جوابتونو دادیم.
با سلام
آقای محمودی کد smin را نوشتم . جواب هم میده . منتها تمامی اعضای Zstar(o) را همان Z آخر میگیره و مینیمم رو همون آخری میده . اگه ممکنه راهنمایی کنین.
اینم از کل کد :
سلام
نکته اول: اولا شما فقط یه دونه o تعریف کردین، پس لوپ یه بار انجام میشه،
نکته دوم، پسر خوب من بالا بهتون جواب دادم که این for رو حذف کنین، و جوابش رو براتون گذاشتم. از همون استفاده کنین.
نکته آخر، به ازای هر لوپ، چه پارامتری تغییر میکنه که شما هر سری یه جواب ازش انتظار دارین؟
با سلام و خسته نباشید
من یک مدل نوشته ام برای پایان نامه ام که minlpهست وران میشه اما متغیرهای مهمی که نباید همه صفر شوند همه صفر می شوند و برخی متغیرهای باینری ام نیز مقداری بین صفر ویک میگیرند یا حتی مقداری بزرگتر از یک می گیرند. مدل بعد از ران شدن هشدار می دهد به صورت زیر:
و وضعیت مدل هم به صورت روبرو است: **** SOLVER STATUS 3 Resource Interrupt
**** MODEL STATUS 9 Intermediate Non-Integ
… ممنون میشم که کمکم کنین که بفهمم مشکل چیست ومنظور از این هشدار ها چیست؟
سلام
اولین کار اینه که سالورای دیگه رو هم امتحان کنین. ظاهرا با این مشخصات مدل سالور نتونسته جواب شدنی پیدا کنه. از لیندو یا بارون هم کمک بگیرین. اگه باز نشد، دلیل نشدنش رو اعلام کنین لطفا. چقدر طول میکشه و بعدش میگه نمیشه حتما بذارین. فقعلا reslim رو بذارین یه عدد بزرگ مثل 10 هزار. اگه کلا نشد، ممکنه مشکل از مدل سازی، کد نویسی و یا داده ها باشه
سلام آقای محمودی
من میخوام کدی که داخل گمز نوشتم ، خروجی گمز را به متلب لینک کنم که خروجی را داخل متلب نمایش بده .(64 بیتی)
واسه یکی از پارامترهام نیز باید انتگرال گیری کنم که متاسفانه با گمز فکر نکنم بشه. نظر شما چیه؟
سلام
گمز انتگرال نمیگیره. یا بفرستین تو متلب انتگرالو بگیره و بفرسته جواب رو برا گمز، یا اینکه انتگرال گیری رو دستی انجام بدین و معادل جبریش رو بذارین تو معادلات و استفاده کنین.
سلام
واسه لینک کردن گمز به متلب و برعکس چطور باید عمل کرد؟
سلام
مقداری طولانیه توضیحاتش. پستش رو گذاشتیم بهتون خبر داد میشه.
سلام وقتتون بخیر
ممنون از سایت خوبتون
ببخشید میخاستم بدونم موقع ران کردن نمر افزار exit code=3 یعنی چی؟
یه فرمول که میزارم این رو نشون میده
سلام
معمولا این از فرمول محاسباتی نیست. چه فرمولی؟
سلام مجدد
این فرمول رو اضافه میکنم:
حدس خودم اینه که یه جایی فشار محاسبه شده تو مخرج صفر میشه.
وقتی این فرمول و قید هاشو بر میدارم برنامه به راحتی ران میشه
و این خطا :
سلام
ظاهرا pi رو متغیر تعریف کردین. تو گمز اگه متغیر بره تو مخرج، باید یه مقدار خیلی کوچیک به اون مخرج اضافه کنیم که این حالت تقسیم بر صفر به وجود نیاد. مثلا عدد 1 ده هزارم رو به pi-town اضافه کنین تو مخرج.
بعد این هم ممکنه باز ارور داشته باشین تو تابع rpower که ارور منفی به توان بده. برا اون هم میتونین کل عبارت کسری رو به اضافه یه عدد کوچیک بکنین، یا اینکه کسر رو بذارین تو قدر مطلق.
با سلام
من برنامه ای که نوشتم هیچ اروری در اجراش وجود نداره ولی جوابی که به من میده غیر منطقیه
برنامه من از نوع MINLP که از سولور BARON استفاده کردم
می خواستم بدونم شما چی حدس می زنین. آیا برنامه من مشکل داره؟
سلام
داده ها، مدل و ساختارش و کد ر وباید بررسی کنین. ریز به ریز. ببینین مشکل خروجی چیه، طبق اون بیاین اصلاح کنین. از مدلهای پایه کمک بگیرین که کارتون درست تر باشه
ببخشید پاسخ قبلی رو نخونده بودم.
ارور 318 Domain list redefined no previous domain list
ارور 184 Domain list redefined
ارور194 symbol redefined a second data statement or for the same symbol or a data statement after an assignment
ارور 148 dimension different the symbol is referenced with more /less indices
ارور 195 symbol redefined with a different type
لطفا به همون گفتگو ریپلای کنین.
من نمیدونم چرا دوستان این چیزا رو رعایت نمیکنن. الان یکی بیاد کامنتا رو بررسی کنه، فقط گسست میبینه و نتیجه رو ممکنه متوجه نشه. به هر حال تشکر بابت سوال شما.
اولین ارور رو همیشه رفع کنین، تا به بعدی ها برسین.
لطفا اولین ارور رو مشخص کنین. مچکر و خط مربوطش رو هم بفرستین.
سلام و خسته نباشید خدمت شما
ببخشید دو تا سوال داشتم، سوال اول، من درمدلم پارامترهای زیادی مثل زیر تعریف کردم ولی نمیدونم این یکی رو چرا ازش ارورهای 318،184،194،148 رو گرفته نحوه ی تعریف پارامترم به شکل زیره :
محض اطلاعتون جدول وابسته به سه اندیس هست، i:اندیس محصولات، j اندیس تامین کنندگان و t اندیس زمان هستش.
سوال دوم، این که یکی از متغیرهای من (R(i,j,t هستش که ریسک باقی مانده هست و به این متغیر در بخش تعریف متغیرها ارورهای 195،318،184 داده.
ممنون میشم پاسخ بدین خیلی واجبه.
سوال اول، متن و شماره اولین ارور رو ارسال کنین.
سوال دوم، ایضاً.
سلام و خسته نباشی خدمت شما
ببخشید من یک سوال دیگه هم داشتم.
بایستی داخل مدل بهینه سازی از یک تابع max (Thatj , Tij) نیز استفاده کنم ولی گمز ارور میده که نمیشه از این تابع استفاده کرد و ساپورت نمیشه.
تغییر متغیر دادم به P و دوتا محدودیت اضافه کردم که این متغیر P بزرگتر مساوی هر دو متغیر داخل max باشه. ولی داخل جواب مقادیر That(j) ها به ازای دو j و T(i,j) ها به ازای دو j و چهار i را با هم برابر بدست میاره که نباید اینجور باشه (یعنی میگه) :
آقای محمودی این را باید اضافه کنم که ایت تابع max داخل تابع هدف هستش که تابع هدف خودش min سازی هست
باتشکر
سلام
تابع max برای تعدادی از سالورها باز هست، و میشه ازش استفاده کرد، براش سرچ کنین حضور ذهن ندارم من کدوم سالور میتونه حلش کنه. اینکه گفتین برابر میشه، دلیلی وجود نداره که نشه، مگه اینکه به وضوع به گمز فهمونده باشین که چنین اتفاقی نیفته. خودش که نمیفهمه
سلام
داخل کد من دو ارور وجود داره . اولی 125 که مربوط به قیود دارای عبارت sum هست
و دومی 141 که مربوط به عبارات Display میشه.
اگه ممکنه راهنمایی کنین
باتشکر
سلام
مطمئن باشین هیچ کس شماره خطاها رو حفظ نیست. پس باید متنش رو بفرستین. حالا این سری من پاسخ میدم، سری بعد لطفا متن خطا رو بنویسین. تشکر.
خطای اول میگه که قبلا برای این اندیس تعیین تکلیف کردین، دوباره نیارین روش sum ببندین.
ارور ۱۴۱ هم زمانی رخ میده که شما یه متغیر رو تعریف کردین، ولی تو معادلات استفاده ای ازش نشده و رفتین display هم کردین. پس منطقیه که ارور بده. چون هنوز عددی نگرفته
سلام . خداراشکر با راهنمایی شما این خطاها برطرف شد .
مشکل دیگه که داشتم اینه که واسه محاسبه تابع هدف یک حلقه for باید تعریف میکردم که انجام دادم. این حلقه باعث میشه 21 مقدار متفاوت برای تابع هدف بدست بیاد.
الآن باید دستوری بنویسم که از بین این 21 مقدار مختلف برای تابع هدف، مقدار مینیمم اینها را بهم بده.
نیاز به راهنمایی و لطف شما داشتم
ممنون از سایت خیلی عالیتون
سلام
ترجیحا از دستور loop استفاده کنین. (فرض کنیم به لوپ تغییر دادین)
حالا طبق اون اندیسی که برای loop تعریف کردین، یه پارامتر قبل از دستور لوپ تعریف کنین. مثلا zfinal(s حالا هر بار که مدل حل میشه، مقدارش رو بریزین تو zfinal(s)=z.l
بعد sminبگیرین.
خواهش میکنم
سلام
حلقه loop را به شکل زیر تعریف کرد به همراه smin ولی واسه smin ارور میده.
فکر کنم دستور smin را درست ننوشتم.
مجموعه o را با یک عضو o1 فرض کردم.
loop (o,
Solve InventoryLocationProblem1 using MINLP Minimizing Z;
Zstar(o) = Z.l;
);
ZFinal(o) = smin(o,Zstar(o));
display zFinal,zstar;
سلام وقت بخیر
ممنون از وقتی که میزارید
من برای دومتغیر صفر و یک یک سری شرط میخوام بزارم همشون هم پارامتر هستن
اما بعد از ران با خطای 409 مواجه میشم و با این خطا اشنایی دارم ولی نمیتونم رفعش کنم
سلام
لطفا تو گذاشتن کد تو کامنت دقت کنین. چیزی مشخص نیست. متن خطا رو هم بفرستین
سلام یک برنامه بهینه سازی در گمز نوشتم که دو حلقه وایل تو در تو داره. بعد از ران برنامه با خطای زیر مواجه می شم. ممنون میشم راهنمایی کنید.
شایان ذکره که مقدار عددی بزرگی در خط مربوط به خطا دیده نمیشه(چون خطای اور فلوس میگم)، چه طور می تونم فایل برنامه رو براتون بفرستم؟
سپاس
سلام
سه تا ارور داده، که دوتای اول مربوط به خط 83 و 82 کد شما هستن. اگه مربوط به لوپ هستن اینجا بذاریدشون ببینیم.
خطای آخر هم که میگه شما خودتون برنامه رو متوقف کردین.
سلام جناب محمودي
دليل اينكه گمز با تغيير متغير در مدل برنامه ريزي حمل و نقل از حالت خطي به عدد صحيح (از positive variable به integer variable) مدل را integer infeasible نمايش ميده چي هست (با تمامي سالورها همين موضوع اتفاق مي افته)؟
اين مدل در پلت فرمهاي ديگه مثل Lingo و Cplex به سادگي و با هرنوع تعريف متغيري (خطي يا عدد صحيح) حل ميشه و جوابها هم كاملا يكسان هست.
ايا بايستي تنظيماتي را تغير داد تا گمز بتونه اين مدل را با متغير عدد صحيح حل كنه؟
با تشكر
سلام
اگه با بقیه جواب میده، پس احتمالا شما یه اشتباهی رو مرتکب شدین تو کد گمز. بفرض اینکه مدل و داده ها درست باشه. یه نکته دیگه هم هست، اینکه وقتی شما متغیرها رو ازاد بذارین، جواب متغیرهایی که بعدا قراره عدد صحیحشون کنین چند به دست میاد؟ بالای صد هست؟
سلام مجدد
مسئله من همون مسئله حمل و نقل داخل كتابخانه مدل گمز هست كه با خود نرم افزار وجود داره.
$Title A Transportation Problem (TRNSPORT,SEQ=1)
Sets
i ‘canning plants’ / seattle, san-diego /
j ‘markets’ / new-york, chicago, topeka / ;
در بخش مدل لايبراري نرم افزار. من فقط متغيير x را از پيوسته به عدد صحيح تغيير دادم.
در خصوص ازاد كردن متغييرها هم با حل مدل جواب برخي از متغييرها بيشتر از صد و برخي كمتر از صد هست.
خود شما هم ميتونيد تست كنيد و نتيجه را ببينيد. در حالت ازاد در علامت، جواب بدست امده كمي با جواب بهينه متفاوت هست.
ممنون
سلام
ببینید در گمز متغیرهای عدد صحیح به صورت دیفالت حداکثر تا عدد 100 میتونن افزایش پیدا کنن. و در صورتی که تو یه مسئله مقدار عدد صحیحی باید بیشتر از 100 باشه، ولی ما دیفالت رو تغییر نداده باشیم جواب مسئله نشدنی میشه.
راه چاره اینه که برای متغیر x حد بالا رو بیشتر کنین. به شکل زیر:
که اینجا این 1000 باید مقداری بیشتر از بیتشرین جواب متغیر x تو حالت ریلکس شده باشه.
سلام;
میشه لطفا ببینین مشکل این for کجاست که ارور 121 میاد؟
سلام
i که نباید بنویسین. باید بنویسین N بعد روش for نویسی رو رعایت کنین. ساختار حلقه ها رو اینجا ببینید.
میشه توضیح بدید این دستور چی کار انجام میده ؟
کدوم دستور؟
پس دوباره چک میکنم ببینم چه تابعی اشتباس
خیلی ممنونم از پاسخگوییتون
تشکر
خیلی خیلی ممنونم ازتون من اصلا alias رو نمیدونستم شما گفتید رفتم سرچ کردم الان زدم درست شد و دیگه ارورای 125 رو نداد واقعا ممنونم ازتون.
فقط یک سوال دیگه هم داشتم ارور 203 با متن too few arguments for function برای چی میاد؟
خواهش میکنم. این ارور همونطور که از متنش پیداست، نشون میده که شما یه تابع رو استفاده کردین ولی تمامی اجزاش رو اونطوری که استاندارد تابع هست نیاوردین. مثلا تابعی مثل min(x) تو مدل اگه استفاده بشه این ارور پیش میاد. (صحیحش اینه min(x,y
سلام
ببخشید مدل رو که run میکنم این ارور رو اولش میده و جواب ها هم درست نیست
علتش چیه؟
سلام
این ارور میگه که اون فایل اصلا تو دایرکتوری شما نیست. یا بد ادرس دهی کردین.
اینکه جواب درست نده دیگه ربطی به اروری که گفتی نداره.
با سلام و تشکر بابت سایت خوبتون
من در تابع هدفم یک sum دارم که در مقابل این sum دوباره یک sum دیگر تعریف می شود یعنی مثلا اگر در مقابل sum حاصل ضرب aو b و c باشد c خودش با یک sum تعریف شود. کد به صورت زیر است:
خطایی که می دهد نیز خطای 125 است که به صورت : set is under control already
4 عددخطای 125 می دهد.
میخواستم ببینم گمز کلا برای sum در مقابل sum خطا می دهد ( چون در کامنتها خوندم که شما نوشته بودید خطای 125 برای این میاد که دامنه sum با sub-sum نباید یکی باشد اما خب برای من در مدلم یکی هستش) یا اینکه من جایی را اشتباه نوشتم؟ و اینکه راهی برای رفع این مشکل هست یا خیر؟
با تشکر
خیر. گمزو برا همین کارا طراحی کردن چرا باید ارور بده. این میگه یه بار اندیس i رو تو sum اوردین، دوباره نیارین تو تابعای دیگه روش سیگما یا ضرب بزنین.
ممنون اما خب من مشکلم اینه که همونطور که توی کدش نوشتم sum اول دامنش i , j, m هستش و جلوی این sum دوباره یه پارامتری دارم که به ازای sum تعریف میشه و برای اون هم دامنش i,m باید باشه. در واقع مسئله من فرمول صف داره و اینطوری هست که در تابع هدف پارامتر Wq(j) رو دارم که این Wq(j) خودش یک فرمولی داره که بر حسب لاندا هستش و اما لاندا هم به ازای هر j برابر هستش با sum((i,m),h(i)*x(i,j,m) که h پارامتر هستش و x هم یکی از متغیرهای مسئله هستش و من در تابع هدف فرمول Wq(j) رو مستقیم میزارم و اینطوری میشه که sum ای که برای لاندا هستش جلوی sum تابع هدف قرار میگیره و دوتا از دامنه هاشون یکیه، کاری میتونم بکنم که اینطوری نشه؟ و این ارور رو نده؟
از آلیاس alias چرا استفاده نمیکنین؟ مثلا i, ip رو با هم الیاس کنین، بعد تو یه سام i و تو یکی دیگه هم ip رو استفاده کنین.
میشه توضیح بدید این دستور چی کار میکنه ؟
لطفا فقط به همون گفتگویی که داشتیم ریپلای کنین.
لطفا میشه اون مثالی که نحوه خروجی گمز در اکسل را نشان میدهد برای من هم بفرستید
سلام
ممنون از پاسخگویی سریع
نه ، زیر 100 است
مقدار option optcr=0 رو هم باید به مدل اضافه کنین – قبل از دستور solve- اگه بالا صد نشدن پس احتمالا optionی که گفتم رو ننوشتین.
سلام
من یه مدل زنجیره تامین 3 سطحی کدنویسی کردم
وقتی متغیرهامو integer تعریف میکنم ارور نمیده ولی جواب بهینه هم نمیده در قسمت model status این پیغامو میده integer solution این در حالی است که وقتی متغیر ها رو به positive تغییر میدم جواب بهینه میده
محدودیت ها رو هم خیلی پایین بالا کردم ولی جواب نداد
مدلم رو با داده های خیلی کم دارم ران میکنم که اگه جواب داد بعدش با داده های زیاد ران کنم ولی متاسفانه جواب بهینه نمیده
اگر راهنمایی کنید ممنون میشم
سلام
وقتی positive کردین، مقادیر بهینه متغیرهایی که قبلا integer تعریف کرده بودین بالای 100 شده؟
سلام وقت بخیر
من یکی از محدودیت هام این خطار رو داره لطفا راهنماییم می کنید باید چی کار کنم؟
infeasible, all entries at implied bounds
سلام
پیامی که توی process window یا log هست رو باید میفرستادید. میگه نشدنیه ظاهرا. پس باید مدلسازی، کد نویسی و داده ها رو چک کنین. دلیل نشدنی بودن عمدتا از این سه تا سرچشمه میگیره. یکی یکی محدودیت ها رو به مدل اضافه کنین، هر جا نشدنی شد تحلیل کنین که چرا این اتفاق افتاده.
ممنون جناب محمودی
خوب بی زحمت همون چند جلد کتابی که مفیده رو
به ترتیب اولویت معرفی کنید
باز هم تشکر
دو کتاب زیر خوبن:
GAMS Tutorial , Richard E. Rosenthal
mccarl gams user guide
تشکر حل شد
اقا یک رفرنسی یا کتابی میشه معرفی کنید که اموزش در حد مبتدی تا پیشرفته داشته باشه ؟
بشه گمزرو تا حدودی مسلط شد ؟
آقا لطفا فقط و فقط به همون کامنت قبلی ریپلای کنین. کاربرایی که میخونن متوجه نمیشن بحث به کجا کشیده.
هیشکی نمیتونه گمزو مسلط باشه. کتاب هم باید چند تا بخونین. خیر کتاب کاملی وجود نداره
سلام. مدلی با روش محدودیت اپسیلون نوشتم. حالا پیغام میده که جدول پی آف جواب بهینه نداره. چیکار کنم؟
سلام
اول مطمئن بشین که مدلتون جواب میده. یعنی نشدنی هست یا خیر. و با هدفهاتون جدا جدا یه سری حلش کنین و نتیجه رو ببینین. بعد برین سراغ اپسیلون
تک هدفه جواب میده. جواب های خوبی هم میده. میشه به عنوان سفارش پروژه عیب یابی اش قبول کنید؟
به ایمیل سایت ارسال کنین.
اقا یک سوال دیگه
چند تا پارامترو بخوام از اکسل دیتاهاشو بگیرم
مثلا 3 تا پارامتر دارم p , f , l برای هر کدوم باید جدا جدا دستور زیرو رو بنویسم؟
*$call gdxxrw data.xlsx par=p rng=sheet2!a1 rdim=1 cdim=2
*$call gdxxrw data.xlsx par=l rng=sheet3!a1 rdim=1 cdim=2
*$call gdxxrw data.xlsx par=f rng=sheet1!a1 rdim=1 cdim=3
این دستور رو وقتی میدم فقط یکیشونو میشناسه
یعنی فقط یک جدول توی گمز تشکیل میده(2 تای دیگه رو نمیشناسه )
سلام
نیازی نیست همش تکرار کنین. یه بار call کنین، بعد از اینکه زدین cdim=2 یه فاصله بذارین، و پارامتر بعدی رو فراخوانی کنین
خیلی ممنون
فوق العاده اید شما (واقعا دم شما گرم اقای محمودی عزیز)
اقا یه سوال دیگه
این دستوری که با onecho نوشته میشه فرقش با این دستوری که من بالا نوشتم $call چیه ؟
سوال دوم : اگر n بعدی هم بود پارامترمون n-1 رو باید در هم ضرب کنیم و یکی رو جدا کنیم
یعنی مثلا اگه p (i,j,k,l,m,n داشتیم ستونهای i,j, k,l,m رو با هم میگیریم و یه سطر جدا هم برای n
سلام
محبت دارید.
سوال اول: اون سرعتش کمتره و قدیمی تره و اینکه دومی شیکتر و آسونتره و…
سوال دوم: این یه رویه ش هست بله. که معمولا همه این شکلی داده میدن.
سلام برای وارد کردن داده های پارامترها از اکسل
اگر ابعاد بیشتر از 2 تا باشه این کد جواب نمیده ؟(مثلا برای پارامتر ( pa(i,j,kl
*$call gdxxrw data.xlsx par=p rng=sheet2!a1 rdim=1 cdim=2
داده ها تو اکسل باید چطوری تعریف بشه تا این کد جواب بده ؟
در سطح صفر کلوین توضیح بدین لطفا لطفا لطفا
سلام
rdim مربوط به row هست که همون سطرهای اکسله. و cdim هم ابعاد ستونها.
برای اینکه بتونین یه ماتریس سه بعدی رو از رو اکسل بخونین. میتونین rdim=2 و cdim رو برابر 1 قرار بدین. فایل اکسل هم باید تو داریکتوری گمز بذارین (اون دایرکتوری که فعال هست. دیفالتش documents/gamsdir/projdir هست).
تو اکسل هم داده ها اینجوری باید وارد بشن.
به سطر ها و ستون ها دقت کنین.
سلام آقای محمودی . خسته نباشید. من یه سوالی داشتم.
امکان داره گمز جوابو ناقص بده یا اگه ناقص می ده به کدنویسی برمیگرده. الان من جواب یه سری از متغیرهاموندارم.
خیلی ممنون
سلام
خیر. برای همه متغیر ها جواب میده.
اگه display کردین، اونایی رو که نشون نمیده یعنی مقدارشون صفره.
کاملش رو میتونین تو فایل lst تو بخش solvar به تفکیک متغیر و اندیس ببینین
سلام
سوالم در مورد خطای 149 هستش. من یه پارامتر با نام (d(i,j به معنی فاصله i , j و یه پارامتر با نام (c(i,j به معنی هزینه جابجایی بین i,j دارم. احتمال میدم خطا برای اینه که دو پارامتر با اندیس های برابر دارم. اگر درسته بفرمایید چطوری میتونم این مشکلو برطرف کنم؟
با سپاس فراوان
سلام
خیر این دلیل منطقی نیست. متن ارور رو بخونین. گفته که شما یه اندیس (مثلا i یا j) دارین که توی صور عمومی (اون اسم محدودیت ها که جلوش دو نقطه گذاشتین) تعریفش نکردین. قاعده رو رعایت کنین. مثلا عبارت زیر غلطه.
باز هم سلام و باز هم تشکر بابت ابنکه دانشی رو که دارین به اشتراک میگذارین.
من یک کد گمز نوشتم که خطی هست و در حالت عادی و با داده هایی که دستی وارد گمز کردم، جواب می ده، اما زمانی که داده ها رو به صورت input از فایل اکسل وارد میکنم، خطای 66 و 256 رو میده. جالب اینه که حتی برای فایل import شده از اکسل، فایل gdx رو هم میسازه که قابل دسترسی هست اما مدل رو حل نمیکنه.
در این مورد شما چیزی بنظرتون میرسه؟
ممنونم
سلام
ببخشید مطمئن باشید کسی متن ارور ها رو حفظ نیست، پس متنش رو بذارین لطفا.
اگه gdx رو درست تولید کرده، پس این فایلی که تولید شده به طور صحیح بتو گمز فراخوانی نمی شه.
این متن خطاهاییه که داده. بازم ممنونم
66 The symbol shown has not been defined or assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
141 Symbol neither initialized nor assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
سلام
ظاهرا شما دو خطا مرتکب شدین، اول اینکه احتمالا یه محدودیت رو تو بخش equation اوردین، ولی معادله ش رو ننوشتین و این در حالیه که تو دستور model به گمز گفتین اون معادله هم جزو محدودیت های من هست.
دوم اینکه یه پارامتر، یا اندیس رو تعریف کردین که بهش مقداری ندادین. مثلا اندیس i رو تعریف کرده باشین ولی مقدار یا المنتی نداشته باشه. همه پارامترها رو چک کنین خلاصه
باسلام
من به همین مشکل برخوردم. بدون فراخونی از اکسل مدل اجرا می شه ولی با اکسل با اینکه همه چیز اوکی هستش به این ارور بر می خورم.فایل gdx تولید می شه واطلاعاتش صحیح است.
باید برای رفع این مشکل چی کار کرد؟
یعنی چی به طور صحیح فراخوانی نمی شه؟
شما قبل از حل مدل یه بار اون پارامتری که از اکسل خوندین display کنین. و چک کنین ببینید درست فراخوانی شده یا خیر.
سلام
وقتتون به خیر
ممنون از سایت خوبتون
سوالی که دارم اینه که من کلا نمیدونم چطوری می شه متغیرهای باینری رو کدنویسی کرد. لطفاً منو راهنمایی کنید.
ممنونم
سلام
یعنی چی؟
بخش متغیر ها رو خوندین؟
کلیک کنید
عرض ادب و احترام
عرضم اینه که اولاً به عنوان مثال کد زیر آیا درست هست یا نه؟
Variables
x1(l,i,k) 1 if vehicle k moves from node l to the node i & 0 otherwise
y(i) 1 if cross-dock i is open & 0 otherwise
و ثانیاً اگر درست هست، نرم افزار چطوری تشخیص میده که کجا متغیر رو 1 در نظر بگیره و کجا صفر؟
سلام
کافیه با متغیرهای x,y رو با binary variable تعریف کنین.
نرم افزار چجوری تشخیص میده: مدل شما یه سری محدودیت و هدف داره. نرم افزار میره هدف رو نگاه میکنه و یه جوری به متغیرها عدد میده که تابع هدف بهینه بشه. پس تشخیصش بر اساس هدف مسئله هست.
سلام آقای محمودی و وقتتون بخیر.
من مدل زیر رو می نویسم ارور 812 یعنی solve keys expected رو بهم می ده. لطفا راهنماییم کنید چطور حلش کنم؟
model wang 2010 total perforemance /all/
solve wang 2010 total perforemance using lp maximizing zz;
سلام
نام مدل باید پیوسته باشه و symbol های ممنوعه نباید توش باشه.
مثلا اسم مدل باید اینجوری نوشته بشه.
سلام
دوستان کسی برای چند هدفه با روش اپسیلون کانسترینت(e-constraint)
کد داره !!
یه مثال ساده
اینی که تو کتابخونه گمز هست رو نمیفهمم
identifier expected
untitled_3.gms(68) 3 Mb 2 errors
ممنون میشم راهنماییم کنید.
ممکنه این ارور خیلی جاها پیش بیاد. ولی مفهومش اینه که شما اندیس رو درست به کار نبردین. مثلا ممکنه به جای x(i) نوشته باشین x,(i) یا به جای x(‘3’) نوشته باشین x(3)
با سلام و احترام
من یه مدل رو تو گمز پیاده کردن که فقط داره خطای 149 رو میگیره . میخواستم اگه امکانش باشه راهنماییم کنید
با تشکر
سلام
شما باید یکی یکی رفع کنین این ارورا رو. اولیش کجا رو نشون میده؟
یکیش اینه که توی maxpoe(n,np باید بنویسین.
سلام
ببخشید خطای 2 مربوط به چیه؟
سلام
متن ارور رو لطفا بذارین. مرسی
تابع هدف من بصورت زیر است
z=e=sum(t,(PDA(t)*landaDA(t))+(ppos(t)*landapos(t))-(Pneg(t)*landaneg(t)))-sum((drp,t,j),PF(drp,t)*Pp(drp,j)*landa(drp,t));
در ترم های اول و دوم و سوم لانداها معلومن و در ترم اخر Pp , PF معلومن. چرا برنامه میگه غیر خطی؟
محدودیت ها چی؟
سلام. ممنون بابت سایت خوبتون
من تابع هدفم رو بصورت خطی تعریف کرده ام و نوع مدل را mip و سالور را cplex انتخاب کرده ام ولی ارور 51 را می دهد. مشکل چیه؟
سلام
مچکرم.
مدل شما Mip نیست و غیر خطیه. احتمالا minlp یا nlp باشه
با سلام
ببخشید امکان داره در یک مساله یکسان و از نوع عدد صحیح امیخته خطی و np-hard جواب بهینه ای که گمز به کمک cplex به ما میده از جوابی که متلب در الگوریتم ژنتیک میده بدتر باشه ؟
الیته من محدودیت زمان ران شدن گمز رو هم از بین بردم
سلام
اگه مسئله ی شما در cplex به گپ صفر رسیده، خیر امکانش نیست.
ممنون
میشه یه توضیح کوچیک در مورد مفهوم model status ها بدین الان برای من ، برای بعضی ران ها که شرایط به مراتب سخت گیرانه تری برای محدودیت ها اعمال کردم optimal اعلام میکنه ولی برای بعضی ران ها که سمت راست محدودیت ها خیلی بزرگتره و سخت گیری کمتری روی محدودیت ها اعمال کردم integer solution میده و باعث میشه جواب گمز از جواب ژنتیک بدتر بشه!
ممنون
model status داره یه توضیحی در مورد مدل شما میده، اونجوری که سالور به گمز گزارش میده. مثلا ممکنه سالور نتونه یه جواب شدنی برای مدل پیدا کنه، پس گمز نتیجه میگیره که مدل جواب نشدنی داره و کد کد چهار رو برای مدل بر میگردونه. شما برای چک کردن جواب یه مسئله فقط model status براتون کافی نیست. باید solver status هم چک کنین. این پیام ها رو میتونین اینجا ببینید.
حواستون به این دو تا باشه و همچنین gapی که گمز به شما ارائه میده.
در صورتی که به نتیجخه نرسیدین، کد گمز رو به ایمیل سایت بفرستید.
با سلام و تشکر
محدودیت های من ارور 148 می دهند و نمی دانم چطور برطرفشون کنم
co7(i).. sum((j,m),x(i,j,m))=e=1;
co8(i,j,m)$(ord(j)>=4).. x(i,j,m)=l=y(j);
co9 .. sum(j$(ord(j)>=4),y(j))=l=k;
در محدودیت 7 دو عدد sum که یکی به ازای j و دیگری به ازای m هستش و در مقابلشون x(i,j,m) قرارا داره و این عبارت برابر با یک هستش و میخوام که این محدودیت برای همه i ها برقرار باشه
در محدودیت 8 به ازای هر i و m و jهای بزرگتر از 4 میخوام که x(i,j,m) کوچکتر مساوی با y(j باشد
در محدودیت 9 sum به ازای jهای بزرگتر مساوی با 4 که در مقابلش y(j قرار دارد کوچکتر مساوی با k است که k را در پارامترها یک مقدار ثابت تعریف کرده ام.
ممنون میشم راهنماییم کنید
این موردم هست که در محدودیت 7 ام علاوه بر 148 ارور 171 رو هم میده
سلام
من شماره ارورها رو حفظ نیستم. لطفا متن ارور رو بذارین همیشه سوال که پرسیدین.
طبق چیزی که من میبینم، ظاهرا یا equation co7 رو (به عنوان مثال) با یه اندیس دیگه تعریف کردین ولی اینجا یه جور دیگه به کار بردین. یا اینکه x رو با یه سری اندیس دیگه، یا یه ترتیب دیگه از اندیس ها تعریف کردین ولی اینجا متفاوت به کارش بردین.
موفق باشید
بله حتما تعریف خطاها رو مینویسم در موارده بعدی
اهان پس طرز نوشتنم درسته باید تعریف هامو چک کنم.
خیلی ممنونم
خواهش میکنم.
خیلی خیلی ممنون و سپاسگزارم از حوصله و پاسخگوییتون
کاری که گفتید رو کردم و دیگه اون ارورهارو نداد
خواهش میکنم.
خداروشکر
با سلام. برای ارتبط گمز با متلب دستور libinclude matout x.l$ را وارد کردم ولی ارر کد 2 میده و میگه که فایل را نمیتونه باز کنه لطفا راهنمایی کنین
سلام
مشکل از آدرس دهی هست. آدرس دهی رو دقیق وارد کنین. بر حسب کد های استاندارد جلو برید. دایرکتوری گمز و متلب هم یه فولدر مشترک بذارین.
سلام جناب محمودی. با تشکر از مطالب بسیار ارزنده شما، یه سوال داشتم: محدودیت x(i)=a(i,j) بطوریکه i,j برابر باشند، رو چطوری میشه نوشت؟ ممنون
سلام
مرسی و خواهش میکنم.
با سلام و ممنون از سایت خوبتون
من یک sum نوشتم و مجموعه ها را هم از قبل تعریف کردم اما وقتی کد زیر را وارد می کنم با خطاهایی روبه رو می شوم.
i , j اندیس هستند و مشکلی ندارند اما m اندیس پارامترها نیست و خوده ا عداد مجموعه m را در توان میخواهم محاسبه شود اما برای m-1 که در power تعریف کردم خطاهای 148 و 133 و 201 را می دهد.
چطور می توانم این خطاها را رفع کنم ؟
پیشاپیش تشکر می کنم
سلام
m رو چجوری تعریف کردین الان؟ و منظورتون از powerی که نوشتین چی هست.
m را در set به صورت مجموعه تعریف کردم:
i index of demand nodes /1*10/
j index of existed and new facilitiy nodes /1*7/
m index of assignment levels /1, 2, 3/ ;
با power هم می خواستم یک پارامتر که مقدارش ثابت هست ینی 0.4 را به توان m-1 برسانم
درواقع کل عبارتی که میخواهم کد کنم به صورت زیر هستش:
3تا سیگما که به ترتیب به ازای i و j و m هستند و در مقابلشان حاصل ضرب b(i) و c(i,j) و 0.6 و 0.4 به توان m-1 و x(i,j,m) هست
به جای m توی تابع بنویسین ord(m)-1احتمالا درست بشه.
اگه قبول نکرد، توی دستور set که بالا تعریف کردین، اول m رو تعریف کنین بعد i,j رو.
بعد توی Power به جای m بزنین m.uel
سلام ممنون از راهنماییتون اگه اشکالی نداره میتونم مدلمو براتون بفرستم هر کاری میگید انجام میدم درست نمیشه ممنون
سلام
ارسال کنین.
با سلام
در اجرای گمز به من کلا جواب صفر میده و وقتی equation ها باز میکنم میبینم در محدودیت ها یه صفر گذاشته که اصلا توی محدودیت وجود نداره
Y_6*47 + (0)*T + L_LSM + (0)*L_jupiter =L= 47
نمی دونم برای چیه لطفا راهنمایی کنید
Y_6 هم متغیر صفر ویک است
عزیز مشخص نیست سوالتون. هر بار یه جور میپرسین. یه بار میگین متغیر صفره. یه بار محدودیت. هر سری یه آدرس میدین. سوال رو واضح بپرسین لطفا.
طبق این چیزی که شما تو کد بالا نوشتین. نگران این نباشین چون گمز وقتی دو تا متغیر رو که ضرب هم شدن (تو مدلهای غیر خطی) میبینه. یکیشون رو به عنوان صفر نشون میده. اون یکی رو می نویسه اسمشو.
شما باید به بخش solvar مراجعه کنین که ببینین مقدار متغیرهاتون چنده
سلام
وقتی کدم رو اجرا می کنم روی نود 5300 متوقف می شه و هیچ کاری انجام نمی ده برای گرفتن log هم باید متوقفش کنم.
سلام
مهندس لاگ میشه همون چیزایی که تو پنجره ی process window بهتون گزارش میشه.
اینکه متوقف میشه به خاطر زمانبر بودن مدل و اینکه سچون سایز بالاست، حجم زیادی رو از حافظه میگیره. پس مشکل زمان و فضای رم موقت میتونه باشه. با سالورهای دیگه هم امتحان کنین
سلام دوباره
اقا من یه سری متغیر دارم
اینارو positive تعریف میکنم
مساله جواب بهینه میده
بعد که integer تعریف میکنم infesible 10 میده!!
اینم یه راهنمایی کنید
ممنون
سلام
خب مسئله با این شرایط نشدنیه. اولا باید برای متغیرهای integer یه حد بالای بیشتر از 100، مثل هزار در نظر بگیرین. چون دیفالت integer ها تو گمز 100 هست و اگه مدل نتونه با تخصیص مقادیر زیر 100 به متغیر ها جواب شدنی تولید کنه، پس مسئله نشدنی میشه. بهترین کار اینه که حدس بزنین مقادیر خروجی متغیر چقدر میشه (اول مسئله رو ریلکس کنین. یعنی با positive حل کنین بعد طبق اون حدود تقریبی برای متغیرها دستتون میاد) بعد با تخصیص attributeِ .up یه حد بالای براش بذارین.
اگه باز نشدنی شد و این حرفا. باید مدل، داده ها و کد رو چک کنین.
توجه: اگه با positive جوابی که ارائه میده درسته (یعنی صحیح هم هست) پس همه چی حله و خیالتون تخت.
سلام
اقا حل شد
گیرش همون حد بالا بود x.up
تعریف کردم اکی شد
واقعا ممنون که وقت میذارین و جواب میدین
خیلی بزرگوارید
خواهش میکنم.
موفق باشید
سلام مجدد
اقا توی خروجی وقتی مقدار یک متغیر رو منفی بزنه
توی تابع هدف مقدار منفی محاسبه میشه ؟
نباید صفر نشونش بده وقتی منفی میشه!؟
نوع متغیر رو مثبت تعریف کردم(positive variable(
سلام
دقیقتر توضیح بدید لطفا. و اون مقدار منفی که میگین چقدره و …
مثلا متغیر x(i,j,k,t رو positive تعریف کردم
بعد وقتی خروجی میگیره
چند تاش مثبته و چند تاش منفی
میخوام ببینم جواب منطقیه؟
یا داره اشتباه حساب میکنه؟(یعنی مقادیر منفی تو تابع هدف هم حساب شده)
یا اینکه نه منفی نشون میده و در محاسبه تابع هدف 0 در نظر میگیره
تو خروجی میگین یا تو بخش equation موجود در فایل lst?
بازهم ممنون بابت وقتی که میذارید و جواب میدین
فرق infeasible 10 , infeasible 4 چیه ؟
مشکل از مدل میتونه بیشتر؟(مثلا کم و زیاد بودن محدودیتها؟)
یا داده های پارامترها ؟
بهترین روش چیه برای رفعش؟
خواهش میکنم.
10 دوز نشدنی بودنش بیشتره.
مشکل از همه میتونه باشه و بهترین راه حلش اینه که از اول پیشگیری بشه. مدل پایه از مقالات پایه آورده بشه، کد بشه، با داده های استاندارد. بعد کم کم توسعه داده بشه.
الان هم با این وضعیت مقداری داده ها رو تصحیح کنید. تو مدل هم کم کم معادلات رو لحاظ کنین نه همه رو. و هر بار ران و تحلیل کنین نتایج رو.
سلام
اقا من یه مشکلی دارم
ضریب تابع هدف با پارامتری که تو جدول تعریف کردم نمیخونه
مثلا تو جدول ضریب v رو تعریف کردم عدد بین 2و5
بعد وقتی مدل حل میشه تو خروجی ضریب رو عدد بی ربط نشون میده مثلا 2574میده
این چیه مشکلش؟
v(p,h,j,t)=round(uniform(5,20));
sum((p,h,j,t),qfr(p,h,j,t)*v(p,h,j,t))
بعد تو خروجی میزنه
25476*qfr(1,1,1,1)
سلام
qr و v متغیرن یا پارامتر؟ v رو پارامتر تعریف کردین درسته؟ و qr رو متغیر؟
این عددی که نشون میده، میگه وقتی محدودیت رو باز کنیم و سامیشن بزنیم ضریب qfr برابر 25476 میشه. نگرانش نباشین درسته.
ممنون از پاسخ
اخه حواب infeasible 10 میده!!
این دو تا موضوع به هم ربطی ندارن. مشکلی از بابت محاسبات گمز وجود نداره. باید بشینین بقیه مشکلای احتمالی رو بررسی کنین.
با عرض سلام و تشکر از سایت و آموزشهای خیلی خوبتون
من در دو کد زیر در فراخوانی داده از اکسل دچار مشکل میشوم در هر دو مورد خطای 492
کد اول:
$onsymxref
sets i/1*3/
j/1*3/;
*parameter c(i) zarayebe tabe hadaf /1 5
*2 3
*3 2/
parameter c(i);
$call GDXXRW.EXE results.xls par=c rng=sheet2!b1:b3
$gdxin results.gdx
$load c
$gdxin
.
.
.
.
.
*filt, By admin
سلام
کد و اکسل رو برای ایمیل سایت ارسال کنین.
و کد دوم
$onsymxref
sets i/1*3/
j/1*3/;
*parameter c(i) zarayebe tabe hadaf /1 5
*2 3
*3 2/
parameter c(i);
$call GDXXRW.EXE results.xls par=c rng=sheet2!b1:b3
$gdxin results.gdx
$load c
$gdxin
parameter d(j) zarayebe samte rast/1 300
2 400
3 350/
.
.
.
*filt, By admin
و این هم خطای 492 :
symbol not in GDX
نمی توانم از اکسل هیچ داده ای بخونم
باز هم خیلی ممنون از وقتی که میگذارین
من یک برنامه دوسطحی (bilevel) با شرایط KKT ماکزیمم نوشتم ولی جوابها صفر بدست میاد. لطفا راهنمایی کنید.
ممنون از شما
سلام
پیام هایی که تو پنجره ی process window میده اینجا بذارین. ده خط آخر کافیه
MODEL STATISTICS
BLOCKS OF EQUATIONS 23 SINGLE EQUATIONS 216
BLOCKS OF VARIABLES 23 SINGLE VARIABLES 216
NON ZERO ELEMENTS 771 NON LINEAR N-Z 110
DERIVATIVE POOL 20 CONSTANT POOL 21
CODE LENGTH 313 DISCRETE VARIABLES 60
**** THE MODEL EXCEEDS THE DEMO LIMITS
**** MAX MATRIX ROWS 300
**** MAX MATRIX COLUMNS 300
**** MAX NON ZERO ELEMENTS 2000
**** MAX NON LINEAR N-Z 1000
**** MAX DISCRETE VARIABLES 50
**** Terminated due to a licensing error
GAMS Development Corporation, Washington, DC G871201/0000CA-ANY
Free Demo, 202-342-0180, sales@gams.com, http://www.gams.com
10514980000S 00
01234567000000
DC0000 Ref: Generated by Base A Demo
سلام
شما license ندارین. بخش دانلود و نصب نرم افزار رو تو همین سایت مطالعه کنین.
سلام
خسته نباشید
ببخشید این کد مشکلی داره؟
constraint(i,t).. Alpha(i,t)=e=ifthen((G(i)-Load(t))<0,1,0);
ارور نمیده ولی تمام مقادیر صفر میشن در صورتی که باید ترکیبی از صفر و یک ها باشن
مقادیر Loat(t) و G(i) بین صفر و ده هستند
سلام
چون ifthen نوشتین پس احتمالا G,load متغیر هستن. شاید تو حالت بهینه همیشه G بزرگتر مساوی با load باشه واسه همین آلفا رو صفر میده.
سلام و خسته نباشید. ببخشید چطور میشه 1محدودیتی که حالا خودش هم تو 1 سطح اطمینانی تعریف میشه رو کد کرد.مثلا تو عدم قطعیت و مثلا برنامه ریزی شانسی، وقتی بخایم محدودیتی ک پارامتر غیر قطعی داره در سطح اطمینان مثلا 90% براورده بشه.محدودیت رو ک نوشتیم اینکه مثلا خود محدودیت بزرگتر مساوی 0.9 باشه رو چطور باید بنویسیم؟ممنونم از توجه شما
سلام
همچین محدودیت هایی رو برای اینکه کد کنن، میان معادلش رو مینویسن. تو ادبیات کاری که کردین بگردین محدودیت معادلش رو پیدا میکنین. همون رو کد کنین.
باسلام. برای مساله ای در گمز یک کد را قبلا اجرا کرده بودم ولی الان که همون کد رو اجرا میکنم خطای 141 و 257 رو میده مربوط به چی است؟ نرم افزار رو مجدد باید نصب کنم؟ چون کد رو قبلا اجرا میکردم و جواب میداد
سلام
شماره ارورها رو حفظ نیستم و دسترسی ندا رم که چک کنم. لطفا متن خطا رو بذارین. این حالتی رو هم که گفتین مشکل احتمالا از اینه که شما شاید یه فایل دیگه رو ران میکردین، نه این رو
متن خطاها به صورت زیر است:
display cost.l,time.l,z.l,g.l,f.l;
solve zahra2 using mip minimizing time;
اینطور که متوجه شدم مربوط به مقدار دهی پارامترها است ولی داده ها رو تعریف کردم در فایل اکسل و قبلا همین فایل رو اجرا کردم. نمیدونم چه مشکلی پیش اومده؟
سلام
این متن خطا نیست مهندس.
ولی اگه ترتیب این دو خط دقیقا همین شکلیه که نوشتین غلطه.
خط display رو بذارین بعد از خط solve
سلام .خسته نباشید من در برنامه ای که نوشتم با خطاهای 145 و 148 مواجه میشوم علت چیه؟؟
e5(i)..H(i,1)=e=40;
e6(i)..H(i,6)=e=80;
سلام
H(i,’1′)=e=40
سلام. ی سوال داشتم من قید زیر رو تعریف کردم به شکل زیر ولی ارور 149 میده، چجوری حلش کنم؟
co7(p).. sum(t$Ton(p,t),P(p,t))-Emax(p,t)=l=0
ممنون میشم از پاسختون
سلام
اون پرانتری که مربوط به sum هست رو فک کنم درست به کار نبردین. emax با اندیس t خارج از سامیشن هست.
بله درسته. ممنون مشکل حل شد
سلام آقای محمودی. با تشکر از سایت خوبتون.
ارور 71 مربوط به چیه؟؟؟
سلام
فک کنم تاپیک مربوطه رو مشاهده فرموده بودین. موفق باشین
سلام و خسته نباشید
من یک کد در گمز نوشتم که در قسمت توابع 10 تا ارور 149 (uncontrolled set entered constant) داد. که ارور ها بعد از w2 دوم هستن.
weighting(sc) .. z =e=w2(sc)*(sum(i, E(i)*Z2(i))+ sum(l, F2(l)*W(l))+
sum((i,k,j), (A(j)+B(j)*t(i,k))* X4(i,k,j))
+ sum((k,l,j), C(j)*t3(k,l)*Y4(k,l,j))
+ sum((l,i,j), (-G(j)+D(j)*t4(l,i))*s(l,i,j))
+ sum((l,j),(H(j)+O(j)*t5(l))* T2(l,j)))
-(1-w2(sc))*(sum((i,j),m(i,j))*(sum(k,x4(i,k,j))+sum(l,s(l,i,j)))
+sum((l,j),n(l,j))*(sum(k,y4(k,l,j))+sum(i,s(l,i,j))+t2(l,j)));
عکس این قسمت رو برای اینکه بهتر مشخص بشه براتون ایمیل هم میکنم.ممنون میشم علت رو راهنمایی کنید.
سلام
ایمیلتون نرسیده.
ظاهرا از نظر کدینگ این بخش مشکلی روی w2 وجود نداره. پس احتمالا تو بخش equation، شما یه بار weighting رو با اندیس متفاوتی با sc تعریف کردین.
آدرس ایمیل رو ظاهرا اشتباه وارد کردم اگر ممکنه یک بار هم ایمیلتونو چک کنید. چون خطاها روی w2 نیستند. روی متغیرهای x4 , y4,s, t2 که برای دومین بار در کد نوشته شده هست.در صورتی که روی همین متغیرها که ابتدا نوشته شده خطا نیاورده…
سلام
خب شما به من اطلاعات غلط دادین. ارور بعد از x4 هست. روی i,j سامیشن بستین، پرانتز بسته رو بذارین آخر فرمول. چون با این پرانتزی که الان هست، گمز فکر میکنه شما میخواین ببینیدین سامیشن رو.
با سلام،
من یک مد نوشتم و هنگام اجرا خطایی داده نمیشود و اجرا میشه، ولی هنگام نمایش نتایج و در قسمت REPORT SUMMARY میگه 37 ERRORS ( ****). در فایل خروجی هم من اروری پیدا نمی کنم. این 37 تا اررور چی هستن؟ و چطوری میشه حلشون کرد.
**** REPORT SUMMARY : 0 NONOPT
0 INFEASIBLE
0 UNBOUNDED
37 ERRORS ( ****)
یه سوال دیگه اینکه در MODEL STATUS وضعیت من 8 هست (MODEL STATUS 8 Integer Solution). آیا این به این جواب میشه اعتنا کرد یا باید دنبال تغییر مدلم باشم.
سلام
متن خطا رو بذارین. یکی دو خط قبلش و یکی دو خط بعدش هم.
اگه استتوس 8 باشه میشه به عنوان یه جواب قبولش کرد. solver status هم یه نگاه بندازین
خطایی به صورت معمول که به رنگ قرمز نشون داده میشه نیس. فقط در قسمت گزارش اینا نوشته شده:
**** REPORT SUMMARY : 0 NONOPT
0 INFEASIBLE
0 UNBOUNDED
37 ERRORS ( ****)
وضعیت سالور ۱ هست: SOLVER STATUS 1 Normal Completion
اوکیه پس. کاش لاگ رو کامل میذاشتین. ولی ظاهرا که مشکلی نیست
تو گمز من هرکاری میکنم فایل GDX ایجاد نمیشه هرکاری کردم چند بار گمزهای مختلف نصب کردم آفیسو عوض کردم اما تفاوتی ایجاد نکرده
دیگه دارم کلافه میشم
سلام
مشکل اینه که اشتباه دارین حرکت میزنین.
فایل رو چجوری دارین ایجاد میکنین؟
سلام
خطای 338 چه موقع رخ میده؟ من یک کد دارم با 140 تا محدودیت اما خطای 338 رو میده و وقتی روی خطا دابل کلیک می کنم هر دفعه روی یک محدودیت قرار می گیره
سلام
لطفا متن ارور رو بذارین. کسی شماره رو حفظ نیست.
سلام
من با سالور scip یک مدل بسیار سخت را چندین بار حل کردم. ولی بعد از چند بار ران کردن، یکدفعه ارور گرفت و از third party و … گفت و گیر کرد. این در حالیست که روزهای قبل مشکلی نداشت. به نظرتان مشکل از چیست؟ اگر دوباره نرم افزار را نصب کنم مشکل حل می شود؟
ممنون
سلام
متن خطاها رو بذارین لطفا.
ممنون سایت خیلی خوبی که دارید
میبخشید من توی مدلم پرانتز خیلی زیاد دارم و همش بهم ارور 8 رو میده که پرانتزها درست نیست و خیلی مشکل پیدا کردن این ک مشکل پرانتز از کجاست میخواستم بدونم چطور میشه تو گمز match بودن پرانتزها رو چک کنم؟
سلام
از منوی بالا از {a} استفاده کنین.
سلا.خطای158چیه؟
سلام
متن خطا رو بذارین لطفا. شماره رو حفظ نیستم.
سلام و عرض ادب
مدل بنده در گمز زمانی که از روش MINLP حل میکنم ارور نمیده ولی گوشه سمت چپ پنجره گمز گزینه Solverرا نمایش نمیده و براتونم حل مدلمو میفرستم میخواستم بدنم دلیل این که حل نمیکنه چیه؟
ممنون از همکاریتون
.
MODEL STATISTICS
BLOCKS OF EQUATIONS 19 SINGLE EQUATIONS 927
BLOCKS OF VARIABLES 7 SINGLE VARIABLES 481
NON ZERO ELEMENTS 2,931 NON LINEAR N-Z 320
DERIVATIVE POOL 6 CONSTANT POOL 60
CODE LENGTH 1,378 DISCRETE VARIABLES 200
**** THE MODEL EXCEEDS THE DEMO LIMITS
**** MAX MATRIX ROWS 300
**** MAX MATRIX COLUMNS 300
**** MAX NON ZERO ELEMENTS 2000
**** MAX NON LINEAR N-Z 1000
**** MAX DISCRETE VARIABLES 50
**** Terminated due to a licensing error
.
.
سلام
اگه دقت کنین شما لایسنس ندارین. بخش زیر رو حتما بازدید کنین.
دانلود نرم افزار گمز به همراه لایسنس
سلام وقتتون بخیر
چند وقتی موقع اجرا با این خطا روبرو میشم
Error 2019: Solver stopped because of numerical instability
شما می تونید راهنماییم کنید که چطور می تونم این خطا رو رفع کنم .
ممنون از شما
سلام
عجیب هست که این ارور در سایت گمز نیست. شما سالور حل را تغییر بده اگر رفع نشد برای سایت بفرستید
سلام
ممنونم البته وقتی ابعاد سیستم رو کاهش میدم جواب میده ولی به محض اضافه کردن دوباره ارور می ده. در گمز با کدوم دستور میشه تعداد اعداد بعد از اعشار رو زیاد کرد؟ به نظر شما این جواب میده؟
سلام امتحان کنید
;option decimals=عدد
سلام
کد پایینی درست هستش و غیر از بحث محدودیت اپسیلون. نمیدونم چرا وقتی مدل رو اجرا میکنم برای قطعه (p) اول هیچ تولیدی رو در x در نظر نمیگیره. درحالی که در محدودیت پنجم باید میزان تولید هر جهار قطعه توسط تولیدکننده ها (i) باید برابر باشه و باید برابر میزان تقاضا باشه.
ممنون میشم اگر راهنماییم کنید که کجای کدم مشکل داره
با تشکر
سلام فایل گمز رو برای سایت gamsbook@gmail.com بفرستین. چون وقتی کپی می کنین ترتیب چیدن ستون در table به هم می ریزه .
با سلام وخسته نباشید.
من برای حل مسأله دو هدفه ای که دارم از روش اپسیلون محدودیت استفاده می کنم. اما مرتب خطاهای 119، 140، 135، 8 را برای این خط از کد
if (mod_payoff.modelstat%modelstat.Optimal% and mod_payoff.modelstat%modelstat.FeasibleSolution%, abort ‘no feasible solution for mod_payoff’);
اعلام میکنه. ممنون میشم اگه راهنمایی بفرمایید.
با تشکر
سلام مدلتونو بفرستین تا ارور یابی بشه
با سلام و خسته نباشید
می دونیم که برای نوشتن سیگما از sum استفاده می کنیم. مثلا فرض کنید اگه پارامتر t (زمان) از یک تا 24 بصورت (t1*t24) تعریف شده باشه و ما بخوایم روی این بازه از یه چیزی(مثلا f(t)) سیگما بگیریم به صورت sum(t,f(t)) تعریف می کنیم اما سوال من اینجاست اگه بخوام سیگمای f(t) رو روی t8 تا t15 بگیرم چجوری باید کدش رو چطور بنویسم ؟؟؟ (در واقع روی یک بازه زمانی مشخص میخوام از f(t) سیگما بگیرم)
سلام
sum(t$(ord(t)>7 and ord(t)<16),f(t))
سلام وقت بخیر
من می خوام بین گمز و متلب ارتباط برقرار کنم ولی هرکار میکنم نمیشه! می خواستم ببینم برای برقراری ارتباط باید ورژن های خاصی رو از گمز و متلب استفاده کنم و اینگه کدوم ورژن ها بهم لینک میشن رو اگه میشه معرفی کنید؟ دوم اینکه باید نرم افزارها 32 بیت باشن حتما یا با 64 بیت هم انجام میشن؟!!!!
ممنون میشم بگید چند روزه درگیر ارتباط بین گمز و متلب هستم ولی نتوسنتم آخرش این کارو انجام بدم! متلب 2013 و 2014 رو تمام با گمز 23.5 و انواع ورژن های 24 امتحان کردم ولی جوابی نگرفتم
سلام نه ورژن خاصی نیست. بهتره 64 بیتی باشه. من فردا فایل آموزشیو براتون ایمیل می کنم
سلام. خسته نباشین.
من برناممو اجرا کردم اما ارور داره.میشه راهنمایی بفرمایید
CPLEX error 3019 : failure to solve MIP subproblem
CPLEX error 1217 : no solution exists
solution aborted due to iteration limit
سلام
این حل چقدر طول کشید؟
ظاهرا جوابی پیدا نشده برای مدلتون. ممکنه با افزایش تعداد تکرارهای سیپلکس بتونین به جواب برسین که بعیده. کد زیر رو به قبل دستور solve انتقال بدین و به جای number یه عدد بزرگ قرار بدین
option iterlim=Number;
کاری که فرمودین رو انجام دادم اما باز هم همون خطای قبل رو داره
پس مسئله جواب نداره احتمالا. چندتا از محدودیتا رو کم کنین. ببینید نتیجه چی میشه. به عبارتی اول تابع هدف و دو دو سه محدودیت رو لحاظ کنین تو دستور مدل، بعد یکی یکی محدودیت اضافه کنین تا جایی که گفت نشدنی هست. بعدش تحلیل کنین که مشکل از کجا میتونه باشه
سلام.وقتتون بخیر.من برنامه ای با گمز نوشتم خطای
equation infeasible due to rhs value رو میده
امکانش هست راهنمایی کنین که این خطا به خاطر چی هست؟
سلام محدودیتتون نشدنی هست . داده ها رو چک کنین
با سلام خدمت شما عزیزان
چطور می تونم این خطا رو رفع کنم؟
DICOPT: Stopped on MAXCYCLES
در حالی که مساله رو با DE در EMP حل می کنم
سلام
مدلتونو بفرستید.
سلام
خوشبختانه مشکلم حل شد
با سپاس
با سلام و خسته نباشيد
من يه مدل minlp دارم كه با سالور بارون وقتي رانش مي كنم؛حل به آخر نمي رسه تا ده ساعتم حل مسئله طول كشيده و نزديك به 80 تا نقطه غير بهينه هم پيدا كرده ..انگار توي نقاط محلي گير مي كنه..مي خواستم بدونم مي تونين كمك كنيد.
ممنون
سلام 80 تا نقطه نشدنی را باید یا تغییر داده و یا مدل شدنی کنین. و برای اینکه زمان زیادی می بره یا باید شرط زمانی و یا شرط تعداد اجرا بگذارین یا اینکه با الگوریتم های فراابتکاری حل کنین.
option eject
iterlim = 100;
OR
option reslim = 100000 ;
اتفاقا قصدم اينه كه مدلمو با فرا ابتكاري حل كنم.فقط مي خواستم بدونم مدلم از نظر شدني بودن مشكلي نداشته باشه؟
چون معمولا مدل هايي رو كه با فراابتكاري حل مي شن در سايز كوچيك با گمز هم حل مي كنن و جوابش رو با حل گمز هم مقايسه مي كنن.
سلام مدلتونو در سایز کوچک تری با گمز حل کنین که زمان اجرا کم باشد و بعد سراغ مدل فعلیتون برید و بگید چون زمان اجرا بسیار زیاد است برای کاهش زمان اجرا از روش های فراابتکاری استفاده می کنیم.
;const1(i,j)$(ord(i) ne ord(j))..abs(x(i)-x(j))=g=0.5*(L(i)+L(j))+b
توی کد بالا خطای 8 میده. پرانتزها که مشکلی ندارن چرا خطا میده؟
سلام این خط خطای پرانتزی ندارد. اح رتمالا ایراد از جای دیگری هست . اگه هنوز خطا رفع نشده برای سایت بفرستین کمکتون کنیم.
pg کوچکتر از 200 آنگاه k مساوی 41
pg بین 200 و 300 آنگاه k مساوی 69
pg بین 300 و 400 آنگاه k مساوی 96
pg بین 400 و 500 آنگاه k مساوی 124
pg بین 500 و 600 آنگاه k مساوی 151
pg یکی از متغیرای تصمیم منه و k قیمت پله ای
مهندس به همون کامنت ریپلای کنین. اینجوری مناسب نیست.
این رو باید با متغیر کمکی انجام بدین. ارسال بفرمایین به ایمیل سایت
مهندس جان کد مربوطه جهت بررسی ارسال شد.
ممنون میشم اگه زودتر اطلاع بدید.
سپاس
مهندس جان من از دستور if به فرم زیر استفاده کردم ولی باز هم ارور گرفتم :
cons80(t) .. If ((pg.l(t)200 and pg.l(t)300 and pg.l(t)400 and pg.l(t)500 and pg.l(t)<=600),
k.l(t)=151 ;
);
ارورهای 119 و 37 و 141 و 149
در ضمن فرموده بودین که از ifthen استفاده کنم که نسخه گمزی که من استفاده می کنم این دستورو نداره
مهندس جان اگه امکانش براتون فراهمه با if این قید رو برام بنویسین و اگه فکر می کنین باید کدم رو براتون ارسال کنم تا بررسی کنید به من بگید تا براتون ارسال کنم و شما اصلاح کنید و هزینه رو تقدیمتون کنم اما اگه فکر می کنید همینجا با یه اصلاح کوچک حل میشه لطفا راهنماییم کنید.
بی نهایت از وقتی که میزارید سپاسگزارم.
سلام
دستور if غلطه. نباید استفاده کنین تو محدودیت ها. اینم به قانون قبلی اضافه کنین. شما فرمولی که نوشتین رو اصلا نمیشه فهمید منظورش چیه.
مدل ریاضی به همراه کد گمزی که تا الان نوشتین رو ارسال کنین. تا بررسی و قیمت گذاری بشه.
یا اینکه اینجا بهتر توضیح بدین که در خدمتتون باشیم
مهندس جان ارور 66 دست بردار نیس یه راهنمایی کنید ممنونتون میشم احساس می کنم مشکل اصلی تو تعریف پایینه :
TEC=e=sum(t,(PGbuy1(t)*1*pr(t)+PGbuy2(t)*1*pr(t)+Pg(t)*k(t) -PGsell1(t)*1*80-PGsell2(t)*1*80));
k(t)=e=41$(pg.l(t)200)and(pg.l(t)300)and(pg.l(t)<=400));
امکان نداره چون متغیر تصمیم من pg(t) هستش و من روش شرط گذاشتم بخاطر اون باشه ؟
این حدود چیه گذاشتین برای pg؟ بله مشکل همینجاست. چی میخواستین دقیقا اونجا؟
ممنون آقای مهندس از وقتی که میزارید
k(t) قیمت گازه و pg(t) مقدار گاز خریداری شده از شبکه . در واقع pg(t) متغیر تصمیم من هم هست از طرفی چون قیمت گاز رو پله ای در نظر گرفتم وابسته به مقدار گاز خریداری شدس. بنابراین مقصودم از حدودی که تعریف کردم همین بود میخواستم بگم قیمت گاز در هر ساعت بسته به اینکه توی اون ساعت چه مقداری قراره خریداری بشه تو یه پله قرار می گیره و یک قیمت خاصیه به عنوان مثال اگه مقدار گاز خریداری شده کوچیکتر از عدد 200 باشه قیمت برابر با عدد 41 خواهد بود و …
(البته آقای مهندس شرطی که من نوشتم براتون گویا کامل ارسال نشده شرطی که گذاشتم به این صورت بوده :
k(t)=e=41$(pg.l(t)200)and(pg.l(t)300)and(pg.l(t)400)and(pg.l(t)500)and(pg.l(t)<=600));
اگه راهنماییم کنید این شرطو چطور باید اعمال کنم ممنونتون میشم آقای مهندس
سلام
خواهش میکنم.
این فرمول اشتباه هست. یه قانون رو یادتون باشه همیشه: در معادلات، یک متغیر نمیتواند تحت یک شرط دلار قرار گیرد.
شما برای لحاظ کردن این رابطه ی پله ای میتونین از دستور ifthen تو در تو استفاده کنین. تو سایت مثالاش هست.
یا اینکه از سایر روشها مث تعریف متغیر باینری جدید استفاده کنین.
من یه کد نوشتم که روی این قسمت ارور 143 میگیرم. میشه راهنمایی بفرمایید
integer variable d(i) rate of discount;
d(i)= if( x(i,m) B(i,M1) and x(i,m)<= B(i,M2)), Z(i,1) ;
else Z(i,2));
راستی یه سوال. من دو تا مجموعه به اسم i با اعضای /S1*S10/ و یک مجموعه m با اعضای /M1,M2/ تعریف کردم. میتونم همچین رابطه ایB(i,M1) تعریف کنم؟
و درضمن من درخواست یه پروژه رو براتون ایمیل کرده ام. دو روز گذشته و هیچ پاسخی از جانب شما دریافت نکردم
و اینکه table رو اینجوری تعریف کردم
Table B(i,m) limit of discount interval for supplier i in dollar
M1 M2
S1 26000 48000
S2 25000 50000
S3 23000 47000
S4 22000 46000
S5 25000 50000
S6 30000 45000
S7 26000 40000
S8 30000 60000
S9 28000 56000
S10 25000 56000 ;
میتونم تو یه محدودیت به شکل B(i,M1) بنویسمش؟
سلام
برای بخش اول سوالتون: شما همینی که به عنوان فرمول نوشتین رو باید و باید ببرین تو بخش equation . نمیشه این فرمولو برای متغیر به کار برد.
سوال دوم. i,m رو تعریف کنین. بله میشه. تا پیک زیر رو ببینید.
ترکیب مجموعه ها در گمز با مجموعه های دو بعدی
در مورد پروژه هم داریم بررسی میکنیم. امشب خبرش رو براتون ارسال میکنیم
سلام
من مدلم کودراتیک هست و متغیرهام صفر و یک هستند
سالور سیپلکس را انتخاب کردم و با خطای زیر مواجه شدم
*** CPLEX Error 5002: The objective is not convex.
*** Try Cplex option OptimalityTarget=3 to process non-convex models.
علتش چیه؟ باید چی کار کنم؟
ممنون می شم راهنمایی بفرمایین
سلام
تابع هدفتون غیر محدب هست. سی پلکس برای محدب ساخته شده و یه جاهایی هم توانایی حل غیر محدب هم داره. مث درجه دوها.
شما میتونین یه option تعریف کنین که تو اون OptimalityTarget برابر 3 باشه. و فایل رو فراخوانی کنین.
یا اینکه سالور رو عوض کنین.
مدل از نوع درجه دو هست؟
بله مدل درجه 2 هست. انجام دادم. این ارور را می ده
250 Unknown option. valid are -
LP = "lpname" ( This works for all other model types as well:
.
.
.
سالور دیگه چی می تونم استفاده کنم؟
سلام
منظورم از خطی کردن اینه که از روشهای خطی سازی استفاده کنین. یعنی به جای ضرب دو متغیر، یع متغیر دیگه بذارین و بقیه ی ماجرا.
دیدین مثلا میان قدر مطلق رو خطی بکنن میان از یه متغیر کمکی به اسم y و yprime استفاده میکنن. همین منظورمه
سالورای دیگه هم میتونین استفاده کنین
سلام.خسته نباشید.من یه برنامه داشتم که وقتی تو گمز ران می کنم به جای دادن مقدار بهینه این پیام رو میده:
unbounded soltion.a variable has reached ‘infinity’. large legal value is 1.00E+10
حالا من تمام پارامترها رو هم براشون کران تعریف کردم . باز این مشکل هست. به نظر شما مشکل چیه؟ با تشکر.
سلام
میتونین سالور رو عوض کنین. میتونین اون متغیری که مقدار زیادی میگیره رو شناسایی کنین و تقسیم بر یه مقدار خوواصش کنین که خیلی زیاد نشه (این متغیر معمولا تابع هدفه)
شایدم مدل شما واقعا جواب نامحدود داره. در این صورت مقداری باید مسئله رو مجددا بررسی کنین.
یه قانون تحقیق در عملیات: هر وقت جواب شما بی کران شد، مدل شما غلطه.
سلام . با تشکر از شما . در مورد بی کران بودن جواب تو سایت گمز دیدم نوشته متغیر ها و معادلات باید scalling شود. حالا وقتی scle می کنم و ران می کنم این پیام رو میده:
solve abroted
به نظر شما مشکل از چیست؟
متن پیام رو کامل بزنین.
این scale کردن هم همیشه که جواب نمیده. یه راهکاره که میتونین استفاده کنین. بهترین راه اینه که رو هدف فکر کنین مه چرا همچین رفتاری داره.
برای اسکیل کردن، پیشنهادم اینه فرمول تابع هدف رو تقسیم بر یه عدد خیلی بزرگ بکنین.
سلام من ارور 149 رو مشکل دارم
این کد رو میزنم ارور میده
sum(g$mapG(g,n),PG(g))-sum(l$mapSL(l,n),PL(l))+sum(l$mapRL,PL(l))
میگه کنترل نشده ست ولی من تعریف کردم همه رو
ممنون میشم کمک کنین
سلام
کد محدودیت رو کامل بذارین
با سلام
مشکل من حل شد.مشکل این بود ک معادله رو روی متغیر تعریف نکزده بودم ارور میداد
ممنون از رسیدگی شما
با ارزوی موفقیت
خواهش میکنم. و مرسی بابت بازخورد
اگر توی table که نعریف کردیم بخوایم مشخص کنیم برای یکی از سلول ها مقدار وجود نداره چی باید بذاریم؟ نباید از صفر استفاده کرد چون این مقداری که وجود نداره با صفر متفاوته. منظورم null است
باید یه عددی بزارین که محدودیت وقتی به اون میرسه اعمال نشه مثلا.
میتونین تو محدودیت شرط بذارین مثلا در صورتی که table ما عدد 1013 ر و نگیره. یا صفر نگیره. یا مثلا منفی نباشه. بعد تو جدول منفی بزنین. حواستون هم باید باشه کجا استفاده میکنین شرطا رو
سلام
من یه table تعریف کردم به این شکل
Table B(i,m) limit of discount interval for supplier i
M1 M2 M3
S1 300 900 +INF
S2 450 1000 +INF
S3 400 900 +INF
S4 700 1200 +INF
S5 600 1100 +INF
S6 650 1200 +INF
S7 800 1100 +INF
S8 700 1100 +INF
S9 750 1000 +INF
S10 650 1100 +INF ;
منظورم از ستون آخر این بود که مقادیر بزرگتر از ستون دوم به بعد رو شامل بشه.
برای مثال خط اول بشه مقادیر بیشتر از 900.آیا نحوه تعریف کردنم درسته؟ اگه خیر چجوری باید بنویسم؟
و اینکه اینجوری که تعریف کردم در یکی از محدودیت هایی که نوشتم ممکن در برخی شرایط این مقدار ستون سوم در صفر ضرب بشه که ارور 204 رو بهم میده و میگه ضرب +-infinity تعریف نشده است. چه کار میتونم کنم؟
سلام
چقدر بزرگتر آخه؟
یه دونه بزرگتر هم کافیه؟
در هر صورت میتونین به دو ستون اول عدد بدین، ولی برای ستون سوم فرمول بنویسین. اونم بعد از اتمام دستور table. یعنی محاسبه کنه خود گمز.
برای ارور هم بله. ارور میده. صفر در بینهایت نشدنیه.
منظورم از ستون عدد بزرگتر تا بی نهایته. نیازی به محاسبه نداره. مثلا اگر مقدار ستون دوم 900 باشه مقدار ستون سوم باید از 901 تا بی نهایت باشه. اینو نمیشه جوری نشون داد؟
منظورم بدون فرمول نویسی که فرمودیده
خب یعنی چی تا بی نهایته؟
اگه کارتون با 901 راه میفته، که همونو بزنین.
اگه نه که میتونین اون دوتا رو عدد گذاری کنین. برای بخش سوم هم یه فرمول زیرش بنویسین. بگین که یک عدد یکنواخت در بازه ی 901 تا مثلا 10000000. دیگه بستگی به کار شما داره
ببینید من میخوام برای مسئله ام یه تخفیف برای خرید بذارم. 10 تا فروشنده هستن که به ازای خرید از یه مقداری بیشتر درصدی تخفیف میدن. برای هر فروشنده سه سطح تخفیف وجود داره. یه table تعریف کردم که در هر ستون سقف بالای خرید برای هر سطح تخفیف رو نوشتم. برای مثال برای فروشنده اول اگر تا زیر 16000 تومن خرید کنند تخفیفشون صفره. اگر بین 16000 تا 30000 تومن خرید کنند تخفیفشون 20 درصده و اگر بیشتر از 30000 خرید کنند تخفیفشون 40 درصده. اینو توی table برای خط اول که فروشنده اوله برای ستون اول 16000 نوشتم. برای ستون دوم 30000 نوشتم. برای ستون سوم نمیدونم چی باید بنویسم.
من یه هینت به شما میدم که تو این مواقع بهتون کمک میکنه.
هر وقت دیدین یه مسئله بیش از حد پیچیده شد، روش برخوردتون با مسئله اشتباه هست. اینو بپذیرین از من.
این جدول خیلی به کار شما نمیاد.
شما باید یه متغیر تعریف کنین به اسم مقدار سفارش (اندیساش هم باید دقت کنین خلاصه). حدود رو باید به عنوان پارامتر یا جدل تعریف کنین. یه هزینه (یا تخفیف) هم باید به عنوان متغیر تعریف کنین.
پس میشه از همون ithen که داشتین استفاده کنین. یا راه خلاقانه ی دیگه ای
سلام . ممنون از راهنمایی هاتون . من یه محدودیت به شکل زیر دارم که وقتی تو گمز می نویسم خطای 203و8و409 میده. به نظر شما چطوری این مشکل رو حل کنم.
conditional111(t)$(ord(t)>1).. k(t)=e=ifthen(Wstore(t-1)>=max(0, Wstore('t25')-(25-ord(t))*Pstore(t)*0.9), Pstore(t)=g=Wbstore(t-1)-min(Wbstore(t), Wstore('t25')+(25-ord(t))*Pstore(t)/0.9)*0.9 and Pstore(t)=l=min(Wbstore(t-1)-max(0, Wstore('t25')-(25-ord(t))*Pstore(t)*0.9)),5);
سلام
فعلا کاری به خطایی که میده ندارم.
شما دستورا رو باید مقداری بهتر بنویسین.
تو ایمیل عرض کردم، محدودیتا رو جدا کنین.
چند نکته:
1- اون max که زدین رو باید خطی کنین. به اینصورت که max بین دو عدد (y) باید از هر دو عدد بزرگتر باشه. پس y>=0, y>=Wstore(‘t25’)-(25-ord(t))*Pstore(t)*0.9 میشه دو محدودیت جدید و اینکه به جای max باید بذارین y
2- شما محدودیتهاتون رو باید جدا کنین. این کار رو بر اساس شرط انجام بدین. بگین اگه این شرط برقرار باشه، اونوقت این حالت پیش میاد (اگه حالتای بیشتری هم پیش اومد، میتونین یه محدودیت دیگه هم براش بنویسین با همین شرط. پس الزاهما همه شرطها و فرمولها رو نباید تو یه خط بیارین. کار اشتباهیه.
نسخه دوم رو بنویسین که ببینم چیکار کردین
وقتی برنامه رو اجرا می کنم ارور 71 و 256 رو میده!
من یه متغیر اینجوری تعریف کردم
free variable expectedCost sum of cost obj function value;
بعد یه اکوئیشین اینجوری تعریف کردم
totalCost define objective function,
بعد تابع هدف اینجوری تعریف کردم
totalCost .. expectedCost =e= sum((i,m), (invCost(i)+ shipCost(i))* x(i,m))+ sum((i,m),((1-d(i,m))*unitCost(i)* x(i,m)))+ sum(i, F(i)*y(i));
و در انتها اینارو نوشتم
model robustSets/all/;
solve robustSets using MIP minimizing expectedCost;
display expectedCost.m, x.m ;
اصلا متوجه نمیشم این خطا برای چیه! میشه کمک کنید.
شما یه محدودیت تعریف کردین تو بخش equation ولی برای فرمولی ننوشتین، بعد یه مدل تعریف کردین به اسم روباست که همه محدودیتا رو شامل بشه. اون محدودیت رو حذف کنین اگه قرار نیست براش فرمولی بنویسین.
سلام .یه عبارت شرطی داشتم که تو گمز به شکل زیر می نویسم خطای 37و257میده به نظرتون ایراد کد کجاهست؟
energycondition1(t)$(ord(t)>1).. Wstore(t) $(Pstore(t) gt 0)=Wstore(t-1)- Pstore(t)/0.9;
سلام
عزیز یه مقدار خب دقیق تر نگاش کنین. اون علامت = باید به صورت زبان محدودیت ها تو گمز باشه. =e=, =l=, =g=
سلام.
من یه کد دارم می نویسم که توش 10 تا تامین کننده دارم که هر کدوم با توجه به مقدار سفارشی که بهشون تخصیص میدیم 3 سطح تخفیف میدن. مثلا تامین کننده اول اگر مقدار سفارشش زیر 500 باشه هر واحد محصول رو 15 حساب می کنه. اگه بین 500 تا 1000 باشه هر واحد رو 10 حساب میکنه و اگر بیشتر از 1000 باشه هر واحد محصول رو 5 حساب میکنه. فکر کنم اگه یه تامین کننده بود میشد با دستور if then else بنویسم. اما برای 10 تا نمیشه که هی تکرار کنم. میخواستم ببینم چجوری میشه بصورت جمع و جور اینو بنویسم؟ برای هر تامین کننده اون مقدار آستانه تخفیفش ( برای مثال برای تامین کننده اول 500 و 1000 بود) و مقدار هزینه هر واحدش متفاوته. میشه یه راهنمایی کنید؟
سلام
چرا میشه نوشتش با ifthen از ifthen تو در تو میشه استفاده کرد. شما به جای بخش آخر شرط ifthen، میتونین یه ifthen دیگه بذارین و تا اخر هم ادامه بدین.
c.. z=e=ifthen(x<2 and y>3,10,
ifthen(x>5 and y<10,20,z));
کار دیگه ای که میشه انجام داد اینه که از piecewise و متغیرهای sos استفاده کنین. مثلا حدود رو ضربدر یه متغیر باینری بکنین، به شرطی که مثلا یکیشون برابر یک باشه فقط
من متوجه منظور شما نشدم.
من این شرط رو برای تامین کننده اول باید بنویسم:
if (x(1) 500 and x(1)1000, unitPrice(1)=5;)
دوباره برای تامین کننده دوم :
if (x(2) 600 and x(2)1400, unitPrice(2)=4;)
و برای 8 تامین کننده دیگه هم همینا رو با مقادیر مختلف باید بنویسم.
باید برای هر کدوم هم یه محدودیت تعریف کنم. اینجوری که خیلی طولانی میشه! برای این یه راه کوتاه تر میخوام.
اگه اینجوریه که ساده تر از این حرفاست که عرض کردم.
فقط لطفا بگین که x ها متغیر هستن یا پارامتر؟
x ها متغیر هستند و unit price پارامتر هستند.
البته برای هر کدوم از تامین کننده ها من سه خط دستور نوشتم. نمیدونم چرا اینجا چرا فقط یه خط رو نشون میده!
مثلا برای تامین کننده اول: اگر مقدار x که به تامین کننده اول داده میشه کمتر از 500 باشه unit price 15 در نظر گرفته میشه. اگر بین 500 و 1000 باشه 10 در نظر گرفته میشه و اگر بیشتر از 1000 باشه 5 درنظر گرفته میشه.
برای 10 تامین کننده این سه خط با مقادیر مختلف باید نوشته شه.
سلام
شما باید unitprice رو هم تو گمز به شکل متغیر تعریف کنین.
بعد از ifthen استفاده کنین. البته میشه راه حل خلاقانه هم به کار برد.
unitprice(i)=e=ifthen(x(i)<=500,15, ifthen(x>500 and x<=1000,10 ifthen(x>1000,5);
خب اینجوری نمیشه نوشت. عددهای داخل if tnen برای هر کدوم از 10 تا تامین کننده متفاوته! مثلا اگه آستانه های مقدار x برای یه تامین کننده 500 و 1000 است برای یه تامین کننده دیگه 600 و 1300 ! اگه اینجوری بخوام بنویسم که باید 10 بار تکرار کنم!!!
و اینکه این unit price قراره توی تابع هدف به عنوان یه پارامتر استفاده شه که هزینه کل رو بدست بیاریم!
خب عزیز واسه آستانه هم اسم بذارین دیگه. a(i) و b(i) مثلا. یا یه همچین چیزی. یا دو اندیسه
unitprice باید متغیر باشه. چون شما از اول مقدارش رو نمیدونین. پارامتر یعنی چیزی که قبل از حل مدل هم معلوم باشه دقیقا چنده
سلام مجدد
اگر من unit price رو به شکل متغیر تعریف کنم بعد می تونم توی تابع هدفم استفاده کنم که مقدار x رو برای من مشخص کنه؟
دیگه باید دید هدفتون چی هست. اگه x گذاشته، شمام همونو بذارین، اگه unit زده، شمام همونو بزنین
سلام. من برای مدل سازی شبکه قدرت از این نرم افزار استفاده کردم. بعد ران شدن این مساله execution error داده و abort کرده اما اصلا مشخص نکرده که ارور کجاست که اصلاح کنیم. چاره چیه؟
سلام
پیام دقیقش چی هست
ارور 71رو چطور میشه رفع کرد؟
سلام
یه محدودیت تعریف کردین که براش فرمول ننوشتین.
سلام.
من کد مسئله ام رو در گمز زدم که و اغلب اندیسها در محدودیت ها شرطی ان و از علامت دلار استفاده کرده ام. وقتی ران میگیرم اروری نمیده اما میگه integer infeasible و وقتی چند تا از محدودیت ها رو در جواب چک کردم فهمیدم عبارات شرطی رو اندیس ها رو اعمال نکرده. مثلا:
در تابع هدف این عبارتو دارم:
((cost..z=e=sum((k,j)$(ord(j) gt 0),x('0',j,k)*f(k))+sum((i,j,k),c(i,j,k)*x(i,j,k
و در جواب:
cost =E= define objective function
(cost.. - 100*x(0,0,1) - 100*x(0,0,2) - 1000*x(0,0,3
و الی آخر…
یعنی مقدار صفر رو برای اندیس j لحاظ کرده. برای محدودیتها هم همین مشکل هست یعنی شروط اعمال نمیشن و برای همین جواب شدنی نمیده
چکار باید بکنم؟
ممنونم
سلام
به یاد داشته باشید که هیچوقت ord مربوط به یک اندیس برابر با صفر نمیشه. پس اگه اندیس j شما از صفر شروع میشه تا یه مقدار بزرگتر، و اگه نمیخواین که ord مربوط به اون صفر رو نگیره باید شرط رو به شکل زیر بنویسین:
ord(j) gt 0
با عرض سلامی دوباره
ببخشید من کد الگوریتم بندرز رو دارم. فقط نمیدونم اونو چطوری به برنامه ای که نوشتم اضافه کنم تا مدلم رو با بندرز حل کنه. در واقع دستورهایی که تو مدلم باید بنویسم تا کد بندرز رو فراخونی کنه رو نمیدونم.لطف میکنید اگه راهنمایی کنید.
سلام
عرض کردم مهندس، شما مفهوم بندرز رو تو مرحله اول باید یاد بگیرین، بعد برید سمت کد نویسی. بحثش خیلی طولانیه. باید خط به خط برید جلو. و با دقت زیاد
من بحث الگوریتم بندرزو کاملا بلدم(چطوری مساله رو به مسالهی اصلی و زیر مساله تقسیم میکنه و برشهای بهینه تولید میکنه و … ). حتی کد خود الگوریتم بندرز رو هم نوشتم. فقط نمیدونم تو یه مدل بهینه سازی که دارم چطوری کد بندرز رو فراخونی کنم و بگم با کد بندرزی که نوشتم مدل رو حل کنه! درواقع دستورات مربوط به قسمت فراخونی کد بندرزو تو مدلم نمی دونم؟
از کد آماده خود سایت گمز استفاده کنین پس.
باعرض سلام و خسته نباشید
ببخشید من کد یه مدل رو نوشتم و میخوام این کدرو با الگوریتم تجزیهی بندرز حلش کنم،
یعنی میخوام بدونم چطوری تو ادامهی برنامه بگم که این مدل رو با بندرز حلش کنه؟ در واقع چطوری کد بندرز رو در ادامهی برنامه اضافه یا فراخوانیش کنم؟ ممنون میشم اگه راهنمایی کنید.
سلام
کد بندرز یه رویه ی خاص داره. اونو باید یاد بگیرین. بعد کد کنین
سلام
من یه کد میخوام بزنم. که 10 تا تامین کننده دارم که بصورت زیر تعریف کردم:
set
i suppliers/S1*S10/
برای این تامین کننده ها یه پارامتر وجود داره که یه عدد رو به عنوان عملکردشون بهشون تخصیص میده.
حالا من میخوام مقدار یه متغیر x رو براشون مشخص کنم. که دو تا شرط رو رعایت کنه. اول اینکه اگر بیشتر از مقدار 1.200 بود مقدار x برای اون تامین کننده صفر در نظر گرفته شه. و شرط دوم اینکه هر قدر مقدار پارامتر عملکرد برای تامین کننده ای نسبت به بقیه تامین کننده ها بیشتر باشه بهش مقدار x کمتری هم تخصیص بده.
اینو چجوری باید بنویسم؟ میشم کدش رو برام بنویسید اینجا؟
سلام
مهندس شما قبل از کد نویسی باید مدل مناسب رو بنویسید.
باید اول فرض ها رو همینجوری که اینجا توضیح دادین بنویسین رو کاغذ، تو مرحله بعد باهاشون محدودیت بنویسین. محدودیت رو که نوشتین اینجا بذارین که کدشو با هم بنویسیم.
سلام مجدد
من کد کامل رو نوشتم. میخوام اون تیکه ای که گفتم رو به کدم اضافه کنم.
اینا هدف و محدودیت های من هستند:
totalCost ..
expectedCost =e= sum(i,(invCost(i)+ shipCost(i)+ unitCost(i))*x(i))+ sum(i,(F(i)*w(i)));
capacityLim(i) .. UCap(i)* x(i) =l= (Cap(i)+ (CapVar(i)*(0.52)));
demandLim .. sum(i,x(i))=g= dAvg+ (dSV * (0.52));
qualityLim .. sum(i,(quality(i)* x(i))) =l= QualityTol;
leadTimeLim..sum(i,(LT(i) * x(i))) =l= DeliveryTol;
suplim1(i).. x(i)=l=M*w(i);
suplim2.. sum(i,w(i)) =l= supnum;
هدف اینه که هزینه کل کمینه بشه. و برای ظرفیت و زمان تحویل و کیفیت و تقاضا هم یه سری محدودیت هایی در نظر گرفته میشوند. همچنین پارامتری با عنوان عملکرد تامین کننده ها وجود داره که اون موردی که گفتم رو میخوام اضافه کنم
خب عرض کردم. شما اول باید فرمول رو بنویسین. بعد کد کنین.
من درست متوجه منظورتون نمیشم. به هر حال این رو بصورت دستی نوشتم.آیا درسته و اون چیزی که میخوام رو انجام میده؟ ( برای راحتی 10 تامین کننده رو به 5 تا کاهش دادم)
set i/ S1*S5/
alias (i,j)
parameter performance / S1 2, S2, 3, S3 1, S4 0, S5 1/
if( performance (i)> performance (j) then x(i)< x(j))
خیر
اگه if بالا رو میخواین پیاده کنین، باینجوری درست نیست. باید تو مدلتون یه محدودیت تعریف کنین، مثلا به اسم c1 بعد اونجا این ظرط رو اعمال کنین. در ضمن، performance رو تو دستور parameter باید به صورت performance(i) تعریف کنین.
c1(i,j)$(performance(i)>performance(j)).. x(i)=l=x(j);
با سلام و خسته نباشید. ببخشید بنده نسخهی 64 بیتی گمز(24.7.3) رو دانلود کردم و همهی لایسنس هارو نیز روی برنامه امتحان کردم هیچ کدام از آنها جواب نداد. لطفا میشه بگید کدوم لایسنس با نسخهی برنامه ای که من دارم سازگاره؟ در ضمن همین کدبرنامه رو قبلا روی pc با نسخه های 32 بیتی حلش کردم مشکلی نداشت.
سلام
مقداری صحیح تر در سایت جستجو کنید. راهنمای نصب اینجا نوشته شده:
دانلود نرم افزار گمز
با سلام در مورد دستور زیر ارور 149 گرفته میشود، ممنون راهنمایی کنید.
totfeed(r).. eval(“tproduct”,cc)*(sum(cr, yeildc(cr,cc,r)*xcrop(cr,r))$ct(cc))+eval(“product”,cc)*(sum(rp,(Transport(cc,rp,r)))$ctr(cc))
+eval(“tproduct”,cc)*(importc(cc,r)$ct(cc)))=g= ereq(“livehead”,r)*xlive(“livehead”,r)
سلام
اروره کجا رو نشون میده
با سلام 6 ارور 149 برای کد گرفته شده.
سلام روی تعریف اندیس ها تون دقت کنید و ببینید که گمز در هر خط روی متغیرها و پارامترها کنترل داره یا نه. اگر نتونستین رفع کنید برای سایت بفرستین
سلام بابت این سایت خوب واقعا ممنون … خواستم ببینم یک عبارت شرطی در متلب چطور تعریف میشه؟ مثلا میخوام بگم که اگر x>y آنگاه z=8……ممنون
سلام ممنون
if(x>y, z=8;);
سلام
برنامه ران شد ولی خروچی نشان داده نمی شود.
ممنون میشم راهنمایی کنید
سلام
لایسنس دارید؟
آقای محمودی همانطور که شما فرمودین من فاصلهی بینشون رو برداشتم و دوتا ارور زیر ظاهر شدن:
1- the symbol shown has not been defined or assigned a wild shot: you may have suprious commas in the explanatory text of a declaration.check symbol refrence list.
2- ” Endogenous relational operations require model type “dnlp.
لطفا میشه راهنمایی کنین؟
سلام
سوال اولتون بر میگرده به اینکه شما هر معادله ای رو که تو equation تعریف میکنین، باید براش یه فرمول هم بنویسین.
سوال دوم، مدل شما احتمالا از نوع minlp هست.
با سلام آقای محمودی. خسته نباشید
با عرض پوزش آقای محمودی اون اشکالاتی رو که شما فرمودین رو اصلاح کردم و دیگه اون خطاهای قبلی رو نمیده خیلی ممنون. فقط دوتا ارور جدید به شکل زیر میده:
Error 53: endogenous $ operation not allowed
Error 256 : Error(s) in analyzing solve statement. more detail appears below the solve statement above.
این ارورها واسه چین؟ ممنون میشم راهنمایی کنید. واقعا از لطف شما به خاطر این همه وقتی که می گذارید سپاس گزارم.
آقای محمودی خطا رو پیدا کردم مربوط به معادله ای بود که به شکل زیر تعریف کرده بودم:
eq31(t)$T1(t) .. Sfr(t)$ ((Tetafr(t-1))>(Tetafrmax)) =e=1
در واقع میخواستم شرط بزارم اگر
Tetafr(t-1) > Tetafrmax
بود، مقدار Sfr(t) رو برابر با یک قرار بده. حالا نمیدونم این شرط رو چطوری قرار بدم. ممنون میشم اگه راهنمایی کنید.
سلام
eq(t)$T1(t)..ifthen(tetafr(t-1)>tetamax,1,0);
سلام یک جایی از کدتون $ استفاده کردین که نباید استفاده می کردین اگر این ارور را رفع کنید ارور بعدی رفع میشه.
سلام آقای محمودی. خسته نباشید
ببخشید آقای محمودی یه سوال داشتم. ارور 812 چیه؟
اگه راهنمایی کنین ممنون میشم. پیغام خطا هم به شکل زیر می باشد:
Error 812
Solve keys expected – USING MAX/MIN SCENARIO
سلام
هر چی که هست به دستور solve شما بر میگرده. احیانا شما دستور رو درست وارد کردین؟ یا اینکه شما درست نوع مدل رو زدین؟ مث mip و LP و اینا
اره. تا جایی که میدونم درست واردشون کردم.مدل هم متغیرهای پیوسته داره و هم صفرویک. دستور solve رو به شکل زیر وارد کردم:
solve Home energy using MIP minimizing J;
مقدار تابع هدف رو هم برابر J قرار دادم. به نظر شما دستورم اشتباهه؟
مرسی از لطفتون.
سلام
بین home و energy نباید فاصله باشه، به عبارتی، Modelname باید تمامی کاراکترهاش به هم چسبیده باشن
سلام
بنده سوالی پرسیدم الان هر چی سرچ میکنم کامنتم نیست
میشه عددی رندم با توزیع نرمال داشت. می
خواستم بدونم ایا تابعی در گمز هستش که تابع چگالی احتمال تابع توزیع
نرمال رو هم بده؟
البته دستور زیر تو راهنمای گمز دیدم اما گمز میگه نمیشناسمش
pdfNormal(x,MEAN,STD DEV)
ممنون میشم اگه راهنمایی بفرمایید
سلام
pdfnorm درسته
مثل
pdfnorm((inventory+del(k)),meandemand,stddevdemand))
سلام آقای محمودی. خسته نباشید. ببخشید یه سوال داشتم دستور عضو بودن تو گمز چطوریه؟ من میخوام بنویسم اگر x عضو y باشد یه کاری رو انجام بده!!! دستور عضو بودن نمیدونم چیه؟؟!!!
سلام
میتونین x رو زیر مجموعه y تعریف کنین. یا اینکه از مجموعه های دو بعدی استفاده کنین. به ببخش مجموعه ها برین. همه تاپیکا رو بخونین.
تعریف مجموعه ها در گمز
ببخشید من تاپیک مجموعه ها رو خوندم! در واقع تعریف مجموعه ها رو بلدم ولی میخواستم یه تابع شرطی تعریف کنم و بگم این شرطه به ازای x عضو y برقراره!!!!
یعنی اگه بخواهیم تعریف کنیم x عضو y هست. دستور اختصاصی عضو بودن تو گمز وجود نداره؟؟؟ یعنی دیگه x رو زیر مجموعهی y تعریف نکنیم! فقط بگیم x عضو y؟؟؟؟
سلام
یکی از قواعد کامنت گذاری رعایت این نکته هست که یک علامت تعجب هم ارز ده علامت تعجب هست و یک علامت سوال هم ارز ده علامت سوال.
چرا میشه یه همچین کاری بکنین. یکم خلاقیت میخواد. مثلا میشه با ترکیبی از شرط دلار، دستور ord و Uel و or و and یه همچین شرطی رو تولید کنین. چرا زیر محموعه تعریف نمیکنین شما یا چرا از مجموعه های دو بعدی استفاده نمیکنین؟
با سلام
من کد زیر رو توی GAMS نوشتم
eq60b(k,n)..n-dc(k)-res(k)=l=omegap(k,n);
و خطای ۱۳۳ رو میگیرم
میدونم به دلیل اینکه من n استفاده کردم، در صورتیکه باید تابع یی از n باشه، اما نمیدونم چطوری این کار رو انجام بدم
سلام
به جای n از ord(n) یا n.uel استفاده کنین. ببینید کدوم به کارتون میاد.
سلام آقای محمودی
خسته نباشید
ببخشید چطور میشه گفت: در هر دوره ای که x(t)>0 است، در اینصورت s(t)=0 قرار بده، با دستور ifthen نمیدونم چطور بنویسم چون
s(t)=ifthen(x(t)>0,0,……)
در اینصورت به جای … نمیدونم چی بنویسم.
با تشکر از سایت خوب و زحمات شما.
سلام
ممنون. میتونید به جای نقطه چین خود st رو بذارین
با عرض سلام و خسته نباشید
ببخشید آقای محمودی ارور ۶۶ و 256 مربوط به چی هست در سوالات کاربران قبلی چیزی ندیدم.
سلام
احتمالا برای یه محدودیت اسم گذاشتین و براش فرمول نذاشتین.
با سلام
قبل از هر چیز از زحمات و وقتی که میذارید تشکر میکنم.
من مشکل ارور 148 دارم
148 Dimension different – The symbol is referenced with more/less
این مشکل برای دو عبارت زیر پیش میاد:
actPF(i,t).. P(i,t)=e=v(i)*(sum(j,v(j,t)*((G(i,j)*cos(delta(i,t)-delta(j,t)))+(B(i,j)*sin(delta(i,t)-delta(j,t))))));
reactPF(i,t).. Q(i,t)=e=v(i)*(sum(j,v(j,t)*((G(i,j)*sin(delta(i,t)-delta(j,t)))-(B(i,j)*cos(delta(i,t)-delta(j,t)))))) ;
طبعاً این ارور برای اندیسها هست، ولی من چه تغییری باید بدم تا این ارور برطرف بشه؟
سایر اطلاعات لازم:
i از 1 تا 123
alias(i,j)
t از 1 تا 24
سپاسگزارم
سلام
V(i,j) را V1(i,j) بنویس
اگر delta ها یکی هستن i,j را alias بنویس یا اینکهdelta1(i,t) و delta2(j,t)
سلام آقای محمودی عزیز.خسته نباشید. ببخشید میخواستم بدونم توابع دو ضابطه ای رو چطوری باید تعریف کرد، کدش چطوریه؟ در واقع من میخواستم تابع زیرو تعریف کنم ولی کدشو نمیدونم! ممکنه لطفا راهنمایی کنید؟S(t ) تابع دوضابطه ای می باشد.با تشکر فراوان از زحمات شما.
S(t)=1 if T(t)>Tmax
&
S(t)=0 if T(t)>Tmin
سلام
ممنونم.
از تابع ifthen میتونید استفاده کنید، و سالور رو بذارین رو یه چیزی مث sbb
یا اینکه با یه خلاقیت این رو به دو محدودیت تبدیل کنین.
تابع ifthen اینجوریه:
c(t).. s(t)=ifthen(TT(t)>Tmax,1,0
این کدی که نوشتم دقیق نیست. شما باید یه همچین چیزی بنویسین. البته شرط کد بالا اینه که Tt و St جفتشون متغیر باشن. تودرتو هم میشه.
سلام آقای محمودی خسته نباشید
ببخشید من در کدنویسی پایان نامه ام به مشکل خوردم ،کدم را توی گمز نوشتم فرمول بندیشم درسته هیچ اروری هم گمز نمیدهد ولی جوابا نادرست است و گویا اصلا حلقه های شرطی و لوپ را اعمال نمیکند،آیا امکان دارد من فایلم را برای شما بفرستم خیلی زیاد نیست و کدنویسیشم سادست.
سلام مهندس محمودی عزیز،
ممکنه بفرمایید، هنگامی که طول جملات تابع هدف زیاد است چه باید کرد؟
خطایی که با آن روبرو شدم می گوید: طول جملات تابع هدف نباید بیشتر از 40000 باشد.
آیا باید از علامت .. برای انتقال بقیه جملات تابع هدف به خط بعد بهره گرفت؟
خطا 98 :
Error 98:
N0n-blank characters beyond Max input line (4000)
(check the end line ends with a carriage return)
مساله ام حل شد.
بسیار ممنونم از سایت کاریردی و مفیدتون.
همواره شاد و سلامت باشییییین.
سلام
خداروشکر.
ممنون و همچنین
سلام وقتتون بخیر
ببخشید من نمیدونم دستور زیر چه مشکلی داره که چندتا ارور بهش میده.ممنون میشم راهنماییم کنید
f('2')=e=sum(p$((ord(p)>=5) and (ord(p)=13) and (ord(p)=21) and (ord(p)<=24)),x(p))
سلام
از دستور and نباید استفاده کنین. از or یا xor و… استفاده کنید.
با عرض سلام خسته نباشید. ببخشید بنده یه سوال داشتم؟ یکی از محدودیتهای مدل بنده به شکل زیر می باشد:
eq81 (i,j) .. v(i,a(i,j))-q(i,b(i,j))=g=e(i,j);
a(i,j) و b(i,j) پارامترهای دو متغیره هستند که در این محدودیت به عنوان اندیس دوم متغییرهای v و q به کار رفته اند. با این حال چرا این محدودیت توی گمز ارور میده ؟؟
مشکل کار دقیقا کجاست؟ چطوری باید تعریفش کنم؟ با تشکر از سایت خوبتون.
سلام
ممنون
پارامتر دو متغیره چیه دیگه؟
و حالت ریاضی (جبری) معادله رو هم بذارین ببینم
ببخشید منظورم پارامترهای دو اندیسه بود!! i و j اندیس هستند. حالت ریاضی معادله به شکل زیر می باشد:
v (i,a i,j) − q(i,b i,j )= e (i,j ) , j ∈ J ,i ∈ N
(i,aij) و (i,bij) به ترتیب اندیسهای v و q هستند.
سلام
میتونین دو اندیس دیگه مثلا t1,t2 تعریف کنین. بعد مثلا بگین به شرطی که a مساوی با t1 باشه و b هم مساوی t2. یه همچین چیزی:
c(i,j,t1,t2)$(ord(t1) = a(i,j) and ord(t2)= b(i,j)).. v(i,t1)-q(i,t2)=e=e(i,j);
واقعا از لطفتون ممنون آقای محمودی.
حالا در اینجا من این محدودیت را با چه دستوری تعریف کنم تا به ازای یک i ای که در مرحله اول ثابت میگیره، t1 و t2 همزمان تغیر کنه! یعنی به ازای هر iای که میگیره t1 و t2 را همزمان تغییر بده؟ یعنی این طور نباشه که اول i و t1 را ثابت در نظر گرفته، فقط t2 را تغییربده؟؟؟
چیزی که من گفتم فقط یه پیشنهاده، شما میتونین هر خلاقیتی به خرج بدین
همزمانه. من نمیدونم منظورتون چیه در واقع. یه i,j میگیره و محدودیت رو اعمال میکنه دیگه
آخه میدونین من قبلا هم این محدودیت رو به شکل زیر تعریف کرده بودم ولی به جواب مطلوب نرسیدم:
eq1 (i,k,t,j) .. v(i,k)-q(i,t)=g=e(i,j)
در این معادله چیزی که برنامه خروجی میده در ابتدا i و k را در اولین مقدارش قرار میده و تا زمانی که شمارنده ی اندیس t پایان نپذیرفته است مقدار t و i رو تغییر نمیده!!! ولی چیزی که من در اینجا میخوام اینه که، به ازای اولین عددی که به شمارنده ی i در نظر گرفت، از آنجایی که تعداد اندیسهای k و t یکسان می باشد. اندیسهای k و t همزمان تغییر کند، یعنی طوری نباشد که ابتدا مثلا شمارنده ی t تغییر کرده و هنگامی که شمارنده اش به پایان رسید، تازه شمارنده ی k تغییر کند؟!!! امیدوارم منظورمو متوجه شده باشین!!!!
خب همون چیزی که من گفتم درسته دیگه. یه i میگیره، و بعدش یه j بعد طبق i,j ای که گرفته، میره a(i,j) رو میذاره تو t1 و b رو تو t2
دیگه همزمان هم هست
ببخشید منظورم پارامتر دو اندیسه بود!!! حالت ریاضی معادله به شکل زیر می باشد:
j ∈ J ,i ∈ N , v(i,a(i,j))-q(i,b(i,j))=e(i,j)
a(i,j) , b(i,j)
به ترتیب اندیسهای دوم متغیرهای v , q می باشند.
ببخشید آقای محمودی ولی منظور من این نبود!!! این چیزی گه میگید درسته! a رو میذاره t1 و b رو میذاره t2!!!! در اینجا من میخوام به ازای اولین i و j ای که میگره، t1 و t2 همزمان تغییر کنه!! یعنی اینطور نباشه که به ازای اولین i و j ای که گرفته، اول شمارنده t1 ثابت بمونه و تا وقتی که تمام شمارنده های t2 تمام نشدن تغییر نکنه!!! برنامه زیرو ببینید رانش کردم و اتفاقی که افتاده!!! ستون اول و دوم به ترتیب i و j هستند و ستون سوم و چهارم به ترتیب t1 و t2 !!!! همانطور که ملاحظه می فرمایید ابتدا t1 رو در اولین مقدارش(2) گرفته و ثابت نگه داشته و مقادیر t2رو که 1و3و4 هستش تغییر داده!!! و من نمیخوام این اتفاق بیفته!! میخوام هنگامی که t2 تغییر کرد، t1 نیز تغییر کند!!! واقعا از خدمتتون عذر میخوام، ببخشید خیلی اذیتتون کردم.
eq81(1,1,2,1).. v(1,2) - q(1,1) =G= 0 ; (LHS = 0)
eq81(1,1,2,3).. v(1,2) - q(1,3) =G= 0 ; (LHS = 0)
eq81(1,1,2,4).. v(1,2) - q(1,4) =G= 0 ; (LHS = 0
سلام
مهندس من متجه حرف و خواسته شما هستم. اینا به طور همزمان هست اگه یکم دقت کنین. یه i و یه j میگیره. بعد طبق این i,j به t شما عدد میده. اصلا به ترتیب ربطی نداره. کافیه شما a,b رو درست تعریف کرده باشین. و مطمئن هم باشین که این عمل t ها به طور همزمان هست. نکته دیگه اینکه شرط رو گذاشتین شما؟
c(i,j,t1,t2)$(ord(t1) = a(i,j) and ord(t2)= b(i,j)).. v(i,t1)-q(i,t2)=e=e(i,j);
خیلی ممنون از راهنمایی هاتون آقای محمودی. این دفه دیگه موفق شدم با راهنمایی های خوب شما حلش کنم.انشالله موفق و موید باشین.
خواهش میکنم.
سربلند باشین
سلام آقای محمودی عزیز،
آیا امکان آن وجود دارد که مقدار Gap را خودمان به سیستم بدهیم. برای مثال برنامه ای که اجرا شده با مقدار Relative Gap=0.07872 از بهترین کران پایین، به جواب بهینه رسیده است.
اگر بخواهم به مقدار دقیقتر یا بعبارتی Relative Gap یا Gap کمتری داشته باشم، راه حل پیشنهادی شما چیست؟
باز هم ممنونم از زمانی که برای پاسخ به پرسشها تخصیص می دهید.
سلام
شما با دستور زیر میتونید گپ رو روی هر عددی که مایلید تنظیم کنید. این دستور باید قبل از دستور solve قرار گرفته شود. جای YourModelGap گپی که مد نظرتونه رو بنویسین. ضمنا یه نیم نگاهی هم به زمان حل داشته باشین.
option optcr=YourModelGap;
سلام مهندس محمودی عزیز،
بسیار بسیار ممنوم از راهنمایی شما.
خواهش میکنم قربان
سلام
من شاخص ای تعریف کردیم به اسم t برای دوره زمانی 1 تا 6 ماه.
و یکی از داده های اولیه ام هست: موجودی اولیه (iv)برای محصول n ام .
واگه بخام دوره صفر هم تعریف کنم توی معادلات برای کران سیگما باز به مشکل بر میخورم چون کران سیگما از دوره t=1 شروع میشه نه از دوره t=0.
من چجوری این موجودی اولیه رو در گمز کد نویسی کنم؟
ممنونم از پاسختون
خودم به این شکل تعریف کردم که ارور میده.خطا 170 و610 و148 و 334
sets
/ n Productions /1*10
; /t Periods /1*6
parameters IV(n,t) initial inventory for product n
iv(8,0) 0.25/
iv(9,0) 1.8
iv(1,0) 105
;/ iv(5,0) 333
سلام
این طوری
sets
n Productions /1*10/
t Periods /1*6/;
parameters IV(n,t) initial inventory for product n
/8.1 0.25,9.1 1.8,1.1 105,5.1 333/
یا از دستور table استفاده کنی. وقتی شاخص هات از یک شروع شدن چرا 0 میزاری ؟
اخه توی سیگما من همچین جمله ای دارم
0=(Ft − Ht + Wt − W(t−1
وهمینطور این جمله رو
(3313=The initial worker level is 3313 workers (W0
این مقدار w0 رو به صورت اسکالر تعریف کنم؟
ببخشید بازم اینجا به مشکل برخوردم
سلام
اگه شما خیلی از این مقادیر اولیه در t=0 استفاده میکنید، میتونید یه t0 تعریف کنین که اجتماع مجموعه ی t با عدد صفر هست.مثلا:
sets
t0/0,1*10/
t(t0)/1*10/
بعد مثلا یه w دارین که متغیره ولی تو t=0 مقدار خواصی رو میگیره. میتونین به شکب زیر w رو تعریف کنین:
variable w(t0)
بعد تو محدودیت ها با خیال راحت از w(t) و یا w(t0) استفاده کنین. مقداری دقت کنین.
سلام
خسته نباشید
من یک متغیر با چند اندیس معرفی می کنم ولی برای اندیس دو بعدی خطای 122 رو میده.
یعنی نمیشه از اندیس دو بعدی استفاده کرد.
اندیس دو بعدی (e(l,f برای متغیر (Wmc(m,c,f,e,t
پیغام خطا one dimensional set expected
ممنون
سلام
خیر نمیشه.
این کار شما اشتباهه. متغیر رو به (Wmc(m,c,f,l,t تعریف کنین.
بعد تو هر محدودیتی که استفاده شد، بگین به شرط e(l,f) اعمال کن.
سلام
آیا میشه یه محدودیت رو توی if تعریف کرد؟
یعنی اگه مقدار فلان پارامتر انقدر باشه اونوقت فلان محدودیت در نظر گرفته بشه . در غیر اینصورت از فلان محدودیت چشم پوشی بشه.
سلام
if نمیشه. ولی ifthen میشه. و راه حل های خلاقانه
وااااای چقدر شما مهربان هستین.
بسیااار بسیار ممنونم از محبت شما.
من در سویس زندگی می کنم. کشوری در نهایت زیبایی. اما این پاسخ سریع و بی دریغ شما از هر مکانی زیباتر است و قابل مقایسه نیست.
خیلی خیلی سپاسگزارررم.
سلام
خواهش میکنم. امیدوارم که کارتون راه افتاده باشه.
من ادمی نیستم که از تعریف شندین خوشش بیاد. ولی اینکه این عمل من رو با واژه ی زیبایی، اونم در مقایسه با یه چیزی که فرمودین، ازش نام بردین، واقعا برام ارزش داره.
ممنون از شما
سلام و عرض احترام،
مهندس عزیز، ممکنه بفرمایید که چگونه می توان حداکثر زمان اجرای برنامه را در GAMS بیشتر از 1000 ثانیه تعریف کرد؟
ممنونم از زمانی که برای پاسخ، پرسشهای مورد اختصاص می دهید.
همواره شاد و سلامت باشین.
سلام
خواهش میکنم لطف دارین بزرگوار و همچنین.
شما دستور زیر رو به قبل از دستور solve وارد کنین. مشکل حل میشه. این 2000 زمانی هست که شما تعیین کردین مثلا.
option reslim=2000;
سلام
خسته نباشید
لطف می کنید درباره ی ارور 761 توضیح بدهید.
این ارور رو موقعی که از alias استفاده می کنم نشون می ده.
ممنون
سلام
شماره ارور رو یادم نیست الان. ولی احتمالا مجموعه چند بعدی الیاس کردین. اگه این نیست که متن ارور رو بنویسین لطفا
ببخشید آقای محمودی یه سوال دیگه داشتم؟
یه برنامه ای دارم وقتی ران میکنم خطا نداره ولی تمام متغیرهای باینری و پیوسته و همچنین مقدار تابع هدف رو صفر میده(مدل مینیمم سازیه) و پیغام زیر ظاهر میشه! لطفا بفرمایید مشکل چیه؟؟!!!
Space for names approximately 0.52 Mb
Use option ‘names no’ to turn use of names off
MIP status(103): integer infeasible
Cplex Time: 0.01sec (det. 12.07 ticks)
Problem is integer infeasible.
No solution returned
سلام
مدل شما نشدنی هست.
خیلی ممنون از پاسختان برای سوال قبلی ام. با عرض پوزش یه سوال دیگه داشتم.
تو یه برنامه ام میخواستم در یک محدودیت از سه تا اندیس استفاده کنم .ولی دستورش رو نمیدونم .اگه ممکنه لطفا راهنماییم کنید(کدشو اگه ممکنه بگین).محدودیت بنده به شکل زیر می باشد و i و j و k اندیس ها هستند:
v(i,k)-q(i,j)=e=e(i,j)
سلام
خواهش میکنم
مهندس فکر میکنم قبل از اینکه سوال رو بپرسید، مقداری تو سایت بگردید به جواب می رسید.
c1(i,j,k).. v(i,k)-q(i,j)=e=e(i,j);
خیلی ممنون.واقعا لطف کردین. شرمنده من حواسم نبود توی کامنتهای قبلی گذاشته بودین!
سلام. خسته نباشید. ببخشید بنده برنامه ای رو نوشتم و دوتا ارور زیر ظاهر شده است؟ چگونه این ارورها را رفع کنم؟
66 The symbol shown has not been defined or assigned
A wild shot: You may have spurious commas in the explanatory
text of a declaration. Check symbol reference list.
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
سلام
شما تو تعریف equation هر اسمی برای محدودیتا میارین، دقیقا معادلش باید معادله داشته باشین و بالعکس. همینو رفع کنین
سلام و خسته نباشید بابت سایت فوق العاده کاربردی و حرفه ای شما
بعد از اجرای کدم چهارتا خطای 141 میده. دلیلش چیه؟
و خطاها مربوط به خط آخر هستن
model vrp1/all/;
solve vrp1 using MIP minimizing z;
display x.l,o.l,q.l,z.l;
سلام
ممونم لطف دارین.
ارور 141 زمانی رخ میده که شما یه متغیر رو تعریف کردین، ولی تو معادلات استفاده ای ازش نشده و رفتین display هم کردین. پس منطقیه که ارور بده. چون هنوز عددی نگرفته
سلام
من یک کد نوشتم که گمز حل می کنه هیچ اروری هم نمیده اما دستور display آخر اجرا نمیشه و هیچ جوابی نمیده اما همون کد رو روی یک کامپیوتر دیگه که اجرا میکنم جوابها رو نشون میده !
میتونید راهنماییم کنید؟
سلام
لایسنس دارین؟ دو سه خط آخر process window از لایسنس صحبتی نکرده احیانا؟
با سلام و تشکر بابت راهنمایی هاتون
سوالی دارم ممکنه راهنماییم کنید
آیا محدودیتی که با شرط ifthen نوشته میشه، باعث میشه مساله غیرخطی بشه ؟(مثل حالتی که ضرب متغیر داریم)
مدل من mip هست که با غیر فعال کردن محدودیت زیر ران میشه اما وقتی محدودیت رو فعال میکنم خطای 57 و 51 ظاهر میشن و میگه نوع مدل dnlp هست
پیشاپیش از لطفتون ممنونم
C..x(f,’3′,t-1)-x(f,’3′,t)=e=ifthen(ord(t)>=tn and ord(t)<=tb,10,x(f,'3',t));
سلام
تشکر و خواهش میکنم.
در واقع از لحاظ جبری غیر خطی محسوب نمیشه این قضیه. ولی از لحاظ کد نویسی بله غیر خطی هست و باید با solver های مشخصی نظیر sbb حل بشه.
با سلام و تشکر
جناب محمودی سالور رو sbb گذاشتم اما متاسفانه باز همون پیام قبلی اومد.
سلام
دقیقا چی میگه پیامه؟
سلام
57:Endogenous relational operations require model type “dnlp”
51:Endogenous function argument (s) not allowed in linear models
سلام
نوع مدلتون رو درست بذارین
با سلام و تشکر
مدلم mip است و وقتی اون یه محدودیت رو غیرفعال میکنم ران میشه و جواب میده ولی وقتی اون محدودیت ifthen رو فعال میکنم خطاها میان
سلام
به ایمیل سایت ارسال کنین ببینم.
سلام و وقت بخیر
میشه بفرمایید ارور 66 و 256 مربوط به چیه و چه جوری باید رفعش کنم؟
اون خطی که ارور میده هم این هستش:
solve masterproblem using MIP Minimizing zmaster;
با تشکر
سلام
این ارورها رو توضیح دادیم تو تاپیک های همین بخش. چک کنین مجددا
خیلیییی خیلی ممنونم
سلام روزتون بخیر
من یه محدودیتی دارم که هم برای قسمت توانش و هم قسمت اندیساش ارور میده، ولی واقعن مشکلشو پیدا نمی کنم
محدودیتم اینه:
const7(n,kk,t).. sum(nn$(ord(nn) ge 1 and ord(nn) le ord(n)),(2**(n – nn))*z(nn,kk,t))=e=slack5(n,kk,t)+sum(nn $(ord(nn) ge 1 and ord(nn) le ord(n)),(2**(n – nn))*z(nn,kk+1,t));
که قبلش هم تعریف کردم :
;Alias(n,nn)
k/1*3/
kk(k)/1*2/
binary variable z(n,k,t);
خیلی ممنون میشم اگر راهنماییم کنید.
سلام
همینجوری خالی خالی نمیتونین اندیس رو تو فرمول استفاده کنین که. ord(n) رو بذارین مثلا. یا n.uel رو. ببینین کدوم بش میخوره
سلام
من یه متغیر از نوع positive تعریف کردم که در خروجی مقادیر عددی کامل جواب نمیده. همراه با خورده و اعشاره. چیکار کنم که خروجیم عدد رند داشته باشه و خورده اش حذف شه؟ نمیخوام نوع متغیر رو به integer تغییر بدم
سلام
اعدا اعشاری در گمز رو میتونین با option زیر به صورت integer نشون بدین (فقط نشون بدین، نه اینکه تعریف کنین همون چیزی که میخواین)
option decimals=0;
منظورتون از نشون دادن یعنی تو خروجی بدون اعشار باشه. درسته؟
من میخوام تو محاسبات هم به صورت integer اعمال بشه.
اون خط رو که گفتید اضافه کردم اما توی جواب تغییری ایجاد نشد.
درضمن من فقط میخوام اون متغیر مورد نظرم فقط بدون اعشار باشه و رو به بالا گرد شده باشه.
سلام
چیز خواصی به ذهنم نمیرسه. اگه رو به بالا رند میکنین، شاید استفاده از دستور ceil بد نباشه. این تابع میاد رو به بالا گرد میکنه.
فرض کنیم متغیر شما x هست که به صورت positive تعریف کردین ولی به صورت صحیح میخواینش. یه متغیر دیگه میتونین به اسم y تعریف کنین. که به صورت زیر تعریف میشه:
y=e=ceil(x);
بعد هر جا که x داشتین، به جاش y به کار ببرین. فک کنم روش مناسبی باشه
با سلام و تشکر بابت راهنمایی هاتون
مدل من minlp هست بعد از خطی کردن در قسمت solve نوع مدل را mip میزنم اما روش ارورهای 56-57و51 میده
56:Endogenous operand for * not allowed in linear models
57:Endogenous relational operations require model type “dnlp”
51:Endogenous function argument (s) not allowed in linear models
ممنون میشم راهنماییم کنید.
با تشکر
سلام
گویا پیام من جا افتاده
ممنون میشم راهنماییم کنید
سلام
مدل شما بین دو تا متغیر علامت ضرب توش داره. پیداش کنین
سپاسگزارم
با سلام
من یه چنین محدودیتی دارم ک A یک عدد بزرگه و به عنوان اسکالر تعریفش کردم:
YM(m,j)=l=sum((i,t),E(i,m,t))=l=(A*YM(m,j))
اما ارور 409 میده..
لطفا راهنماییم کنین ک A رو چطور تعریف کنم؟
ممنون
سلام
این چیزی که نوشتین باید به دو محدودیت تبدیل بشه. دو تا نامساوی نمیتونین بزنین تو گمز. اون هم تو یه معادله
با سلام
میشه بفرمایید خطای ۱۴۵چی میگه و چطور باید رفعش کرد؟
Set identifier or quoted element expected
E(r,j,t)..x(r,j,t)=g=1-M(1-v)
روی عدد یک داخل پرانتز ارور میگیره
این پیام رو ندید بگیرید
حل شد
چون علامت ضرب بعد m نذاشته بودم ارور داد
سلام،
ببخشید من یه سوال درباره سالور بارون داشتم. این سالور اگه مساله ما حالت نامحدود داشته باشه، اعلام می کنه که مساله unbounded هست؟یا اینکه میگه infeasible هست مساله؟؟یکی از دوستان من میگفت مساله ات چه نشدنی باشه چه بیکران، بارون فقط بهت میگه مساله نشدنیه، درسته این حرف؟
مرسی
سلام
پیامای زیاده میده. ولی در کل بله فقط میگه نشدنیه. کد زیر رو ببنید:
variable z;
z.lo=100000;
integer variable x,y;
equations
obj
;
obj.. z=e=x*y;
model mu /all/;
option minlp=baron;
solve mu us minlp max z;
display z.l,x.l,y.l
این کد رو وقتی ران کنین، میگه که no feasible solution was found در حالی که مدل جواب بیکران داره.
co5(i,j,t)$(ord(j)ord(i))..sum(p,alpha(p)*w(p,j,t))=l= q*z(i,j,t);
**** $409
سلام
دو تا ord به هم چسبیدن
سلام
من معادله زیر را توی گمز نوشتم ولی ارور میده میشه لطفا کمک کنید ببینم چطوری باید نوشته بشه؟
For g<8,i=1, n(g,t)=m(g,t)-d(I,t)+q(g,t)
set g /1*4/
t /1*7/
i/1,2/
variable
n(g,t)
m(g,t)
Q(g,t)
d(i,t)
equations
con1;
con1..sum(g$(ord(g)<8),n(g,t))=e=sum(g$(ord(g)<8),m(g,t))-d(i$(ord(i)=1),t)+sum(g$(ord(g)<8),q(g,t));
ارورها هم این ها هستند:
Uncontrolled set entered as constant
Dimension different
Unrecognizable item-skip to find a new started again
سلام
مهندس شما خط اول رو چرا نوشتین، این اساس گمز رو میبره زیر سوال. اول مجموعه ها رو تعریف کنین، بعد پارامترای n,m,q بعد فرمول رو که دوستور شرطی دلار توش هست رو بنویسین. اینجوری نمیشه
خط اول را توی گمز ننوشتم
اون معادله ای هست که میخوام توی گمز بنویسم
خط اول با ست شروع میشه
سلام
خط اول را توی گمز ننوشتم!!! خط اول معادله ای هست که میخوام توی گمز نوشته بشه!
سلام
con1(t,i).. sum(g$(ord(g)<8),n(g,t))=e=sum(g$(ord(g)<8),m(g,t))-d(i,t)$(ord(i)=1)+sum(g$(ord(g)<8),q(g,t));
ممنون از کمکتون مشکلم حل شد
سلام من در مدلم در یکی از محدودیت ها error با شماره 409
Unrecognizable item – skip to find a new statement
looking for a ‘;’ or a key word to get started again
احتراماً چگونه می تونم آن را رفع کنم
سلام
جایی رو که ارور میده رو بذارین اینجا
با سلام احتراما ارور را برای شما ارسال کردم راه حلی برای آن وجود ندارد
با سلام مجدد خدمت شما
توی ایمیل اشاره فرمودید که سالور رو عوض کنم، مثلا baron ، ولی من از sin و cos استفاده کرده ام و این سالور جواب نمی دهد، باید از dicopt استفاده کنم.
لطفا راهنمایی بفرمایید.
سلام
خب سالورهای دیگه ایی که برای مدل شما مناسب هستن رو هم امتحان کنین.
file/options/solvers
سلام من یه کد نوشتم(البته با کمک دوستان این وبسایت بی نظیر)،الان که اجراش میکنم به خطای زیر بر می خورم:
ERROR 409:
Unrecognizable item – skip to find a new statement
looking for a ‘;’ or a key word to get started again
همه سمی کالن ها و ویرگول هارو هم چک میکنم ایرادی نمی بینم!
مشکل چیه؟
سلام.
جایی که ارور داده رو بذارین اینجا
سلام.
مساله حل شد آقا/خانم محمودی عزیز.میخواستم بگم این پیامم رو ندید بگیرید!!!
بازم مرسی.
با سلام و تشکر بابت کمک های بی دریغتون
میشه بفرمایید ارور 154 چی میگه و برای رفعش چیکار باید کنم. نوشته
Set for ‘ord’ is not controlled.
سلام
این ارور معمولا به ترتیب اعدادی که تو مجموعه ها تعریف میشه بر میگرده. یا باید اینو اصلاح کنین، یا اینکه به جای ord(i) از i.uel استفاده کنین. ولی قبلش باید چک کنین که دقیقا این i.uel چی رو به شما نشون میده
سلام
خیلی خیلی ممنون
فقط میشه راجع به uel. یکم توضیح بدین
تو هلپ گمز مطلبی برای یادگیریش پیدا نکردم
خواهش میکنم.
کد زیر رو ران کنین. متوجه میشین.
set
i/1*4/
j/10,20/
parameter a(i),b(j);
a(i)=i.uel;
b(j)=j.uel;
t /1*12/
Alias (t,tt)
E(r,c)$(ord(tt)≤ord(t))..
sum(tt, Y(r,c,tt))=l=M*sum(t,X(r,c,t));
با سلام و تشکر بابت وقتی که میذارید
من اینجور نوشته ام که ارور میداد
که X و Y باینری اند و M هم عدد بزرگ است
سلام
مهندس این محدودیت سراسر اشتباهه.
وقتی سامیشن میزنین، معنیش اینه که یه t مشخص نیست که. یعنی سام اول روی tt های مختلف و سام دوم روی t های مختلف. نمیشه اینا رو مقایسه کرد. منظورم تو گمز نیستا. این محدودیت مشکل مفهومی داره
سلام ممنونم
بله اشتباه نوشته بودم خود محدودیت به ازای t داشت و نباید برای t سامیشن میذاشتم.اماچون محدودیت برای tt≤t برقرار است اینجور نوشتنش باز اشتباهه؟
E(r,c,t)$(ord(tt)≤ord(t)) ..
Sum(tt,Y(r,c,tt))=g=M*X(r,c,t) ;
وقتی قسمت$رو نمینویسم ارور ۱۵۴رو نمیده،ولی در اینصورت خودش برای tt≤t محدودیت رو اعمال میکنه؟
الان بهتر شد.
شرط رو ببرین تو سامیشن:
E(r,c,t) ..
Sum(tt$(ord(tt)≤ord(t)),Y(r,c,tt))=g=M*X(r,c,t)
شما فوق العاده این
چقدر زود جواب میدین ممنون
ببخشید اینقد سوال میپرسم
چجور بگم فاصله زمانی بین یک شدن دو متغیر x(f,j,t) و x(f,j+1,t) حداکثر سه ماه باشه،
متغیرx باینری است
خیلی بد تعریف میکنین یه محدودیت رو. ریز بنویسین. جوابش دسستون میاد
با سلام
محدودیت میخاد بگه که وقتی متغیر باینری x(f,j+1,t) یک بشه که حداکثر سه ماه از یک شدن متغیر x(f,j,t) گذشته باشه
سلام
والا مقداری فکر میخواد. فعلا وقت زیادی واسه فکر کردن روش ندارم. شما سعیتونو بکنین. تهش بدین چک کنم. فقطه دومی باید x(f,j,t-3) باشه احتمالا.
سلام
ببخشید من میخام یکی از پارامترها تو هر بار لوپ افزایش بدم مثلا 10 درصد 20 درصد منتهی ممکنه مثلا اگه تقاضا 15 هست بعد بشه 16.5 میخام که روند بشه..کد روند کردن رو چی بنویسم ؟
باتشکر
سلام
round(x)
اگه بخوایم گمز فقط یه محاسبه ای رو روی تعدادی ماتریس انجام بده و تو خروجی نشون بده توی solve چی باید بنویسیم؟ چون نه مینیمایزینگه نه ماکسیمایزینگ؟
سلام
هیچی ننویسین
کافیه display کنین اون پارامترا رو همین. متغیر هم نمیخواد تعریف کنین.
سلام.
میخوام بگم اگه یه مقداری از صفر بزرگتر بود اونوقت یه محدودیتی رو بررسی کنه ( چک کنه که مقدار یه پارامتر از یه میزانی بیشتر باشه) . آیا میشه؟ چون توی راهنمای کاربر گمز خوندم دیدم نمیشه تو خود if اکویشن تعریف کرد. چیکار میتونم کنم؟
سلام
اگه پارامتره که میشه. بگین:
c1(i,j)$(A(i) >=0)).. something;
اگه متغیره قضیه کاملا فرق میکنه
با عرض سلام و خسته نباشید خدمت شما
من مدلم رو با گمز کد زدم ولی بعد از run ، این پیفام رو داد :
464 MODEL crossdocking.ModelStat = 10.000
VARIABLE z1.L = 0.000 objective function1
با تغییر دادن داده های ورودی باز هم همین جواب بدست آمد. بنظر شما دلیلش چی میتونه باشه؟
سلام
modelstat در گمز 19 عدد مختلف میگیره که عدد 10 که برای شماست یعنی مسئله شما جواب عدد صحیح نداره. و نشدنیه. لینک زیر رو ببینید.
modelstat در گمز
سلام. یک سوال دیگر. ببخشید انقدر وقتتون رو میگیرم.
برای رفع خطای 1001 یا خطای مموری، قسمت ساپورت سایت گمز چند تا روش رو پیشنهاد کرده. من چند تاش رو که احتمال دادم به کارم بیاد رو اینجا میذارم. اگه امکانش هست میشه کاری که موراد زیر انجام می دهند و نحوه نوشتنشون تو برنامه رو توضیح بدید (ساختار نوشتنشون تو محیط نرم افزار)؟
1- Use the GAMS option solvelink 0
2- Conserve memory where possible (memoryemphasis 1)
3- (MIP) Let Cplex store information on disk (nodefileind 2 or 3 / workmem)
4-(MIP) Set option varsel to use strong branching (varsel 3).
5-(MIP) Turn off cut generation (cuts -1).
سلام
این کد رو به قبل از دستور solve و بعد از دستور model انتقال بدین:
$onecho > cplex.opt
threads 4
nodefileind 2
workmem 2048
nodesel 2
varsel 3
$offecho
بعد از این تعارف، خط زیر را به بعد از دستور model و قبل از دستور solve انتقال بدید، و به جای yourmodelname نام مدلتون رو بنویسین.
yourmodelname.optfile=1
سلام. خسته نباشید.
گمز برای مساله سایز کوچیکم عبارت Proven Optimal رو مینوشت. وقتی سایز رو زیاد کردم،Solution satisfies tolerances رو نوشت،واسه همین Option Optcr رو استفاده کردم و بهش مقدار یک دادم. به نظرتون نیازی به ابن کار بود؟ وقتی این کار رو کردم واسه بعضی از مساله هام خطای Unrecoverable error هم ظاهر شد. این خطا برای چیه؟
سلام
مقدار یک خیلی بزرگه
مقادیری نزدیک به صفر منطقیه
ممنون. Unrecoverable error برای چی ظاهر میشه؟ در حالی که وضعیت رو بهینه اعلام میکنه.
من این ارور رو فقط با out of memory دیدم. جای دیگه ای ندیدمش.
سلام و روز بخیر
من یه فرمولی تو برنامم نوشتم که در بعضی مواقع مخرج صفر میشه و ارور تقسیم بر صفر رو میداد. برای حل این مشکل مخرج رو بعلاوه اپسیلون کردم و نوشتم eps+ ولی الان هم باز ارور تقسیم بر اپسیلون میده. چه کار میتونم بکنم که مشکل تقسیم بر صفرم حل شه؟
البته از جمع کردن مخرج با یه مقدار خیلی کوچک مثل 0.00000001 هم استفاده کردم اما چون جواب قراره معکوس بشه زمانی که مخرج صفر است درست جواب نمیده و تبدیل به یک عدد بزرگ میشه.
میشه راهنمایی کنید؟
سلام
مطمئنین به همین محدودیتی که الان اصلاح کردین گیر میده؟ مشکل شاید از یه محدودیت دیگه باشه ها.
کد رو ایمیل کنین ببینم.
سلام
من کدمو اجرا می کنم و هیچ اروری دریافت نمی کنم. اما جوابی در خروجی بهم نمیده و این رو می نویسه
**** SOLVE from line 254 ABORTED, EXECERROR = 1
میشه راهنمایی بفرمایید
شما دستور solve رو احیانا نذاشتین تو loop?
نه اصلا. البته یه ارور میده که مثل بقیه ارورها قرمز نیست. آبیه. ارور 242
equations infeasible due to to rhs value
خب اینجا یعنی اینکه شما یه محدودیت دارین که به طور کاملا واضح نشدنیه. مثلا من میام فرض میکنم که x مثبت هست، ولی مجموع x ها رو میزارم بزرگتر از صفر. این یه ارور لاجیک هست و قبل از حل مدل شما گمز اینو فهمیده. ببینید خیلی زیاده این ارورا. اگه رفع نشد. ایمیل کنین ببینم.
سلام.
خطای 1001 یا همون out of memmory آیا قابل حل هست؟ مساله من مساله MIP هستش وقتی سایز مساله رو بالا میبرم این ارور رو میده.
سلام
کامنتای همین تاپیک رو بخونین.
خطای 1001 در گمز
به دوستان گفتید که برای خطای 1001 یک فایل رو براشون میفرستید که بذارند تو دایرکتوری. اگر ممکنه برای من هم بفرستید. و این که دایرکتوری گمز کجاست و چگونه باید توش این فایل رو بذازم.
ممنون
سلام
ایمیل بزنین براتون بفرستم. اینجا سیستم مدیریت محتوام اجازه آپلودش رو نمیده
ممنونم فایل op4 رو دریافت کردم. توضیح میدید که باید با این فایل چیکار کنم؟
سلام
این رو تو دایرکتوری بذارین و ران کنین مدلتون رو. اگه شد که خوبه. نشد دیگه واویلا. حل نمیشه. البته بگردین تو سایت ببینین چی کامنت گذاشته شده شاید اونا هم به دردتون بخوره.
دایرکتوری معمولا اینجاست:
Documents/gamsdir/projdir
سلام با تشکر از سایت خوبتان.
خطای 257 علتش چیست؟
سلام
این وقتی پیش میاد که قبلا ارور داشتین. اونا رو رفع کنین اول
سلام
تشکر از سایت خوبتون و وقتی که میذارید
ی سوال داشتم از خدمتتون
من مدلم رو ران که میکنم جوابی نمیده ارور خاصیم نشون نمیده فقط terminated due to licensing error اینو نشون میده
میشه بگید مشکلش چیه؟
سلام
لایسنس باید نصب کنین.
دانلود لایسنس نرم افزار gams
سلام من دو روز میشه که سوالمو گذاشتم. اما هنوز در انتظار بررسیه. اما به سوال بعد از من جواب دادید. چرا؟
سلام. من در مدلم متغیر Q را بصورت positive variable تعریف کردم و در قسمت محدودیت ها هم اونو بین دو حد بالا و پایین به ازای هر j تعریف کردم و حدهای بالا و پایین به ازای هر j را هم با پارامترهای L و U مشخص و مقداردهی کردم؛ ولی وقتی مسئله را حل میکنم خطا میده که devision by zero و چون Q در تابع هدف در مخرج قرار داده ینی Q صفر شده ولی با تعریفات من در مدل Q نمیتونه صفر بشه. مشکل از کجاست؟
با تشکر از شما
سلام
این به الگوریتم های سالور گمز بر میگرده.
پیشنهادم اینه که به اون مخرج یه مقدار خیلی خیلی کوچیک مثل 0.00001 اضافه کنین. مشکل حل میشه
سلام
ببخشید من متوجه منظورتون نشدم. چی رو اول هر خط بنویسم؟
من اول کد تو بخش Sets اینا هارو تعریف کردم
i suppliers/S1*S10/
j products/P1*P5/
e(i,j) / #i.#j/;
e(“S8″,”P1”)=no;
e(“S8″,”P2”)=no;
e(“S8″,”P4”)=no;
e(“S8″,”P5”)=no;
e(“S9″,”P4”)=no;
e(“S10″,”P2”)=no;
بعدش تابع هدف و محدودیت هام به اینصورت بود
totalCost .. expectedCost =e= sum((i,j), (invCost(i,j)+ shipCost(i,j)+ unitCost(i,j))* x(i,j))+ sum (i, F(i)*w(i));
capacityLim(i) .. sum(j,( x(i,j)* UCap(i,j)))=l= Cap(i) + CapVar(i) * (0.25);
demandLim(j).. sum(i, x(i,j))=g= dAvg(j)+ dSV(j)* (0.25);
qualityLim(j).. sum(i,(quality(i,j)* x(i,j))) =l= QualityTol(j);
leadTimeLim(j)..sum(i, (LT(i,j) * x(i,j))) =l= DeliveryTol(j);
که بعدش هرجایی که مقدار تخصیص داشت اون شرطی که شما گفتید یعنی $(e(i,j) رو اضافه کردم و فرمولا به شکل زیر شد:
totalCost ..
expectedCost $(e(i,j)) =e= sum((i,j), (invCost(i,j)+ shipCost(i,j)+ unitCost(i,j))*x(i,j))+ sum (i, F(i)*w(i));
capacityLim(i)$(e(i,j)) .. sum(j,UCap(i,j)* x(i,j)) =l= Cap(i)-(CapVar(i) * (0.25));
demandLim(j) $(e(i,j)).. sum(i, x(i,j))=g= dAvg(j)+ (dSV(j)* (0.25));
qualityLim(j)$(e(i,j)) .. sum(i,(quality(i,j)* x(i,j))) =l= QualityTol(j);
leadTimeLim(j)$(e(i,j))..sum(i, (LT(i,j) * x(i,j))) =l= DeliveryTol(j);
و حالا با اضافه شدن این شرط تو همه محدودیت ها و تابع هدفم ارور 149 رو دارم .
کجا رو اشتباه انجام دادم.
مرسی بابت وقتی که میذارید. بسیار ممنونم
سلام
ببخشید بابت تاخیر.
خب معلومه ارور میده.
تابع هدف شما به ازای مقادیری از I و J که نباید برقرار بشه که گفتین به ازای iوj هایی که شرط e رو دارن. این شرط رو ببرین تو خود معادله، مثلا اینجا:
sum((i,j)$e(i,j), (invCost(i,j)+
ممنون بابت جوابتون.
درمورد محدودیت هایی که به ازای i یا j هستند هم میتونم این شرط رو استفاده کنم؟ باز هم داخل معادله باید استفاده کنم؟
خواهش میکنم.
ببینید این قانون و سناریو برا این شرط هاست:
قانون: هر جا از دستورات شرطی استفاده شود، قبل از آن باید اندیس های مربوطه معرفی شوند.
پس اگر جایی مثلا محدودیتی دارین به ازای i برقراره ولی تو همون محدودیت sum(j دارین، باید شرط رو توی sum بنویسین، چون تو بخش equation specification اندیس j تعریف نشده.
expectedCost $(e(i,j)) =e= sum((i,j), (invCost(i,j)+ shipCost(i,j)+ unitCost(i,j))*x(i,j))+ sum (i, F(i)*w(i))
capacityLim(i)$(e(i,j)) .. sum(j,UCap(i,j)* x(i,j)) =l= Cap(i)-(CapVar(i) * (0.25));
demandLim(j) $(e(i,j)).. sum(i, x(i,j))=g= dAvg(j)+ (dSV(j)* (0.25));
qualityLim(j)$(e(i,j)) .. sum(i,(quality(i,j)* x(i,j))) =l= QualityTol(j);
leadTimeLim(j)$(e(i,j))..sum(i, (LT(i,j) * x(i,j))) =l= DeliveryTol(j);
اینا تابع هدف و محدودیت هایی که با اعمال اون شرط نوشتم و ارور 149 میده. مییشه کمکم کنید 🙁
اول هر خط هم بنویسین دیگه. مشکل از اونجاست. یه خط رو که ارور میده کامل بذارین اینجا
یه بار تنها کدی که شما نوشتید رو اجرا کردم. اما باز به اونایی که پشتیبانی نمیکنه تخصیص سفارش میده. بعد فکر کردم شاید باید این شرط $(e(i,j) رو هم بنویسم. تو همه فرمولایی که مقدار تخصیص توشون بود نوشتم. اما با ارور 149 مواجه شدم.
توروخدا کمک کنید. پایان نامم عقب افتاده 🙁
سلام
خب ارور 149 رو باید رفعکش کنین دیگه. خطی که ارور میده رو اینجا بذارین لطفا
سلام. کدی که شما گفتید رو اجرا کردم. اما همچنان مشکل دارم و باز تخصیص سفارش میده 🙁
خب باید تو همه محدودیتایی که لازمه این شرط ها رو هم بذارین. گذاشتین؟ چون اگه بذارین غیر ممکنه اشتباه تخصیص بده.
من 10 تا تامین کننده دارم و 5 تا محصول و فقط تامین کننده 8 محصول 3 و تامین کننده 9 محصول 4 رو پشتیبانی نمی کنده. این شرط گفته شده رو باید برای همه تامین کننده ها بنویسم؟ یعنی مشخص کنم هر تامین کننده چه محصولاتی رو پشتیبانی می کنه؟
و این شرط رو برای همه محدودیت هام تکرار کنم؟؟؟
سلام
نه لازم نیست برای همه تامین کننده ها بنویسین. کد زیر رو ران کنین، ببینید چه نتیجه ای میده. این کد همین مجموعه پشتیبانی شما رو نشون میده.
set i/i1*i10/
j/j1*j5/
e(i,j)/#i.#j/
;
e("i8","j3")=no;
e("i9","j4")=no;
display e ;
ببنید شرط باید جایی که لازمه به کار برده شه. مثلا شما یه متغیر دارین به اسم x(i,j,k) و i و j هم مث همون تعریفایی هستن که تو کد بالا نوشتم. وقتی این متغیر رو تو محدودیت به کار میبرین. این شرط $e(i,j) هم باید بنویسین. چون خود نرم افزار که اینو نمی فهمه.
سلام
من یه کد نوشتم که توی چند تا از جدول ها برخی پارامترها مقدار ندارند و توی جدول جای خالی گذاشتم و نباید برای اون ها در خروجی مقدار تعیین بشه. اما وقتی برنامه اجرا میشه در خروجی برای اونها هم محاسبه صورت گرفته و خروجی دارند. میشه راهنمایی کنید علتش چیه؟
سلام
یعنی چی تو خروجی براشون مقدار در نظر گرفته؟
اگه منظورتون متغیری هست که مربوط به این پارامتر میشه (شرط این پارامتر رو داره) باید شرط ها و فرمول ها رو درست کنین. ریز کنین محدودیت رو. ریز ریز. اندیسا رو تک تک بسط بدین…
کد مربوط به انتخاب تامین کننده برای چند محصول و تخصیص سفارش در زنجیره تامینه. همه تامین کننده ها همه محصولات رو پشتیبانی نمی کنند. در نتیجه توی جدوال مربوط به هزینه به این تامین کنندگانی که اون محصول رو پشتیبانی نمی کنند مقدار نمیدم و جاشون رو خالی میذارم. اما توی خروجی به محصولاتی که تامین کننده پشتیبانی نمی کنه هم مقدار سفارش تخصیص میده. متوجه منظورم شدید؟
سلام
بله مرسی بابت توضیحات.
اینکه مقداری ندین یا بدین مشکل رو احتمالا حل نمیکنه. شما از مجموعه های چند بعدی استفاده کنین. مثلا اندیس تامین کننده i باشه و اندیس محصول هم j
set E(i,j)/1.6/;
این یعنی اینکه محصول ششم توسط تامین کننده اول قابل پشتیبانیه. این مجموعه رو به عنوان یه شرط دلار باید تو محدودیت بذارین.
این پست رو هم بخونین
سلام.ممنون بابت راهنمایی های خوبتون
ارور ۱۲۱ set expected و ارور ۱۱۹ number (primary) expected رو میگیدچی میگن
ممنون.
سلام
لطفا ارور 119 رو گذاشتیم تو مطالب.
ارور 119 در گمز
ارور 121 در گمز هم باید چک کنین کجا باید اندیس میذاشتین و نذاشتین، دنبال یه ویرگول بیشتر هم بگردین خوبه. اگه نشد. خطی که این ارور رو میده بذارین اینجا
با سلام
من تو ران کردن مدل با سالور سیپلکس به ارور 1001 یا همون out of memory برخورد می کنم. کاری میشه کرد و اینکه چطور میشه از workmem استفاده کرد.
واقعا ممنونم
سلام
خب کارای زیادی باید انجام بدین که اگه سایز مسئله شما خیلی بزرگ باشه هیچکدوم جواب نمیدن! این یه اروره که خیلی اذیت میکنه ملت رو.
یه فایل براتو فرستادم. بذارینش تو بخش دایرکتوری گمز و مجددا ران کنین گمز رو. تو سایت هم بگردین. تو بخش کامنتا یه چند جا صخبت شده از این ارور
متاسفانه سیستم مدیریت محتوایی که استفاده میکنم اجازه نمیده این فایل رو آپلود کنم.
سلام. متاسفانه مشکل حل نشد و در gap 30% باز همون خطا رو دارم. تو قسمت قبلی دیدم یکی از دوستان گفنه بود که از option threads=0 استفاده کردن. اما این option واسه گمز ناشناخته هستش
سلام
تو بخشای مختلف سایت توضیح دادیم. این لینک براتون مفیده.
برطرف کردن خطای 1001 در گمز
با سلام ممکنه به من هم فایل op4 ر بفرستین؟ ممنونم
یا عرض سلام و تشکر از زحمات شما
ببخشید ارور 71 مربوط به چی هست؟
the symbol shown has been declared as an equation, but no symbolic equation(..) was found.hint – look for commas in the documentation text for the equation. use quotes around the text or eliminate the commas.
سلام
ممنونم.
دقت کنید که همه معادلاتی که در equation اسم براشون میذارین (مث c1) باید بعدش براشون فرمول هم بنویسین. (مث c1..). و بالکعس
سلام .من هم در ران کردن مدلم به ارر out of memory مواجه میشم امکانش هست برایم اون فایل op4 که برای دوستان گفته بودید را ایمیل کنید؟ یا راه حل دیگه ای برای رفع این ارر نیست؟؟
و اون کد option threads=0 بکار می اید در حل این ارر؟
ممنونم
سلام
لطفا یه ایمیل برا سایت بفرستین تا براتون ارسالش کنیم.
مفیده هر کاری که بکنین که cpu و ram بهتر بتونن کار کنن مفیده. بستگی به سایز مدل داره
سلام ببخشید چگونه باید به سایت ایمیل بزنم؟
سلام به ایمیل :
gamsbook.ir@gmail.com
پیامتونو بفرستین در صورتی که مشکل یا سوال داشتین به شماره ۳۳۲۵-۴۰۵-۰۹۱۹ زنگ بزنید
سلام باتشکر از سایت بسیار خوبتان و راهنمایی های عالی.
من به سایت ایمیل زدم که فایل op4 را برایم بفرستید ولی هنوز جوابی دریافت نکردم.ببخشید من خیلی عجله دارم پایان نامه ام عقب میافتد ممنون میشوم سریعتر جواب بدید.
سلام
ایمیلی نرسیده. براتون فرستادم الان. به همین ایمیلی که کامنت گذاشتین
باسلام ،ممنونم بابت فرستادن ایمیل و راهنمایی خوبتان،ببخشید دایرکتوری در گمز کجاست؟؟؟
سلام
معمولا
documents/gamsdir/prodir
سلام روزتون بخیر
کدی نوشتم که برای مقایسه دو گراف و پیدا کردن زیرگراف مشترک بینششونه ولی ارور
57 Endogenous relational operations require model type “dnlp”
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above
رو میده در حالی که مدل خطیه و متغیر ها عدد صحیح هستن
scalars sum1 “majmoo” /0/ , ppp “fixd”/1/ ;
SETS
I /1*9/
J /1*11/
K /1*9/
L /1*11/;
table G1(I,K)
1 2 3 4 5 6 7 8 9
1 0 1 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0 1
3 0 0 0 1 1 0 0 0 0
4 0 0 1 0 0 0 0 0 0
5 0 0 1 0 0 1 0 0 0
6 0 0 0 0 1 0 1 0 0
7 0 0 0 0 0 1 0 0 1
8 0 0 0 0 0 0 0 0 1
9 0 1 0 0 0 0 1 1 0
table
G2(J,L)
1 2 3 4 5 6 7 8 9 10 11
1 0 0 0 1 0 0 0 0 0 0 0
2 0 0 1 0 0 0 0 0 0 0 0
3 0 1 0 0 0 0 0 0 0 0 0
4 1 0 0 0 0 1 1 0 0 0 0
5 0 0 0 0 0 1 0 0 0 0 0
6 0 0 0 1 1 0 0 1 0 0 0
7 0 0 0 1 0 0 0 1 0 1 0
8 0 0 0 0 0 1 1 0 0 0 0
9 0 0 0 0 0 0 0 0 0 1 0
10 0 0 0 0 0 0 1 0 1 0 1
11 0 0 0 0 0 0 0 0 0 1 0
VARIABLES
x(I,J) tanazorenode
x2(K,L)
w( I , J , K , L ) tanazoreedge
z obj ;
binary variables x , x2 ;
EQUATION
cst(I)
cst2(J)
cst3(I,J,K,L)
cst4(I,J,K,L)
cst5(I,J,K,L)
zobj objectivefunc ;
cst(I).. SUM( J , x(I,J) ) =l= ppp;
cst2(J).. SUM( I , x(I,J) ) =l= ppp ;
cst3(I,J,K,L)$(ord(I)lt ord(K) and ord(L)lt ord(J)).. x(I,J) + x2(K,L) =l= ppp ;
cst4(I,J,K,L)$(G1(I,K)* G2(j,l)*w(i,j,k,l) eq ppp ).. w(i,j,k,l) =l= x2(k,l) ;
cst5(I,J,K,L)$(G1(i,k)* G2(j,l)*w(i,j,k,l) eq ppp ).. w(i,j,k,l) =l= x(i,j) ;
zobj.. z=e=sum (i, sum(j, sum (k, SUM( l , w(i,j,k,l) ))));
MODEL exm ” a graph compare model ” / ALL / ;
SOLVE exm USING RMIP MAXIMIZING z ;
کدتون درست نیست و ایرادات دستوری داره .
سلام وقتتون بخیر.ممنون از راهنمایی های خوبتون.من یه سوال داشتم .چطوری میشه سه تا سامیشن پشت سر هم رو کد کرد؟من سه تا سامیشن k,j,t دارم که به صورت زیر کد کردم ولی همش ارور 148 رو میده که معنیش اینه که آیتم با اندیس های کمتر یا بیشتری نسبت به آنچه در مجموعه ها تعریف شده ارجاع داده شده.درحالی که من همه ی اندیس های بکار رفته رو در sets آوردم.
z=e=sum(K,j,T),PR(k)*FJK(t,j,k)-CJK(t,j,k)*FJK(t,j,k)-CKJ(t,k,j)*FKJ(t,k,j)-CC(j)*FKJ(t,k,j)
سلام
تفاوت رو تو کد زیر ببینید:
sum(i,x(i))
sum((i,j),x(i,j));
تو خط دوم i,j تو یه پرانتز قرار داده شدن. شما اشتباه نوشتین.
سلام، در جواب گمز، متغیرهای باینری به صورت اعداد اعشاری نمایش داده می شود. علتش چیست؟
سلام
مدل شما کامل حل نشده. یا نشدنی هست و یا اینکه جواب تقریبیه. شما کد زیر رو قبل از دستور olve وارد کنید.
option optcr=0;
من کدی که گفتید را وارد کرده بودم، البته مقداری که به متغیر صفرو یک می دهد به اندازه 0.000006 است، که اگر ان را برابر صفر در نظر بگیرم درست می شود ولی میخواستم بدونم که اتفاقی نباشد و مدلم درست باشد.
اگه مدلتون mip هست از cplex و اگه مدلتون minlp هسیت از baron استفاده کنید
سلام،چه جوری میشه دو کد گمز را بهم لینک کرد؟(یعنی از خروجی اولی به عنوان ورودی دومی استفاده کرد؟)
سلام
خروجی اولی رو باید اکسپورت کنین تو یه فایل gdx، اکسل یا هر چیز دیگه ای. تو ادرس دهی دقت کنین
سلام کد من ارور 243 میده
objective is not variable
اما ثابت نیست تابع هدفم
ینی چی اخه جمع چنتا متغییره دیگه
سلام
شما باید متغیر تابع هدف رو به عنوان متغیر تعریف کنین، حد ثابت مثل fx براش نذارین و اینکه واقعا سمت راستش هم متغیر باشه
می بخشید من حالا خطای 8 میگیرم. آیا کسی می تونه من را راهنمائی کنه. ممنون
من در خصوص خط زیر این خطا را می گیرم:
Model AAA/all/;
سلام خطای 8 برای پرانتز هاست. یا پرانتز کم گذاشتین یا زیاد گذاشتین. در مورد پیام قبلیتون و توضیحی که دادین ممنون.
سلام مدل من ارور 243 ر ومیده
objective is not a variable
اما واقعا نمیدونم کجاس اشتباس یعنی چی این ؟
با سلام
مدلی در نرم افزار گمز نوشتم و ارور 275 رو نشون میده لطفاً در صورت امکان توضیحاتی ارائه بفرمائید.
با تشکر
با سلام. من وقتی یک table را به طور مستقیم وارد گمز می کنم مدل اجرا میشه ولی وقتی از طریق فایل GDX وارد می کنم در محدودیت ها صدق نمی کنه. مشکل از کجاست؟ با تشکر.
سلام
غیر ممکنه. ببینین فرقشون چیه
سلام و تشکر بابت وقتی که میگذارید .
من این کد رو به عنوان یک محدودیت توی برنامم نوشتم .
;(conste1(i,k,l).. x(i,k,l,m)*c(m)=g=b(i,k,l
ولی بهم دو بار این ارور رو میده
uncontrolled set entered as constant
قبلش هم اندیس های I , K , L , M رو در قسمت مجموعه ها وارد و تعریف کرده ام .
و همچنین (c(m رو هم در پارامتر ها تعریف کردم و با ازای هر m بهش مقدار دادم .
چیکار باید بکنم که اروره برطرف شه ؟
تشکر فراوان
سلام خواهش می کنم .
در محدودتتون روی m هیچ کنترلی ندارید. باید در conste1 ، m هم وارد کنید. یا اینکه با توجه به تعریف محدودیت روی m طرف چپ معادله تونو sum بگیرین روی m ها .
چه دقیق خانم رمضانی
با هم جواب دادیم :دی
😀
سلام
ممنون و خواهش میکنم.
conste1(i,k,l,m)..
مرسی از شما و همه دست اند کاران سایت خوبتون
سلام. شبتون بخير. براي رفع خطاي 184 و 194 بايد چي كار كنم
برای خطای 184 ، توی برنامه تون یک متغیر یا پارامتر مثلا x رو با دو ست مجزا تعریف کردین ! مثلا x(i) و x(j) . برای رفعش باید یا تغییر متغیر انجام بدین یا اینکه دو مجموعه i و j را با alias به هم ربطشون بدین.
خطای 194، هم میگه متغیر یا پارامتر دوباره تکرار شده ! اگه کارهای بالا رو گفتم انجام بدین این خطا هم رفع میشه.
با سلام،
در کد گمزی که من نوشتم خطای 148 و 171 چندین بار تکرار شده. میشه راهنمایی کنید که مشکل از کجاست و چه جوری باید رفعش کنم؟
با تشکر
سلام.
ارور 148 در گمز نشون میده که شما یه المنت رو تعریف کردین که چندتا اندیس داره، ولی وقتی همون رو به کار بردین تعداد یا نوع اندیساش فرق میکنه.
ارور 171 در گمز هم نشون میده که شما واسه اندیستون یه محدوده تعیین کردین ولی در عمل این دامنه رو نقض کردین.
آیا راهی هست بفهمیم این خطای 148 در کدام المنت هست؟
سلام
رو ارور قرمزی که بهتون میده دابل کلیک کنین. شمارو میبره به جایی که ارور میده و اینو یادتون باشه که هر جوری که پارامتر یا متغیر رو تعریف کردین، همونجوری هم تو ادامه کد استفاده کنین ازش.
سلام دوستان
من یه کد نوشتم که در مورد زنجیره تامین و تعداد تامین کنندگان است. اما جوابی که باید بده رو نمیده
totalCost .. Tcost =e= sum((i,j),(unitCost(i,j)+shipCost(i,j)+invCost(i,j))* x(i,j))+ sum(i,sum(j, F(i)));
capacityLim(i,j) .. x(i,j) =l= (capAvg(i,j) + (capSV(i,j) * 1.28))* v(i,j);
sumOne(j) .. sum(i, v(i,j)) =e= 1* y(j);
supplierGoal .. sum(j,y(j))=l=6;
باید تعداد تامین کنندگان رو کمتر از 6 عدد بده اما برای کل 10 تامین کننده بالقوه جواب رو بدست میاره. درواقع انگار دو خط آخر رو درنظر نمیگیره . حل می کنه.
کسی میتونه کمکم کنه؟
ممنون
سلام
تمامی y ها برابر یک میشن؟
بله. البته در خروجی y(j) رو نمیخوام. اما برای همه تامین کننده ها مقدار سفارش رو مشخص می کنه که نشون میده تمامی 10 تامین کننده بالقوه رو به جای انتخاب 6 تا از اون ها درنظر میگیره
بهترین کار اینه که مدلتونو در سایز خیلی کوچک دستی حل کنین و جواب هاشو با گمز بررسی کنید تا از صحت مدل اطمینان پیدا کنین یا اینکه داده های مدلتون تغییر بدین و ببینید کدام داده ها برای مدل شما مناسب هست. توجه هم داشته باشین این که مدل بد جواب میده ممکنه از نشدنی بودن مدل باشه. ببینید مدل شدنی هست یا خیر.
سلام خسته نباشد، ممنون از سایت خوبتون
یک کد گمز که برای مدل minlp نوشته شده رو با سالور dicopt اجرا میکنم و جواب هم میده البته به بهینه نمیرسه و best solution رو میاره ولی تو یه سیستم دیگه میگه infeasible هست علت چیه و چه طوری میشه تو سیستم دوم هم به جواب رسید؟ با توجه به اینکه هر دو سیستم از یک لایسنس و سالور استفاده میکنند و تنها سیستم اول 32 بیتی و دومی 64 بیتی هست.
سلام
نسخه باید به سیستم بخوره. مخصوص همون سیستم دانلود کنید، تو سایت هست
کلا واسه سایز بللا اون ارور رو میده سایز پایین فایل lst رو باز میکنه
بله همون ارور رو میده
خب گفتم بهتون، اون لینک رو دنبال کنید و اجراش کنید
سلام ببخشید من وقتی کد گمزم رو اجرا میکنم چون سایز برنامم بزرگه فایل lst رو به علت حجم زیاد باز نمیکنه چطور میتونم مشکل رو برطرف کنم؟
ز دستور offlisting واسه کم کردن حجم استفاده کردم همچنین limrow و limcol رو هم برابر صفر قرار دادم اما حجمش خیلی کم نشد
همون ارور parameter incorrect رو میده؟
سلام
lst رو با notepad++ باز کنین. کامل نشون میده براتون
با سلام
میخواستم بپرسم چطور میتونم محل ذخیره ی فایل های اجرایی رو از درایو سی به یه درایو دیگه تغییر بدم منظورم اینه که چطور میتونم که مسیر پیش فرضشو عوض کنم؟
ممنون
سلام
یکی موقع نصبش میتونین این کارو بکنین، یکی هم اینکه از مسیر زیر:
file\project\new project
با سلام خدمت شما
من برای حل مدلم با خطای زیر مواجه میشم
MIP status(108): time limit exceeded, no integer solution
Resource limit exceeded, no integer solution found.
پارامترها رو هم عوض میکنم مقادیر مختلف میدم ولی باز این خطا رو میده.اگه میشه لطفا راهنمایی بفرمایید اشکال از کجا میتونه باشه؟
با تشکر
سلام
گمز تا زمان توقف نتونسته هیچ جواب شدنی برای مسئله تون پیدا کنه. شما باید زمان توقف رو ببرین بالا اگه باز هم حل نشد، مدلتون نشدنی هست و مدل رو باید تغییر بدین مقداری که از این حالت دربیاد
ببخشید متوجه منظورتون نشدم من واسه سایزهای بزرگ هم باید اجرا کنم نمیتونم فقط واسه سایز کوچیک اجراش کنم
سلام من کد الگوریتم بندرز رو تو نرم افزار گمز نوشتم جواب کران های بالا و پایین واسه تمام سایزها با جواب حل مدل بدون استفاده از بندرز برابر میشه فقط واسه سایزهای بزرگ فایل با پسوند .lst باز نمیشه و یه پنجره باز میشه که توش نوشته
parameter is incorrect میخواستم ببینم مشکل چیه اما جواب ها رو که تو فایل gdx ذخیره می کنم درست هستند
ممنون
سلام
شما خروجی ای که دارین به گمز ادرس میدین مناسب نیستن. سعی کنین یه خروجی ساده ازش بگیرین. با همون دستور display
ببخشید error 87:parameter is incorect یعنی چی؟
سلام
این ارور مربوط به گمز نیست. این مشکل از ویندوز یا سخت افزار شما هست. اگه مشکل از ویندوز شما باشه دستورالعملی که در این لینک گفته شده رو دنبال کنید درست میشه. اگه نشد که مشکل سخت افزاری هست و نمیدونم باید چه بلایی سرش بیارین
من سر این خط از کد ارور 119- 37-143-141-149 رو میگیرم
whichSupplier.. if ( x(i,j) >= 0,
v(i,j)=1;
else
v(i,j)=0;
);
من سر این خط از کد خطای 119- 37-143-141-149 رو میگیرم. میشه بگید چرا؟
if( x(i,j) =g= 1,
v(i,j)=1;
else
v(i,j)=0;
);
سلام
وقتی متغیرتون میره تو دستور if این خطا داده میشه. شما از دستور ifthen استفاده کنید یا مدلسازی رو تغییر بدید
سلام آقای محمودی
خسته نباشید
چرا متغییرهای باینری بعد از اجرا کردن برنامه مقادیر غیر منطقی می گیرند(0 یا 1 نیست)
که باعث میشه جواب مساله هم درست نباشد؟
سلام
ممنونم
جواب به دست اومده برای شما منطقی نیست. پس دلیل نشدنی بودن مسئله شما هست. البته شرایط دیگری هم داره که این اوضاع پیش بیاد.
مدلتون رو اصلاح کنید این مشکل پیش نیاد براتون
سلام
ببخشید آیا امکانی تو گمز هست که داده ها رو از روی یک شکل بخونه ؟ مثل خوندن از روی فایل اکسل، کار من روی شبکه هاست، وارد کردن اطلاعات خیلی وقت گیره و باعث خطامیشه، دنبال روشی هستم که نیازی نباشه داده ها رو به گمز معرفی کنه، ممنون میشم راهنمایی کنید؟
سلام
نه. البته هیچ نه ای وجود نداره! میتونین انقدر تو فایل inc ریز بشین که همه چی باهاش خلق کنین. یا تکنولوژی gdx . ولی بهترین راه اینه که وقتی شما دارین داده ها رو وارد میکنین، همزمان باهاش شبکه رو هم کم کم رسم کنین. اینجوری از صحت شبکه هم مطمئن میشین. ممکنه فرمول نویسی تو اکسل خیلی کمک کنه
سلام ممنون به خاطر سایت خوبتون.
مشکلی که گفتم مربوط به جابه جایی دو حرف بود، من به جای نوشتن lenght نوشته بودم length. و با این وجود برنامه نه خطا میداد و نه جواب صحیح. یه سوال داشتم برای بهبود جوابهای یه مسئله راهکار خاصی، option خوبی می تونید بهم معرفی کنید. من برنامه ام را با روش شاخه و کران غیر خطی حل می کنم، جواب های داخل مقاله از جوابی که من به دست میارم خیلی بهتره، البته میدونم شاید مدل اونا بهتر بوده که جواب بهتری داده اما آیا آیتمی میشه معرفی کرد که مقدار جواب بهینه را بهبود بده؟
سلام
خوشحالم که میشنوم بلاخره یه جوابی گرفتید. یه جورایی واسه رسیدن به جواب مدلتون کد نویسیتون خیلی بهتر شده و کلی چیز یاد گرفتین.
اگه جوابی که به دست آوردین بهینه هست که نمیشه با کد کاریش کرد. چون جوابی که احتمالا به دست آوردن قطعی و دقیق هست. مدل باید تغییر پیدا کنه تا جواب تغییر داده بشه.
ممنونم از پاسخ شما.
راستش لایسنس رو دانلود کردم اما الان این خطا رو میده
integer infeasible
شما میدونید مشکل از کجاست؟!!!
مدلی که دارم آماده هست همه داده هاش رو دارم فقط برنامش رو نوشتم.
جواب خودش هم فیزیبل هست
سلام
مدلتون نشدنی هست، داده ها یا مدل رو باید تغییر بدین، تحلیل کنین مدل رو ببینین مشکل از کجاس
سلام وقت بخیر
من داخل برنامه ام یک جدول چند مقداری تعریف کردم،
اما موقع که برنامه رو اجرا می کنم مقدارش داخل محدودیت ها برنمی گردونه و اصلا نشون نمیده! این مقادیر صفر یا نزدیک به صفر هم نیستند، برای مطمئن شدن از این موضوع، داخل یکی از محدودیت ها اون ضریبی که مربوط به این جدول چند مقداریه رو حذف کردم و ضرایب دیگه رو نشون داد اما وقتی اون رو اضافه می کنم هیچی از اون قسمت محدودیت رو نشون نمیده! لطفا راهنمایی کنید که مشکل از چی می تونه باشه؟
سلام
احتمالا یا داره خلاصه میکنه و داره جمع میزنه با سایر عبارت های مشخص، یا اینکه ضربدر یهمتغیر میشه که متغیره اجبارا صفر میشه.واسه همین صفر رو نشون نمیده.
سلام.وقتتون بخیر
یه مشکل داشتم در ران کردن مدلم
ممنون میشم راهنماییم کنید:
متغیرهای مسئله بنده، integer هستند تعداد متغیرهای اینتیجر 64تا و تعداد قیدها هم 24 تا هست وقتی در نوشتن مسئله این متغیرها را integer فرض میکنم مسئله اجرا نمیشود و خطای License میدهد اما وقتی آن را positive میگذارم اجرا میشود!
مدل را هم mip درنظر میگیرم.
ممنون میشم اگر بفرمایید مشکل از کجاست
در ضمن نرم افزار بنده دمو هست اما گمان نمیکنم محدودیت های آن را نقض کرده باشد.
سلام
شما باید لایسنس نصب کنید. لایسنس رو از بخش دانلود نرم افزار گمز دانلود کنید
با سلام
من برای مدل حمل و نقل فازی یک مدل دادم و برنامه آن را با گمز نوشتم ولی در اجرا به قسمت تابع هدف ارور می دهد خواهشمند است با توجه به نیاز به ارایه برای پایان نامه خواهشمند است در این زمینه مساعدت بفرمایید.
با تشکر
مدل حمل و نقل فازی دو بعدی 3*3برای 0<α≤0.25
.
.
.
.
hazine.. sum((i,j),(((1-2*w+(1-4*w)*t(i,j))*c(i,j)*x(i,j)+2*w*c(i,j)*c(i,j)*x(i,j))/(1+(1-4*w)*t(i,j))+((1-2*w+(1-4*w)*v(i,j))*d(i,j)*y(i,j)+2*w*d(i,j)*d(i,j)*y(i,j))/(1+(1-4*w)*v(i,j)))=e=z;
model transportation /all/;
solve transportation using mip minimzing z
سلام
به در سمت چپ محدودیت در آخر یکپرانتز کم گذاشتید
مدل حمل و نقل فازی :
ببخشید من دوباره مزاحمتون شدم ولی مدل من خطای 125 میده و هر کاری میکنم برطرف نمیشه
ممنون میشم اگه کمکم کنید
.
.
.
قربان سری قبل هم که کل کدتون رو گذاشته بودید. وظیفه ما رفع ارور نیست که. ارور 125 میگه که وقتی شما یه اندیس رو تو sum استفاده کردین نباید تو sub-sum استفاده بشه. یا وقتی محدودیت به ازای i برقراره دیگه نباید رو i سامیشن ببندید
می خواستم فقط یه توضیح کوتاه بدم. من هم خطای 125 را داشتم خیلی شانسی برطرف شد. چون من اطلاعات زیادی ندارم. ببینید من ابتدا معادله را تعریف کردم
Equation
cons0(i,j)
بعد چند سطر پائین تر نامعادله (محدودیت) را نوشته بودم:
cons0(i,j).. sum((i,j),s1(i,j)*X(i,j)) =G=ss1A;
و خطا می گرفتم. پس عبارت بالا را به صورت زیر اصلاح کردم:
cons0.. sum((i,j),s1(i,j)*X(i,j)) =G=ss1A;
حالا دیگه خطا نمی داد. امیدوارم مفید واقع بشه
ممنون از راهنمائی های صبورانه تون
سلام .خسته نباشید
ببخشید من یک مدل minlp دارم،زمانی که برنامه رو اجرا میکنم حدود 100 ثانیه ی طول میکشه بعد این پیام رو میاره.
infesible solution.Reduced gradient less than tolerance
خواستم ببینم مشکل کار از کجا میتونه باشه
سلام
مدلتون نشدنی هست. مدل یا داده ها رو اصلاح کنید. احتمالا چند تا از محدودیت ها با هم تضاد دارن
با سلام
من یه مدل برنامه ریزی تصادفی دو مرحله ای دارم که پارامترهای تقاضا و زمان حمل و نقل تصادفی اند و بر اساس سناریو تعریف شدند. تو نوشتن کدش سوالم اینه که برای گرفتن هر کدوم از این سناریو ها از چه دستوری باید استفاده کرد. ممنون میشم اگه راهنمایی بفرمایید.
سلام
روش که زیاده و سوالتون کلی. معمولا از دستور Loop استفاده میکنن. شما دستور solve رو میذارین تو loop و هر بار که مدل حل میشه جوابش ذخیره میشه. میگم. بستگی به مدلتون داره. ممکنه نیاز به تعریف یه اندیس دیگه هم داشته باشین.
سلام
ببخشید آیا برای حل یک مسئله minlp نامحدب، لزومی داره که قید نامحدب را به محدب تبدیل کنیم؟
سلام
متأسفانه اطلاع دقیقی ندارم و درست نیست جوابتون رو بدم.
سلام
من وقتی مسئله minlp را با سالورbonmin چه با حل کننده غیرخطی ipopt یا counnue حل می کنم خطایی با این عنوان که converged to a point of local infeasibility .problem may be infeasible را میده. برای رفع این مشکل از limrow را یک مقدار خیلی بزرگ در نظر گرفتم بازم مشکل حل نشد. لطفا راهنمایی کنید.
سلام
limrow تأثیری رو مقدار بهینه نداره صفرفا جهت نمایش خروجی هست. شما مدلتون مشکل داره
سلام وقت بخیر
من یک مسئله minlp دارم که وقتی با هر سالوری حل کردم به جواب نشدنی رسیدم. وقتی قید غیرخطی را از مسئله حذف کردم و دوباره مسئله را اجرا کردم جواب داد، جواب حل شده گمز را داخل اون قید غیرخطی بررسی کردم ،مشکلی نداشت یعنی این جواب ها برای قید غیرخطی صدق می کرد فقط بعضی وقتها بین دو مقدار یک متغیر یک اختلاف چند صدمی وجود داشت، این قید غیرخطی تقریبا برای مسئله ام مهمه چون ممکنه هزینه را از اینی الان حل کردم کمتر کنه، سوال من اینجاست آیا روشی وجود داره که به گمز بگم تا این مقدار اختلاف را نادیده بگیر مثلا اگر متغیر من x باشه بگم x مثبت یا منفی 0.01 هم مشکلی نداره . یه جورایی میشه براش یک کران خطا تعریف کنم.
سلام
بله هست. ولی روشی که من پیشنهاد میکنم اینه که شما وقتی مثلا متغیر صفر و یک که دارید، اون رو همون صفر و یک تعریف کنید. تو مرحله بعد برای bound بذارید که مثلا از -0.99 تا 1.01
بعد تو مرحله بعد تایپ مدل رو بذارین rminlp به جای minlp . اینجوری احتمالا مشکل حل میشه.
سلام.وقتتون بخیر.مرسی از راهنماییهاتون.میخواستم بپرسم محدودیت زیر را میشه به صورت جداگانه هم نوشت؟
eq8 (m,t)$(ord(m)and ord(t)>1)..(-1)*q(t)=g=x(m,t-1)-u(m,t-1)+v(m,t-1)=l=q(t);یک بار کوچیکتر مساوی و یک بار بزرگتر مساوی؟با تشکر
سلام
مرسی و خواهش میکنم.
این محدودیت رو باید دوتاش کنین. یه دونه درست نیست.
مرسی آقای محمودی.وقتيکه به دو محدودیت تبدیلش میکنم پیغام ارور 409 میده.
خواهش میکنم. خب این ارور میگه که شما یه چیزی رو جا گذاشتین. یه چیزی شبیه سیمیکالون
سلام . چرا وقتی در قسمت معادله رابطه توان دو مینویسم ارور میگیره؟ باید در قسمت متغیرها دستور خاصی تعریف کنم؟ مثلا:p(g)**2 را ارور $149میگیره. یه سوال دیگه هم داشتم. ایا بین این طور نوشتن توان دو با این طور بیان فرقی وجود دارد؟ p(g)*p(g) ممنون از راهنماییتون
سلام،
تو گمز مقداری تفاوت داره بله. اگه p ممکنه اعداد منفی هم بگیره این توان ارور میده. شما همین p رو بذارین تو قدر مطلق یا abs مشکلی پیش نمیاد براتون
این مسئله که گفتم داخل گمز بدون روش لاگرانژ قابل حله ؟
وقتی داخل روابط توان دو داریم روش بهینه سازی چی میشه؟ mip؟
سلام
ممکنه حل بشه. معمولا شدنیه.
میشه minlp یا Nlp
ممنون از راهنماییتون
سلام. من یک مسئله دارم که در داخل کتاب با روش لاگرانژ بهینه سازی کرده. می خواستم ببینم چه جوری این روش رو داخل گمز میتونیم پیاده سازی کنیم. مثلا یه مثال اینجوریه:
f(x1,x2) = 0.25×1^2+x2^2 و قید مسئله هم به صورت w(x1,x2)= 0
و w(x1,x2)=5-x1-x2
این سوال با روش لاگرانژ به سادگی حل می شه و میخواستم واسه تمرین با گمز حلش کنم. ایا امکانش هست؟ میشه راهنمایی بفرمایین؟ ممنون
سلام. لاگرانژو خوب یاد بگیرین. این صفحه هم میتونه براتون مفید باشه. اینجا
مرسی از پاسخگوییتون. ولی این لینکی گذاشتید باز نمیشه.. نام نویسی کردم ولی پیغام میده شما مجوز کافی برای دسترسی به این برگه رو ندارید
سلام
خواهش میکنم. لینک اصلاح شد.
مثلا فرض کنید برای مجموعه i زوج مرتب هایی که تولید میشه به این شکل باشه:
(a1,b1) , (a2,b2) ,…, (a5,b5)
و زوج مرتب هایی که برای مجموعه j تولید میشه به این شکل باشه:
(aa1,bb1) , (aa2,bb2) ,…, (aa10,bb10)
میخوام این شرط برقرار باشه که:
a1,b1)≠(a2,b2) , (a1,b1)≠(a3,b3) , (a1,b1)≠(a4,b4) , (a1,b1)≠(a5,b5) , (a2,b2)≠(a3,b3) ,…, (a4,b4)≠(a5,b5)
و همچنین:
(aa1,bb1)≠(aa2,bb2) , (aa1,bb1)≠(aa3,bb3) ,…, (aa9,bb9)≠(aa10,bb10)
و همچنین:
(a1,b1)≠(aa1,bb1) , (a1,b1)≠(aa2,bb2) ,…, (a5,b5)≠(aa10,bb10)
مثلا مولفه a1 به تنهایی میتونه با هر مولفه ای مثل a2,a3,….aa10,b1,…,bb10 مساوی باشه ولی همزمان هر دو تا مولفه از یک زوج مرتب نباید با هر دو تا مولفه از زوج مرتب دیگه برابر باشه.
سلام
ببینید اینکه دقیقا چه استفاده ای میکنید دقیقا مشخص نیست. حالا من یه جوابی میدم تا ببینیم چی میشه.
فرض کنیم یه مجموعه i,j داریم به صورت زیر:
set
i/a1*a5,aa1*aa10/
j/b1*b5,bb1*bb10/
;
بعد یه مجموعه دیگه داریم به صورت E(i,j) که زوج مرتب باهاش ایجاد میکنیم و دستی زوجها رو تایپ میکنیم. مث مثال زیر:
set E(i,j)/a1.a4,aa2.b3,a5.bb10/
;
مثال بالا میگه که a1,b4 یه زوج مرتب هستن و aa2,b3 یه زوج مرتب دیگه. حالا تو مرحله بعد میایم بهشون عدد میدیم. فرض کنیم یه پارامتر داریم، که باید به هر کدوم از این زوجا یه عدد تصادفی بده. این کارو به شکل زیر میتونیم انجام بدیم:
parameter D(i,j);
D(i,j)$(E(i,j))=uniform(0,100);
این لینک هم براتون مفیده. اینجا
مرسي. اين لينك دوباره برميگرده به همين صفحه.
و اينكه جمله شرطيه كامله؟ يعني به D عدد تصادفي يكنواخت تعلق ميگيره اگه E…؟
لینک اصلاح شد مجدداً.
بله اگه E رو درست تعریف کنین بله
سوالمو اشتباه بیان کردم.
میخوام برای هر عضو مجموعه i زوج مرتب (a,b) رو بصورت یکنواخت تو بازه (100و0) تولید کنه و به همین ترتیب برای مجموعه j.
و اینکه کلا هیچ دو زوج مرتبی با هم برابر نباشه. فرقی نداره که هر دو تا زوج مرتب مربوط به مجموعه i هستند یا یکی مربوط به مجموعه i و یکی مربوط به مجموعه j.
در واقع نمیخوام هیچ دو زوج مرتبی تو فضا روی هم قرار بگیره
ببینین من منظورم اینه که به صورت مثالی اینو برام بنویسین. مثلا یه چندتا زوج مرتب بنویسین که ببینم مفهومش چیه. مرسی
سلام
اگر دو تا مجموعه i و j داشته باشیم و بخواهیم زوج مرتبی تعریف کنیم که مولفه اول مربوط به مجموعه i و مولفه دوم مربوط به j باشه، که هر کدوم از مولفه ها یه عدد تصادفی یکنواخت بین (0و100) باشه طوری که هیچ زوج مرتبی از این مجموعه ها با هم مساوی نباشد، چطوری نوشته میشه؟
برای کدی که من نوشتم ارور domain list redefined 184، و ارور 171 domain violation for set رو میگیره..
sets
i /1*5/
j /1*10/;
parameters
a(i)
a(j)
b(i)
b(j);
a(i)=uniform(0,100);
a(j)=uniform(0,100);
b(i)=uniform(0,100);
b(j)=uniform(0,100);
میشه راهنمایی کنید باید چیکار کنم؟
مرسی
سلام
شما میخواین کدوما با هم برابر نباشن؟ a(i) مثلا با کدوم برابر نباشه؟
یک متغیر باینری w با اندیس i معرفی کردم تو بخش متغیرها. اگر متغیر xi باتوجه به محاسبات مدل مقداری بزرگتر از صفر بگیره wi میشه یک و در غیر اینصورت صفر. محدودیت مربوطه رو به شکل نوشتم:
(co15 ..w(i)=e=ifthen((x(i)=g=(0+eps)),1,0
گمز ارور 149 میده مبنی بر اینکه برای یک مجموعه غیرقابل کنترل مقدار ثابت در نظر گرفتی. با توجه به اینکه تمام اعضای این محدودیت تو محدودیت های قبلی تعریف شدن و هیچ مشکلی نداشتن، میشه لطفا بفرمایید ایرادش چیه و چطور می تونم برطرفش کنم؟(در مورد ifthen هم مطمئن نیستم با توجه به کامتنای همین سایت نوشتم)
سلام
co15(i) رو یادتون رفته
سلام، در ران گرفتن از مدل خطای 7 ظاهر شد که به لایسنس گیر میداد، اون نسخه ای از لایسنس که برای مسائل سطح متوسط به بالا گذاشته بودید رو هم امتحان کردم ولی همچنان خطا پابر جاست.
سلام
احتمالا باید تاریخ سیستمتون رو بزنین رو 2004 تا مشکلتون رفع بشه
با سلام
در تعریف محدودیت ((sum(i,z(i,j))=e=sum(i,z(j,i
ارور 171 اعلام شد مبنی بر اینکه domain violation for set. من متوجه نمیشم چه تغییری باید ایجاد کرد.
پیشاپیش از پاسخ گویی شما سپاسگزارم
سلام
خواهش میکنم. شما بررسی کنید که محدودیت به ازای j برقرار باشه و همچنین اندیس های z هم قابل جایبجایی باشن
بسیار ممنونم. چطور باید این امکان رو براش در نظر بگیریم که اندیس های Z قابل جابجایی باشن؟
(پ. ن: i و j در واقع گره هایی هستن که انتقال بینشون صورت میگیره، ممکنه از i به j یا از j به i باشه)
کلا zij براش تعریف شدست و تو محدودیت ها باهاش مشکل نداره ولی از zji ارور میگیره.
این دو مورد رو هم اگه راهنمایی بفرمایید ممنون می شم.
1. وقتی سیگما تعریف میکنیم چطور می تونیم بگیم به ازای تمام j ها بجز صفر؟
2. وقتی توی set بازه ی j رو از صفر تا n تعریف میکنیم چطور میتونیم بنویسیم که سیگما روی j از j مساوی “یک” تا n حساب بشه؟
سوال اول: از دستور alias استفاده کنین وجدا جدا I و j رو تعریف نکنین، i رو تعریف کنین و j رو alias کنین. به بخش مجموعه ها مراجعه کنین.
سوال دوم: از دستورات شرطی استفاده کنین. جواب این سوال تو بخش معادلات به وفور مشاهده میشه.
سوال سوم: اینم همون سوال دومه. از دستور ord و دستورات شرطی استفاده کنین.
بسیار ممنونم
با سلام و خسته نباشید
من یه کد با گمز نوشتم و هنگامی که ران کردم جواب غیرمنطقی شد و علتش هم به این خاطر است که در قسمت جواب متوجه این error شدم . ممنون میشم اگه راهنماییم کنید. با تشکر.
Compressing row and column files.
Basis recovery file written to ‘.xxx’.
CPLEX Error 1001: Out of memory.
Consider using CPLEX node files to reduce memory usage.
CPLEX Error 1001: Out of memory.
=1
MIP status(109): error termination
Cplex Time: 6722.24sec (det. 1289519.23 ticks)
=2
=1
*** CPLEX Error 1001: Out of memory.
=2
=1
Fixing integer variables, and solving final LP…
=2
Presolve time = 0.31 sec. (11.98 ticks)
Insufficient memory for presolve.
CPLEX Error 1001: Out of memory.
=1
Fixed MIP status(0):
Cplex Time: 0.34sec (det. 16.82 ticks)
=2
=1
*** CPLEX Error 1001: Out of memory.
=2
سلام
این ارور مختص نرم افزار cplex هست، رفع کردنش احتمالا ممکنه. شما یه فایل با فرمت op4 رو باید تو دایرکتوری گمز ذخیره کنین بعدش دوباره مدل رو ران کنین. احتمالا مشکل رفع بشه. ی میل به ایمیل سایت بزنین تا براتون بفرستیم
سلام آقای محمودی.
منم یه همچین مشکلی برام پیش اومده.وقتی مدلم رو از روش TH به ازای آلفاهای مختلف حل میکنم همه جواب میدن الا برای آلفا برابر یک ، که خطای بالا رو میده.نرم افزارمم پاک کردم و دوباره نصبش کردم اما درست نشد.اگه با اون فایلی که گفتین مشکلم حل میشه لطفا برای منم بفرستید.
خیلی ممنون از شما و سایتتون.
سلام
چشم
یه ایمیل بهم بزنید که یادم بیفته.
اینکه قطعا جواب بده حتمی نیست. یه احتماله دیگه
ممنون از پاسخگویی شما
راستی از دستور option threads=0 استفاده کردم مدلم جواب داد.این دستورو برای مدلایی که جوابشون بدست میومد استفاده کردم دیدم جوابایی که با این آپشن بدست میان کمی تفاوت دارن.این دستور اصلا برای چی استفاده میشه؟الان من چیکار کنم؟برای بقیه مدلامم از این دستور استفاده کنم یا فقط برای اونی که جواب نمیداد؟
ببخشید که اینقد سوال میپرسما.سایت شما تنها سایتی هست که به سوالات گمز اونم در اسرع وقت جواب میده.و از این بابت از شما تشکر میکنم خیلی زیاد.
سلام
خواهش میکنم.
هدف سایت همینه. سوالامون رو بپرسیم و جوابشو بگیریم. تا جایی که بتونیم کمک میکنیم. هر جا هم بلد نبودیم میگیم بلد نیستیم دیگه. چیکارش کنیم.
این دستوری که نوشتین باعث میشه که به گمز دستور بدین که از تمام هسته های CPU سیستم شما استفاده کنه. و حرکت معقولانه ای انجام دادید. اگه جواب دقیق باشه نباید تفاوتی داشته باشن با هم جوابا. چک کنید که دقیق هست یا نه.
موفق باشید
با سلام و عرض خسسته نباشید…
من یه برنامه با گمز نوشتم…راستش نسخه گمز من 32 بیتی بود وا ین برنامه رو اجرا میکرد و مشکلی نداشت.بعد به خاطر اینکه مجبور بودم گمز و متلب رو با هم مرتبط کنم، مجبور شدم نسخه 32 بیتی رو حذف و نسخه 64بیتی گمز رو نصب کنم.بعد از کار وقتی برنامه رو اجرا میکن یه پیغام خطای عجیب میده که با پیغام خطای معمولی فرق میکنه…یه برنامه دیگه رو اجرا کردم ، مشکلی نداشت و برنامه به درستی اجرا شد.بعد برنامه اول رو که مشکل داشت با یه سیستم دیگه اجرا کردم ، توی اون سیستم که از نسخه گمز 24.2 استفاده میکنه کار کرد و هیچ خطایی هم نداشت…من خودم از نسخه گمز 24.1 استفاده میکنم.متن خطایی هم که میده بصورت زیر هستش:
gams: **** Error: Parameter error(s)
: Reading parameter(s) from “pchar”
: Reading parameter(s) from “C:\Users\Javad\Documents\gamsdir\projdir\$gms1.par”
: *** Error line 12: Value expected for key “InputDir”
: Finished reading from “C:\Users\Javad\Documents\gamsdir\projdir\$gms1.par”
: Finished reading from “pchar”
Exit code = 6
ممنون میشم اگه بنده رو راهنمایی بفرمایید…
سلام
لطفا کد گمز و متلب رو برام بفرستین. امتحان کردین که اگه نسخه گمزتون رو ارتقا بدین چجوری میشه؟
سلام و خسته نباشید
من چندتا سوال داشتم پرسیدم ولی انگار ثبت نشده سوالام
ممنون میشم راهنمایی کنید
1. مساله من چندهدفه هست و می خوام بدونم روش اپسیلون به چه صورت هست دقیقا؟آیا همین هست که یکی از توابع هدف به عنوان محدودیت در نظر گرفته میشه و کوچیکتر از یه مقدار اپسیلون قرار میگیره و در هربار اجرا مقدار اپسیلون رو تغییر میدیم؟
2. و اینکه با توجه به اینکه مساله چندهدفه هست، در هر اجرا چه جوابایی میده؟یعنی جواب اون تابعی که در محدودیت ها نوشتیم چطور به دست میاد؟و آیا مثلا در هربار اجرا یه تعداد جواب مثل جوابای پارتوی متلب میده؟
3. توی مسائل تک هدفه، توی ابعاد کوچک، معمولا جواب گمز با متلب برابره. توی مسائل چندهدفه به چه صورتیه؟چون متلبش جوابای پارتو میده.گمزشم نمی دونم آیا تک جواب میده در هر اجرا یا اینکه چند جواب پارتو. اگر چندجوابی هست، این برابری به چه صورتی به دست میاد؟(درواقع میخوام بدونم در نهایت چجور جوابایی بدست میاد)
ببخشید که این همه سوال پرسیدم. خیلی خیلی ممنون میشم توضیح بدین
سلام
تو کامنت قبلی عرض کردم جوابا رو. فقط جواب آخر (تک هدفه) اینه که اگه مسئله جواب چندگانه داشته باشه گمز این رو بهتون میگه ولی اینکه این جوابا رو بدست بیارین روش خواصی داره
مرسی از راهنماییتون.
فقط اینکه توی این کامنت گفتین روش خاصی داره، تک هدفه رو منظورتون بوده؟چون اینطوری که توی کامنت قبلی گفتین، اگه چندهدفه باشه خودش اون تعداد جوابارو میده دیگه؟مثلا ما می تونیم برای هر اجرا تعیین کنیم مثلا سه تا جواب بده یا توی اجرای بعدی 10 تا جواب بده.درسته؟
من نتونستم توی سایتتون روش اپسیلون رو پیدا کنم. واقعا ممنون میشم اگه قبلا توضیحی در موردش دادین لینکشو بهم بگید چون سوالام زیاده:(
خواهش میکنم.
بله تک هدفه منظورم بود. بله دقیقا، اینو شما تعیین میکنین چندتا جواب بده.
داریم رو متنش کار میکنیم. چشم حتما به زودی میذاریم آموزشش رو. منابع انگلیسی هم خیلی خوبن اگه انگلیسیتون خوبه استفاده کنین.
سلام ببخشید چطور میتونم ببینم مسالم جواب منحصر به فرد داره یا چندگانه؟ و در صورتی که جواب چندگانه داشته باشم با چه دستوری باید همه جواب ها را ببینم؟
سلام
گمز خودش این رو نمیگه. ولی روش های خلاقانه ای هستن که بشه این رو فهمید.
یکیش اینه که سالورها رو عوض کرد و نتایج رو مقایسه کرد.
یه روش میتونه افزودن محدودیتی خلاف جهت تابع هدف اولیه و بهینه سازی هدف ثانویه باشه.
یه روش اینه که تابع هدف رو ثابت میکنین و دوباره مدل رو حل میکنین و تغییرات متغیرها رو بررسی میکنین. اگه تغییر کردن چندگانه ست.
برای اینکه بخواین مجموعه جواب ها رو هم بدست بیارین راه حل ها فقط بر اساس خلاقیت و پروف های ریاضی هست.
سلام و ممنون بابت سایت خوبتون
خطای 246 objective variable is not a free variable یعنی چی؟
سلام
یعنی اینکه شما باید اون متغیری که قراره بهینه کنین (همونی که برابر تابع هدفتونه) رو به صورت متغیر آزاد تعریف کنین. free variable or variable
سلام با سپاس از سایت خوبتون
من یه دستور شرطی نوشتم و هنگام ران کردن با خطای 143(A suffix is missing) مواجه میشم . به نظرتون اشکال کارم کجاست؟
سلام
مشکل از اینه که شما تو جایی که باید از ویژگی هایی مانند l، .lo, .up, .scale, .fx و… استفاده کنین، نکردین.
مثلا مدل شما حل شده و بعد تو دستور display میخواین مقادیر بهینه متغیر تصمیم X رو تو خروجی براتون نشون بده. اگه فقط بنویسین display X این عمل دقیقا همین ارور شما رو میده، درستش اینه که .L رو هم بزنین.
سوالتون رو به عنوان تاپیک جداگانه مطرح کردم که بقیه هم استفاده کنن.
موفق باشین