سوال از جانب جناب موحد:
با سلام و تشکر بابت سایت خیلی خوبتون
من کد زیر رو میخوام اجرا کنه، ولی خطا میگیره و متوجه نمیشم مشکلش کجاست
; VARIABLES y, x
EQUATION
; first
; (first.. y =E= (x*x) $ (x 0
; x.LO = -10
; x.UP = 10
; /MODEL andre /ALL
; SOLVE andre USING DNLP MINIMIZING y
خطایی که میگیره اینه:
Endogenous $ operation not allowed
مرسی از راهنماییتون
پاسخ به سوال جناب موحد:
سلام
گمز شرطی که واسه متغیر x گذاشتین رو نمیفهمه. به عبارتی تقریبا بیشتر solverهای گمز شرطی که توض متغیر باشه قبول نمیکنن. فقط تعدادی از اونها قبول میکنن.
شما دو راه برای حل این مشکل دارید، اول اینکه شرط رو با یک یا چند محدودیت جایگذاری کنین.
و یا اینکه از تابع ifthen استفاده کنین و از solver هایی که این تابع رو میفهمن استفاده کنین. مثل sbb
ذوستان اگه در این رابطه سوال، نظر یا مطلب مفیدی دارن کامنت بذارن
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
سلام وقت شما بخیر. زمانیکه در حد بالای یک سامیشن متغیر و یا یک اندیس متغیر برای یک متغیر وجود داشته باشه چجوری باید کد بنویسیم که گمز بتونه حل کنه؟
سلام
به ایمیل سایت یه پیام بدید که براتون آموزشش ارسال بشه.
سلام.
من توی مدلم هم smax دارم و هم متغیر گسسته.
الان نوع مدلم چیه؟ وقتی dnlp میزنم ازم خطا میگیره که متغیر گسسته دارم.
با mip هم خطا میگیره چون smax دارم.
سلام
احتمالا minlp نیست؟
سلام. خسته نباشید.
مدل ریاضی من به نظر میرسه مشکلی نداره. ولی وقتی با گمز اجراش میکنم جواب infeasible میده. نمیدونم مشکل چیه. لطفا راهنمایی کنید.
ممنونم.
.
.
سلام
ممنون و خواهش میکنم.
مشکل یا از داده های شماست، یا از مدل. باید جفتشون رو چک کنین، پیشنهاد من اینه که محدودیت ها رو یکی یکی به مدل اضافه کنین و ران کنین و هر بار تحلیل کنین نتایج رو
ممنون
سلام.
آیا میشه در تعریف پارامترها شرط گذاری کرد؟
مثلا a(i,j) به شرط i=j مقدار خاصی بگیرد؟چطور باید در قسمت پارامترها تعریف کنم؟
سلام بله میشه:
parameter a(i,j);
a(i,j)=uniform(2,10);
a(i,j)$(ord(i) = ord(j))=100;
باسلام.
سوالم اینه که میخام محموعه s را تعریف کنم.که اعضای اون بین ماکسیمم دوتا معادله و مینیم دوتا معادله دیگر قرار دارد
چنین محدودیتی دارم
co(k,t) $ ( ord(t) eq 5) ..sum((i,s) $ (ord(s) gt max(ord(t),ef(i)) and ord(s) lt min(ord(t)+d(i)-1,lf(i))),r(i,k)*x(i,s))=l=6
برای تعریف مجموعه Sدر ست باید چطور اعمال کنم؟؟؟
در واقع sبین ماکسیمم دومقدار و مینیمم دومقدار دیگر قرار دارد
سلام
سخت نگیرین براش. حدس بزنین که s بین مثلا 1 و 10 هست، بعد s رو مثلا به شکل زیر تعریف کنین:
set s/1*30/
آخه من مقدار s رو به ازای هر فعالیت i در هر دوره زمانی t دارم.مثلا اگر ۴ تا فعالیت داریم مقدار s برای دوره اول ۴بار ماکس تا مین میشه.و به همین ترتیب برای دوره دوم بازم ۴بار ماکس تا مین دیگه
در واقع برای ۴ فعالیت در ۵ دوره زمانی من ۲۰ مقدار دوتایی باید داشته باشم
بازم مهم نیست؟چون ارور میده و sرو نمیشناسه
باور کنین نفهمیدم. شاید من مخم نمیکشه. لطفا فرمول کامل رو اینجا بذارین
خطاهای endogenous
و
analyzing solve statement
ببخشید برنامه من ارور 56 و 256 رو میدی.
مشکلش چیه؟
execseed = 1+ gmillisec(jnow);
p(‘1′,’1’)=0;
p(‘%f%’,’1′)=0;
xx(‘1’)=50; xx(‘%f%’)=50;
xy(‘1’)=50;xy(‘%f%’)=50;
tt(i,l)=sqrt (sqr(xx(i)-xx(l))+sqr (xy(i)-xy(l)))/80;
.
.
.
.
سلام
ارورهای شما خیلی بیشتر از این حرفاست.
اولین ارور شما مربوط به اشتباه در به کار بردن ` و ‘ هست. شما باید از ” یا ‘ استفاده کنین…
خطایی که از من گرفته
خطاهای endogenous
و
analyzing solve statement
هست. گمز دیگه هیچ خطایی نگرفته. بقیه خطاها رو رفع کردم.
چرا استفاده از “و” ایراد داره؟
سلام
دقیقا متن خطای اولو بنویسین
خطای اول اینه:
endogenous operand for * not allowed in linear models
خطای دوم هم اینه:
erors(s) in analuzing solve statement . more detail appears bellow the solve statement above.
سلام
دومی که هیچی. اولی یعنی اینکه تو دستور solve مدل رو خطی فرض کردین، در حالی که بین دو متغیر شما علامت ضرب هست که مدل رو غیر خطی میکنه. nlp,dnlp,mip اینا ممکنه نوع مدل شما باشه
مرسی. تشکر از وقتی که به من دادید.
خواهش میکنم. در خدمتیم
فقط یه اشکال میمونه اونم اینه که شما تو اپراتور $ لازم نیست جواب بعدی یعنی else رو بذارین و این خیلی کمک میکنه مثلا برای بررسی محدودیت. منم مشکلم درست تو همون جواب else هستش که کدم رو دچار اشکال میکنه. اگه یه راهنمایی بکنین خیلی کمک کردین. مرسی.
سلام
محدودیت رو اینجا بنویسین و بگین که مشکلش چیه
سلام.
mut(t)$(i(t)-i(t-1)eq 1).. i(tp)$(ord(tp)gt ord(t) and ord(tp) lt ord(t)+mu) =e=i(tp-1);
mut: minimum up time, i is a binary variable, tp is a set in same size with t and mu is a scalar.
البته میدونم شرط داخل $ درست نیست، چون ‘i’ یک متغیر است. در واقع من یه چیزی شبیه شرط بالا رو میخوام که کاری با برقرار نبودن شرط نداشته باشه. فقط در صورت درست بودن شرط داخل $ این معادله برقرار باشه. ولی فکر کنم تو ifthen باید جواب ( در غیر این صورت ) را نیز به تابع بدهیم.
ممنون مرسی.
تو این حالبتا دیگه باید ی خلاقیت تو مدلسازی به خرج بدین که این مشکل پیش نیاد. شاید لازم باشه یه سری متغیر جدید تعریف کنین یا محدودیت جدید یا اصلاح محدودیت…
واقعاً ممنون از پاسختون. فقط اگه بگین منظور از اون صفر آخر چی هستش بسیار کمک میکنین.
سلام
خب یه عبارت شرطیه دیگه. مثلا اگه x مساوی y باشد، آنگاه z=3 در غیر اینصورت z=0
خیلی ممنون از جوابتون . مرسی از اینکه وقتتون رو برام گذاشتین .
سوال: فقط ببخشید من اگه امکان داره یه مثال برای ifthen در این رابطه بزنین خیلی ممنون میشم. چون من هرچی گشتم نتونستم مثالی برای کنترل متغیر در معادلات (equations) پیدا کنم.
ممنون از سایت خوبتون
سلام
برای تابع هدف
obj1..PD=e=ifthen(D <= QS,(qs-a)/(bb-a),0);
برای محدودیت
con1(j)..sum(i,PD(i))=e=ifthen(D(j) <= QS(j),(qs(j)-a)/(bb-a),0);