سوال از جانب جناب محمدی:
سلام با سپاس از سایت خوبتون
من یه دستور شرطی نوشتم و هنگام ران کردن با خطای 143(A suffix is missing) مواجه میشم . به نظرتون اشکال کارم کجاست؟
پاسخ به جناب محمدی:
مشکل از اینه که شما تو جایی که باید از ویژگی هایی مانند l، .lo, .up, .scale, .fx و… استفاده کنین، استفاده نکردین.
مثلا مدل شما حل شده و بعد تو دستور display میخواین مقادیر بهینه متغیر تصمیم X رو تو خروجی براتون نشون بده. اگه فقط بنویسین display X این عمل دقیقا همین ارور شما رو میده، درستش اینه که .L رو هم بزنین.
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
با عرض سلام خدمت شما
من یک کد گمز نوشتم که خطای 222 می دهد.میشه لطفا راهنمایی بفرمایید چطور حلش کنم؟
سلام وقت شما بخیر
کدوم خط ارور میده؟
با عرض سلام خدمت شما. خط 7 خطا میده
سلام و ادب
کجا یعنی؟
سلام وقت بخیر من مدلی رو نوشتم متاسفانه در 3 تا خط داره ارورهای مشابه 143 و 36 میده
riskDef..
totalRiskPos =e= sum((i,j), R_fuel_price(i,j) * sigma_price(i,j) * x(i,j));
totalRiskNeg =e= sum((i,j), -R_fuel_price(i,j) * sigma_price(i,j) * x(i,j));
totalRiskAbs =e= sum((i,j), R_operation(i,j) * x(i,j));
totalRisk =e= totalRiskPos – totalRiskNeg;
چجور باید حلش کنم
ممنون میشم کمکم کنید
سلام وقت بخیر
شما باید برای هر معادله بالا یک اسم تعریف کنید، اما شما فقط یک اسم برای هر چهارتا گذاشتین.
سلام و وقت بخیر،
ممنون از وقتی که اختصاص میدین برای پاسخ به سوالات،
بنده یه متغیر 0 و 1 رو به این صورت تعریف کردم:
binary variable
ssp(j);
ssp(j$sum((f,r),ut(f)*H(f,r)*A(r,j))>=(pd(j)-pd1(j)))=0;
ssp(j$sum((f,r),ut(f)*H(f,r)*A(r,j))<(pd(j)-pd1(j)))=1;
وقتی مدل رو اجرا میکنم خطای 143 (A suffix is missing) میگیرم، ممکنه راهنمایی بفرمایید؟
سلام ممنون
کدوما متغیر هستن؟ توی شرط های دلار$ نباید متغیر بیاد.
ممنون از راهنماییتون، بله درسته، pd1(j) متغیر هست، الان میشه راهنمایی کنید با وجود این متغیر چطوری میتونم مسأله رو تعریف کنم؟
باید خطی سازی بشه.
روش زیر مناسبه:
ممنون از راهنماییتون، ولی درست متوجه نشدم که چجوری باید این بخش رو وارد کدم کنم، جسارتاً کد رو براتون ایمیل کردم، خیلی ممنون میشم اگه یه نگاهی بهش بندازین ، سپاس فراوان !!
سلام استاد
من یک مدلسازی MIP دارم
دوتا از محدودیتهام به صورت زیر هست :
که در این محدودیتها Cj و Ej و Tj متغیر هستند و d یک پارامتر ثابت هست.
میشه راهنمایی کنید که این محدودیت رو باید به چه صورت بنویسم؟
سلام
معمولا این جریمه ها تو تابع هدف مینیمم سازی استفاده میشن.
بنابراین به نظر من همین دو تا محدودیت کافی هست:
که در اینجا الفا و بتا پارامتر جریمه به ازای واحد دیرکرد و زودکرد هستن. E,T هم مثبت تعریف میشن.
سلام، وققتون بخیر
من با توجه به مسئلم یک رابطه ای داشتم که در واقع باید یک متغیر تصمیم رو در یک پارامتری ضرب کنم که به صورت table تعریف کردم و در نهایت حاصل ضرب او دو مورد رو در خروجی نشون بده
HR(i,s)=x(i)*Pr(i,s);
در واقع x متغیر تصمیم ، pr پارامتری که به صورت table تعریف شده و hr خروجی هست که میخوام نمایش بده
چه جوری و کدوم قسمت کدم باید وارد کنم؟ ممنون میشم راهنماییم بفرمایید
سلام
فرض میکنم که بعد از دستور solve این فرمول رو نوشتین.
باید x رو بصورت x.l(i) بنویسن که در اینجا .L مقدار بهینه x رو نشون میده که تا الان به دست آورده
یک توزیع پواسون با میانگین
Landa(i)=[((a(i)/teta)**beta)- ((b(i)/teta)**beta)]
داریم.بتا و تتا پارامتر هستند و a,b(i) متغیرهایی هستند که با دیگر محدودیت ها ی مدل بدست می آیند. می خواستم با استفاده از توزیع پواسون 20 تا عدد تصادفی تولید کنم.با استفاده از چی این مشکل حل میشه؟
سلام
سوالتون ممکنه مشکل داشته باشه. کی و کجا میخواین پواسون تولید کنین؟ اگه تو محدودیت هاست، که امکانش اینجوری وجود نداره. اگه قبل از محدودیت ها هست، میشه اینکارو کرد.
به ایمیل سایت ارسال کردم. بسیار بسیار ممنونم
باسلام و سپاس
آیا کد ارسالی به دستتون رسید؟
سلام
بله دیدم و یادم رفت. لطفا چند روز دیگه یه پیگیری بفرمایین.
سلام.
هر وقت که فرصت داشتین میشه کد رو چک بفرمایید؟
واقعا ممنونم از لطفتون
با سلام. ممنون از سایت بسیار خوبتون. مثل همیشه هروقت به مشکلی در GAMS برمیخورم که خودم از پسش بر نمیام، از شما کمک میخوام. این بار مشکلم در نوشتن لوپه. من یه الگوریتم آزادسازی لاگرانژ رو درGAMS کد کردم، در انتهای الگوریتم نیاز دارم که ضرایب لاگرانژ برام محاسبه بشه. ضرایب لاگرانژم هم به صورت گاما و با دو اندیس تعریف کردم.
برای محاسبه هر کدوم از ضرایب به ازای دو اندیس i ; l ، باید یک شرط چک بشه.
من در واقع داخل لوپی که به ازای این دو اندیس i وl نوشتم، باید مقدار هر کدوم از ضرایب رو چک کنم که فکر میکنم باید از suffix استفاده کنم. کد رو به این صورت نوشتم. از () suffix gamma.l که استفاده میکنم، خطا میده، بدون suffix هم جواب های غیرمنطقی میده. یعنی همه گاماها رو صفر میگذاره انگار در هر تکرار مقدار گاما رو اصلا ذخیره نکرده.
خیلی ممنونم از وقت و تخصصی که میذارین.
loop(l,
loop(i,
if (sum(r,z.l(i,l,r))>y.l(i),
gama(i,l)=gama(i,l)+stepsize;
else
gama(i,l)= max(0, gama(i,l)-stepsize);
);
);
);
سلام
خواهش میکنم.
گاما پارامتره یا متغیر؟ stepsize چی؟
stepsize یه مقدار اسکالره که در تکرارهای مختلف میتونه مقدارش تغییر کنه، مثلا طبق شرایطی، مقدارش نسبت به تکرار قبل نصف بشه.
گاماهم پارامتره که در ابتدا مقدارش صفر در نظر گرفته میشه و در هر تکرار مقدارش بر اساس اینکه محدودیت ریلکس شده، نقض شده یا نه، یا با stepsize جمع میشه یا از اون کم میشه.
ممنونم
لطفا کد رو ارسال کنین به ایمیل سایت. و اینکه اونجا هم توضیح بدین مشکل چیه. خیلی ساده، مختصر و مفید.
با سلام
من یک مسئله برنامه ریزی خطی دارم که در تابع هدف یک عبارت درجه دوم وجود داره- که اونقدر اثرش بزرگه که نمیتونم ازش صرف نظر کنم. تو قسمت محدودیت های مسئله یه محدودیت دیگه اضافه کردم که حاصل اون عبارت توان دوم رو بهصورت یک متغیر مرتبه اول وارد تابع هدف کنم، اما در نهایت با خطای 143 مواجه میشم.
آیا باید این حاصل رو در قسمت پارامترها یا متغیرها به صورت جداگانه تعریف کنم؟
ممنون میشم اگه بنده رو راهنمایی بفرمایید
سلام
اون خط رو چجوری نوشتینش؟ و کجا؟
اگه منظوریتون خط مربوط به تبدیل عبارت توان دوم به یک عبارت برابره که در قسمت محدودیت ها ذکر کردم، اما اون رو نه در قسمت پارامترها و نه در جای دیگه ای تعریف نکردم.
خطوطشون این ها هستن:
ObjectiveFunction .. Cost =e= sum(g,a(g) + b(g)*Pg(g) + c(g)*Pgl(g))
…
Pgl(g) .. Pgl(g) =e= Pg(g)*Pg(g)
تو این فرمولی که نوشتین، pgl رو به عنوان یه اسم برای محدودیت انتخاب کردین؟ نمیشه که!
ضمنا این تفاوتی در غیر خطی بودن، کاهش زمان حل، یا هر چیز دیگه ای نمیکنه. با همون توان دو تو تابع هدف بویسین، اگه ارور x** هم گرفت pg رو بذارین تو قدر مطلق، البته معمولا برای pg ها یه حدودی در نظر گرفته میشه که فک نکنم صفر بشن
پس حدسم درست بوده
ذات این مدل NLP هست
فقط یه مشکلی هست، اونم این که وقتی به صورت عادی (NLP) می نویسمش و ران می کنم برنامه بدون ارور ران میشه، ولی نتیجه محاسبات صفر میشه
اون رو پیدا نمی کنم
علی القاعده نباید صفر بشه
بدون دلیل نیست. ده خط آخر فایل log رو لطفا اینجا کپی کنین.
براتون ایمیل می کنم
سلام مدلی که من کدنویسی کردم minlp است و د. متغیر عددصحیح و باینری در هم ضرب شده اند برای اینکه مدلم را خطی کنم متغیری تعریف کردم که ضرب دو متغیر فوق بود ولی گمز error 143 نشون میده لطفا راهنمایی کنید. متغیرهای من به صورت زیر است.
variable z ;
integer variable y(p,i,j);
integer variable u(p,j,k);
binary variable B1(m,p,i,j);
binary variable B2(m,p,j,k);
integer variable n1(m,p,i,k);
integer variable n2(m,p,j,k);
n1= y(p,i,j)*B1(m,p,i,j);
n2= u(p,j,k)*B2(m,p,j,k);
سلام
این مفاهیمی که فرمودین رو باید ببرین تو محدودیت ها.
البته اگه اونجا هم به همین شکل بنویسین باز غیر خطی هست.
مقداری در این مورد مطالعه کنین، بعد نسخه خطی سازی شده رو بذارین ببینیم چیکار کردین. منتظر هستیم.
SOLVE CCR USING LP MINIMAZING TETA ;
PUT EFCCR ;
PUT L.TL:7:5,’ ‘;
PUT TETA.L:7:5,’ ‘;
.
.
97 0.00000 0.00000 0.43987
سلام
لطفا ایمیل کنین برام تا ببینم
130 PUT EFCCR ;
131 PUT L.TL:7:5,’ ‘;
132 PUT TETA.L:7:5,’ ‘;
133 PUT TETL.L:7:5,’ ‘;
134 PUT TETM.L:7:5,’ ‘;
135 PUT TETU.L:7:5,’ ‘;
136 PUT /;
137 );
138
139 TETA
.
.
با سلام ممنون ازسایت بسیار خوبتون
ببخشید مشکل مدل من از کجاست؟ TETA رو چطور بنویسم که دیگه ارور نده
با تشکر
سلام
لطفا کد رو از تو gms کپی کنین نه از lst