خطای 194 با پیام زیر ظاهر میشود:
Error 194 symbol redefined - a second data statement for the same symbol or a data statement after an assignment
خیلی ساده فرض کنید یک پارامتر به نام x تعریف کرده اید و مقدار 2 به آن داده اید. اگر باز هم x را تعریف کنید و مقداری مثلا 4 به آن دهید، گمز این ارور را به شما نشان خواهد داد. این خطا را در تصویر مشاهده میکنید.
واضح است که برای رفع این ارور باید از تعریف دوباره یا چندبارهی یک symbol، نماد و یا کاراکتر جلوگیری کرد. در مثال بالا ما باید یکی از x ها را حذف کنیم و یا اینکه نام یکی را تغییر دهیم.
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405–0919
سلام من در کدم مقدار M را در قسمت اسکالر +inf تعریف کردم و متغیر x هم باینری هست. یکی از محدودیت هام به صورت زیر هست:
v(b,i) =l= sum(j,x(j,b,i)*M)
برای این محدودیت این ارور میاد:
Exec Error at line 52: +-infinity * 0 is undefined
باید چیکار کنم لطفا کمکم کنید
سلام
ارور واضح هست. گمز میگه که تو حداقل یکی از حالت ها ممکنه صفر در بی نهایت که برای گمز تعریف نشده است پیش بیاد. بنابراین m رو خیلی بزرگ تعریف کردین.
به یاد داشته باشین که تعریف m بزرگ در گمز این نیست که بی نهایت بذارین.
تعریف m بزرگ در گمز:
m کوچکترین عددی است که موجب صحیح بودن معادله می شود.
اگه خیلی بزرگ هم بگیرین (مثل یک میلیارد) احتمالا محدودیت رو در نظر نخواهد گرفت! و عملا محدودیت بی معنی میشه.
با این حساب شما اول حدودی تشخیص بدین که v حداکثر چقدر میشه. مثلا حداکثر 400 اگه بشه، شما m رو بذارین هزار.
ممنون استاد
سلام ممنون از اینکه پاسخ دادید. ولی خب یعنی چی که محدودیت نامگذاری نشده؟
خب همه شون نامگذاری شده اند!!!!
ی سوال دیگه خدمتتان داشتم ، ببخشید روش mipبرای حل مسایل تک هدفه مناسب است؟ که از گمز بخواهم بااین روش solve کنه؟
solve SM using mip minimizing zt;
به همین دستور فوق نیز اررور 257 میده؟ مشکلش چیه؟ ممنون می شوم راهنمایی بفرمایید.
با تشکرفراوان از تمامی زحمات شما.
سلام
عرض کردم. هر تعداد محدودیت که میذارین. باید هم تو equation specification و هم تو equation definition یه اسم داشته باشن و همه هم یکه باشن.
با سلام خدمت جنابعالی
یک دنیا سپاس و تشکر از شما و راهنمایی هایتان
با سلام مجدد خدمت جنابعالی
ممنون از راهنماییتان. ارورر 141 برطرف شد ولی همچنان 257 و 409 به قوت خود باقی است.ببخشید حال اگر مدل درست بدون اررو ران شود ولی جواب ندهد مشکل از کجاست و چگونه برطرف می گردد.؟
یکک دنیا سپاس از شما
با سلام و خسته نباشید خدمت شما
و با تشکر از راهنمایی های ارزنده یتان. ببخشید در مورد errorهای شماره409،257،141به مشکل برخورده ام. ممنون می شوم که بفرمایید این errorها را چگونه می توان بر طرف نمود؟ و سوال دیگرم این است که وقتی مدل بدون هیچ errorایی runشود به معنای رسیدن به جواب می باشد؟ چون مدلم ران می شود بدون اررور ولی جواب نمی دهد!!! باید چکاری انجام دهم.
با سپاس از تمامی زحماتتان.
سلام
سوال دوم. خیر به این معنی نیست.
سوال اول: ارور 141 یعنی اینکه شما یه پارامتر دارین که بهش مقدار ندادین. اول اینو رفع کنین بعد دوباره ران کنین. ارورای بعدی رو بذارین بعدا
با سلام مجدد خدمت جنابعالی
ممنون از راهنماییتان. ارورر 141 برطرف شد ولی همچنان 257 و 409 به قوت خود باقی است.ببخشید حال اگر مدل درست بدون اررو ران شود ولی جواب ندهد مشکل از کجاست و چگونه برطرف می گردد.؟
یکک دنیا سپاس از شما
سلام
برای اروری که گفتین احتمالا یه محدودیت رو تو equations نامگذاری نکردین. واسه همین ارور میده
سوال دوم. یعنی چی جواب نده؟
سلام،
یک دنیا سپاس از شما. با تشکر فراوان.
با سلام و خسته نباشید. میشه لطفا بفرمایید error شماره 170 و257 بعنی چه؟ و چگونه برطرف میشه؟
با تشکر اط شما
سلام
ممنونم
تاپیک زیر رو ببینید. اینو رفع کردین بعدی هم رفع میشه.
خطای 170 در گمز
سلام
یک سوال درباره ارور 148 داشتم. یک متغیر با پنج اندیس تعریف کردم که روی یکی از آن ها باید یک عملیات جمع تعریف کنم.
Storage_capacity1(t,d,b,x,y,q,i,n)$(ord(t)>1 and ord(n)<ord(t)).. P_EV_stored(t,d,b,x,y,q,i)=e=sum(n,P_EV_C(t-ord(n),d,b,x,y,q,i)-P_EV_G(t-ord(n),d,b,x,y,q,i))
یک مقداری در زمان t باید برابر با حاصل جمع مقادیر در زمان های قبل از t بشود. کد بالا رو برای این کار نوشتم اما ارور 148 میگیرم. برای حل مشکل چه باید کرد؟
سلام
شما باید یه t1 هم تعریف کنین. آلیاس بشن. که مثلا بگین t از 1 تا t1 تغییر میکنه. کامنای بخش محدودیت ها رو مشاهده کنین
سلام مجدد
یعنی یک متغیر t1 رو با t آلیاس کنم بعد رابطه جمع رو به ازای t1 های کوچک تر از t انجام بدم ؟
در این شرایط نیازی نیست که اندیس t1 به عنوان یک اندیس جداگانه در متغیر ها و معادلات لحاظ شوند ؟
سلام
بله باید آلیاس کنید. و نیازی نیست جداگانه متغیرها رو دو بار تعریف کنین. یه بار کافیه. برای شرطتتون هم دیگه یکم دقت کنین که دقیقا همون رو پیاده کنین
سلام
کد رو به این شکل اصلاح کردم
Storage_capacity1(t,d,b,x,y,q,i,taux)$(ord(t)>ord(taux)).. P_EV_stored(t,d,b,x,y,q,i)=e=sum(taux,P_EV_C(taux,d,b,x,y,q,i)-P_EV_G(taux,d,b,x,y,q,i))
اما ایرادی که میگیره اینه که چون یک بار روی اندیس ها با ord قید گذاشته شده دیگه نمیشه روشون عملیات جمع رو انجام داد
راه هلی داره این مشکل؟
ببخشید بابت مزاحمت
سلام
کد رو به این شکل اصلاح کردم
Storage_capacity1(t,d,b,x,y,q,i,taux)$(ord(t)>ord(taux)).. P_EV_stored(t,d,b,x,y,q,i)=e=sum(taux,P_EV_C(taux,d,b,x,y,q,i)-P_EV_G(taux,d,b,x,y,q,i))
اما ایرادی که میگیره اینه که چون یک بار روی اندیس ها با ord قید گذاشته شده دیگه نمیشه روشون عملیات جمع رو انجام داد
راه هلی داره این مشکل؟
ببخشید بابت مزاحمت
salam . $ (ord(t)>ord(taux) ) ra pak konin dakhel sum benevisin ==injori==> sum(taux $( ord(t)>ord(taux) ), p_ev…………….)