پس از تعریف مدل، نوبت به دستورات مربوط به حل مدل می رسد. همچنین همانطور که قبلا ذکر شد، نرم افزار GAMS خود یک نرم افزار solver نیست بلکه حل مدل ها را از طریق دیگر نرم افزارهایی که در آن تعبیه شده است انجام می دهد.
پس در این قسمت باید نوع solver را نیز مشخص نمود.
دستور solve به نرم افزار فرمان می دهد که مدل ما را از فلان متد حل کن. فرم کلی این دستور به صورت زیر می باشد:
Solve Modelname using Modeltype Maximizing Vname ;
Modelname همان نامیست که در دستور model برای مدلمان انتخاب کردیم. Modeltype نوع مدل را مشخص می کند. مثلا یک مدل می تواند LP/NLP/MIP/RMIP باشد. انواع مدل ها در بخش model types تشریح خواهند شد. Maximizing نوع تابع هدف را به solver معرفی می کند. Vname یا variable name همان متغیر اضافی است که در بخش متغیر ها تعریف نموده و در equation معادله ی تابع هدف را مساوی آن قرار دادیم.
بنابر آنچه که ذکر شد، گذاره های زیر معادل و یا مشابه اند:
Solve Modelname using Modeltype Maximizing Vname ;
Solve Modelname using Modeltype Minimizing Vname ;
Solve Modelname Maximizing Vname using Modeltype ;
Solve Modelname Minimizing Vname using Modeltype ;
دقت کنید که در صورتی که ما مثلا مدل را LP تعریف کنیم در حالی که واقعا LP نباشد نرم افزار هنگام run کردن Errorی می دهد که به سطر solve مربوط است و پیدا کردنِ اینکه مشکل واقعا کجای کار است مقداری سخت است. پس در model type دقت لازم را داشته باشید تا به مشکلاتی اینچنین دست وپاگیر دچار نشوید.
اگر در دستور solve به یک modelname که در model content مربوطه اش شامل تابع هدف نشده باشد، reference بدهیم، نرم افزار به هنگام run کردن مدل نیز Errorی مشابه Error بالا می دهد که برطرف کردنش ممکن است مقداری وقت گیر باشد.
توجه داشته باشید که همانطور که در یک مدل می توان زیر مدل هایی با دستور model تعریف کرد، متوان با استفاده از دستور solve چند مدل را به صورت همزمان حل نمود. توجه داشته باشید چون GAMS نیز سطر به سطر اعمال را انجام می دهد، اولین دستور Solveی که ببیند حل نموده و سپس به خط بعدی می رود.
GAMS این امکان را به کاربر می دهد که در یک برنامه ی مشخص چندین مدل مختلف یا با راهکارهای مختلف را، همزمان حل کند. مثال:
و در ادامه ی مطلب بپردازیم به ادامه ی کد نویسی مثال کاربردی1:
مثال موجود در مثال کاربری1 یک مدل برنامه ریزی خطی می باشد. از طرفی حل کننده ی cplex جهت حل مدل های برنامه ریزی خطی مناسب است. پس ما نیز در این مدل از این solver استفاده می نماییم:
همانطور که در بخش متغیرها گفته شد، اگر در مدل بخواهیم مقدار یک تابع هدف را بهینه کنیم، باید در بخش variable یک متغیر اضافه بر متغیرهای مسئله تعریف نماییم تا در دستور solve از آن استفاده نماییم. وقتی این متغیر را در دستور solve می گذاریم، GAMS آن را به عنوان Objective می شناسد و آن را minimize یا maximize می کند. در مدل ما نیز متغیر z برابر با تابع هدف در نظر گرفته شد.
خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش سفارشی سازی خروجی، در لیست مطالب مراجعه نمایند.
با تشکر
مدیریت سایت gamsbook.ir
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
سلام وقتتون بخیر
من دو متغیر تصمیم دارم که در تابع هدف در هم ضرب می شوند (X*Y). از چه سولوری در گمز استفاده کنم؟
با تشکر
سلام.
اين دو متغيير از چه نوعي هستند؟
در كل توانايي خطي سازي براي انها وجود دارد.
اما ميتوانيد از سالورهايي مثل سيپلكس، گوروبي، موزك، اسكيپ، بارون، ليندو، شات و … كمك بگيريد.
اين لينك هم ميتواند مفيد باشد:
https://t.me/gamsbook/1539
.
با سلام خدمت جناب مهندس محمودی بزرگوار
لطفا بنده را راهنمایی بفرمایید
در هنگام نوشتن کد epsilon constraint برگرفته از لینک gams.com/latest/gamslib_ml/libhtml/gamslib_epscmmip.html در مدل بهینه سازی حمل و نقل با ارور ذیل برخوردم.
Model
mod_payoff / TRANSPORTATION, allobj /
mod_epsmethod / TRANSPORTATION, con_obj, augm_obj /;
Parameter payoff(k,k) ‘payoff tables entries’;
Alias (k,kp);
option optCr = 0, limRow = 0, limCol = 0, solPrint = off, solveLink = %solveLink.LoadLibrary%;
* Generate payoff table applying lexicographic optimization
loop(kp,
kk(kp) = yes;
repeat
solve mod_payoff using MIP maximizing obj;
payoff(kp,kk) = ZEPS.l(kk);
ZEPS.fx(kk) = ZEPS.l(kk); // freeze the value of the last objective optimized
kk(k++1) = kk(k); // cycle through the objective functions
until kk(kp);
kk(kp) = no;
* release the fixed values of the objective functions for the new iteration
ZEPS.up(k) = inf;
ZEPS.lo(k) = -inf;
Error 71: The symbol shown has been declared as an equation, but no symbolic equation.
سلام
این رو ببینید.
سلام
چطور میشه در محیط گمز یک مدل غیر خطی عدد صحیح مختلط را که دارای توابع مانند floor یا min هست حل کرد
در واقع چطور میشود از سالوری استفاده کرد که هم minlp را پوشش دهد و هم dnlp
سلام
معمولا برای توابع غیر خطی بهتره از مدل های جایگزین خطی استفاده کرد. x=min(y,z) رو میشه خطی کرد.
و اینکه در گمز بهترین سالور مسائل nlp چیه؟
این سوال جواب نداره.
برای هر مسئله ای یه سالور می تونه خوب جواب بده.
بطور کلی این سالور ها خوب هستن:
baron, lindo, conopt, dicopt, minos, knotro
سلام میخواستم بپرسم ضرب دو متغیر عدد صحیح رو چطوری میشه تبدیل خطی کرد؟
سلام
روش های متفاوتی داره. اگه حداقل یکیشون باینری هست، میشه از خطی سازی باینری در پیوسته خطی کرد مسئله رو.
اگر هر دو عدد صحیح هستن، هر دو متغیر رو تبدیل به جمع تعدادی از اعداد صفر و یک میکنیم و بعد ضرب اونها رو در هم خطی می کنیم.
سلام وقت بخیر
جسارتا من در گمز یک جدول(table (t,t با ابعتد 24*24 تعریف کردم که سطر وستون آن بیانگربیانگر24ساعته.حالا توی کد
incentive_price_eq(t)..final_demand(t)=e=total_demand(t)+(tt$(ord(t) = ord(tt)),elasticity(t,tt)*total_demand(t)*incentive_price(t)/day_ahead_price(t))+sum(tt$(ord(t) ne ord(tt)),elasticity(t,tt)*total_demand(t)*incentive_price(tt)/day_ahead_price(tt)
میخوام که اگر t=ttبود، عناصر قطر اصلی انتخاب بشن ودر(total_demand(t)*incentive_price(t)/day_ahead_price(tضرب بشن و عناصر غیر خودی هم در عبارتtotal_demand(t)*incentive_price(tt)/day_ahead_price(ttضرب بشن که برای تیکه عناصر خودی خطامیده.
میخواستم ببینم اشکال کار کجاست
دومین سوالمم اینه میخوام بهینه سازی دوهدفه که هردوهدف غیر خطی هستن رو در گمز انجام بدم.میخواستم بدونم به چه صورت میشه این کاررو انجام داد.حتی سایت گمز رو چک کردم مطلب مفیدی پیدا نکردم.
ممنون میشم راهنمایی بفرمایید
حتی از دستورalias(t,ttهم استفاده شده
باسلام
در صورتی که سه متغیر آزاد در علامت، مثبت و باینری در مدل موجود باشد از چه نوع حل کننده می توان استفاده کرد؟
با تشکر
سلام
اگه مدلتون خطیه، از cplex یا گروبی
ولی اگه غیر خطی هست، از dicopt, baron, lindo یا سایر سالورها میتونین استفاده کنین. قانون خاصی نداره
سلام وقت بخیر
منظورم اینه که یک مدل رو با توجه به نتایج سال قبل برای سال های بعد تا 20 سال آینده تخمین بزنم.
سلام
معمولا یه اندیس به نام t اضافه میشه. یعنی مدل رو باید تغییر بدین. کد به خودی خود پویا نمیکنه مسئله رو. کلید واژه شما dynamic یا multi-period هست. با عناوین مشابه کارتون سرچ کنین پیدا میشه مثالاش حتما
با سلام
یک مدل رو برای چند سال (مثلا برای سال های بعد تا 20 سال) تخمین بزنم.
مدل که تخمین زده نمیشه، شما برای هر سال یه سری جواب برا متغیرهاتون میخواین. پس باید از رویکرد dynamic programming یا multi-period کردن مسئله استفاده کنین. معمولا جفتش با یه اندیس t که نشون دهنده هر ساله مدلسازی میشه. مثلا بدون در نظر گرفتن سالها یه x(i دارین، ولی برای در نظر گرفتن سالهای مختلف x(i,t تعریف میکنین. بدون دیدن مقالات مشابه چیزی دستگیرتون نمیشه. اون دو تا کلمه کلیدی که گفتم همراه با عنوان مسئله تون سرچ کنین، احتمالا مقالات مشابهش میاد.
با سلام و خسته نباشید
چطور می توانم یک مدل گمز (mcp) را پویا کنم؟
سلام
پویایی از چه نظر؟
سلام وقتتون بخیر
ببخشید روش حل دو مرحله ای در گمز چطوریه؟؟
دوتا مسئله ی جدارو وقتی ادغام میکنم جواب نشدنی میشه
استادم گفتن که از حل دو مرحله ای استفاده کنم
سلام
لطفا سوال رو شفاف تر مطرح بفرمایین.
معمولا تو روش دو مرحله ای، اول یک مدل حل میشه، که طبیعتا برای هر متغیر این مدل یه مقدار بهینه تولید میشه. حالا تعدادی از این متغیرها فیکس شده و به عنوان ورودی به مدل دوم داده میشن و مدل دوم حل میشه.
سلام من یک مدل با تابع هدف دوگانه دارم البته بالا فرمودید که بریم تو سایت گمز تو اونجا سرچ کنیم ولی هیچی عایدم نشد من کد رو براتون بفرستم میشه لطف کنید شما یه توضیحی بدید کارم خیلی گیره بینهایت ممنون میشم:
سلام
با چه روشی میخواید حل کنید؟
سلام
یک مدل 3 هدفه در گمز دارم که متغیرهاش باینری و اینتیجر هستن. با اپسیلون که میزارم ران بشه حدود 10-12 ساعت زمان میبره. تعداد گریدپوینت ها هم 10 هست. این زمان برای حل معمول هست یا خیر؟
میشه بفرمایید مشکل چی هست؟
سلام
ربطی به روش به کار رفته نداره این زمان. مسئله اصلی شما زمانبر هست ظاهرا.
من یه مدل دوهدفه دارم که با روش وزنی در گمز کد کردم و 11 بار تکرار برای وزن ها نوشتم ولی ارور داره
سلام
توضیحات.
سلام مهندس ممنون میشم. راهنمایی کنید. مشکل برنامه ام متوجه نشد.
status: Terminated due to a licensing error
یعنی مشکلش لایسنسشه؟ یا کدی که نوشتم متوجه نشده؟
سلام
مشکل لایسنسه. این لینک رو دنبال کنین.
تفاوت مدل mip و minlp چیه؟؟..مدلی توی مقاله دارم که نوشته mip هستش اما با minlp کد زنی و حل شده
سلام
mixed integer linear programing
mixed integer non-linear programming
اولی خطی هست با متغیرهای عدد صحیح، دومی غیر خطی هست. که عباراتی نظیر ضرب و تقسیم دو متغیر در هم، رادیکال متغیر، توان و.. مدل رو از حالت Mip به minlp تبدیل میکنه
با سلام. در گمز کد دستوری برنامه نوشتم. تا الان مشکلی نداشت. الان که قیدها را اضافه کردم. خطای 65 را میزنه. خواهش راهنمایی کنید و یا در ایمیلم ارسال کنید. ک زودتر حلش کنم. سپاس
سلام
من خاطرم نیست که ارور 65 چی رو نشون میده. محبت میکنین متن ارور رو بذارین اینجا. تشکر
سلام
من میخوام یه قیدبنویسم که اگر Ei که i اندیس هست بزرگتر ازصفر باشد آنگاه سیگما DFik که سیگما رو k هست کوچکتر از Ei و DFik بزرگتر از صفر است این قید به ازاری هر i برقراره.
میشه راهنمایی کنید .
سلام
برا بقیه ش یه همچین توجیهی میشه استفاده کرد.
سلام،
مدل من، مدل بهینه سازی حمل و نقل هست و چهار هدف دارد، که سه تا مینیمم سازی و یک ماکزیمم سازی هست. از بین روش های ال پی متریک، روش محدودیت اپسیلون، آرمانی و … چطور بفهمم کدوم رو در گمز باید استفاده کنم؟
با تشکر.
سلام
دلخواه هست. روش اپسیلون مجموعه جواب به شما میده. ولی مثلا ال پی متریک به شما یک جواب میده. با مشورت استادتون یکیشو انتخاب کنین.
ممنونم
من میخام درعبارت سیگما دوگانه که یکیش بر روی i هست، عبارت داخل سیگما در 4+i ضرب شود، i از یک هست تا پنج، اینو چطوری بنویسم؟
سلام
اونجا به جای i+4 بنویسین: i.uel+4
فقط حواستون باشه که i رو تو دستور set قبل از همه تعریف کنین.
برای سوال دوم سه بار خطای ۱۴۹ رو برای یه معادله میده:
Error 149: uncontrolled set entered as constant
خود معادله هم اینه:
X(i,t-2) -X(i,t-1)+X(i,t)=L=1
اینجام صور عمومی محدودیت رو لحاظ نکردین. مثلا const(i,t
ازتون خیلی خیلی ممنونم . مشکلم رفع شد کامل. ممنون از مطالب خوبتون و پاسخگویی سریعتون.
پیروز باشید
این مربوط به سوال اولم هست:
Z=e=a(sum((i,t)$CF*F(i,t))+sum(t$CF&FG(t))+sum(t$PP(t)*CPb)+sum(t$PS(t)*CPs)+sum((i,t)$SO(i)*V(i,t))
خطا:
Error 145: set identifier or quoted element expected
Error 149: uncontrolled set entered as constant
Error 148: dimension different-the symbol is refeeenced with more/less indices as declarred
Error 119: number (primary) expected
سلام
لطفا فقط و فقط به همون گفتگویی که داشتیم ریپلای کنین. اینجوری پیاما در هم برهم میشه و کسی نمیفهمه اصل سوال کجاس.
این معادله ای که نوشتین سرتاسر اشتباه هست. برای sum شرط گذاشتین، خود فرمولش کو؟ a رو ضرب کردین. علامت ستاره کو؟ پرانتزاتون مشکل دارن….
بخش معادلات رو بخونین. تا کامل یاد نگرفتین شروع نکنین. اینجوری بیشتر اذیت میشین
با سلام. من دو سوال دارم. مدل من دو تا مجموعه ی i و j داره. توی پارامترها ، پارامتری نیست که همزمان هم به i و هم به j وابسته باشه. اما توی متغیرهام متغیرهایی هستن که هر دو اندیس رو دارن. خطای ۱۴۵ و ۱۴۸ و ... ممکنه مربوط به این باشه؟
و اینکه اگه توی متغیرها xj داشته باشیم و توی معادلات x)j-2( و یا x)j-1( اینم خطا میده 🙁
سلام
اولین خطی که ارور میده رو ارسال کنین، به همراه متن خطا.
چند اندیسه بودن اساس گمز هست و مشکلی نداره تعدد اندیس ها.
سوال آخرتون هم درصورتی که درست تعریف کرده باشین معادله رو مشکلی ایجاد نمیکنه.
پس شما اولین خطی که ارور میده به همراه متن ارور و همچنین خطی که مروبط به سوال دو هست و متن ارورش رو ارسال کنین.
سلام خسته نباشید
میخواستم بپرسم که از کجا میشه فهمید که یک مدل گمز که حل شده با کدوم حل کننده بوده؟
باسپاس
سلام
راه اصلی برای اینکار اینه که اول ببینید تو دستور solve چه نوع مسئله ای دارید. مثلا mip یا lp یا هر نوع مدل دیگه ای. بعد به این آدرس برین: file/options/solvers و بعدش از قسمت سمت چپ (کومبوباکس) عبارت system defaults رو انتخاب کنین، برای اون نوع مسئله ی شما جلوی هر سالوری علامت ضربدر اومده باشه نشون میده گمز برای حل مسئله شما از اون سالور استفاده کرده.
سلام. ببخشید برنامه ریزی چند هدفه را چطور میشه با گمز نوشت؟
آیا دوتا دستور solve بزارم حله؟
سلام
گمز همزمان چند دستور solve رو ران نمیکنه. باید روش های مختص به برنامه ریزی چندهدفه رو یاد بگیرین. مثل روشهای وزنی، روش های آرمانی، لکسیکوگرافیک و پارتویی. بعد که روش رو مسلط شدین برین نحوه کد کردنش رو هم یاد بگیرین.
سلام
p^(2*t)
تو گمز چجوری نوشته میشه؟
سلام
به جای ^ بنویسین **
یا از تابع power استفاده کنین
سلام
میخواستم بدونم محدودیتی که توش انتگرال گیری هم داریم چجوری میتونیم تو گمز وارد کنیم
سلام
تو گمز انتگرال نمیگیریم. یعنی قابلیتشو نداره.
پس اگه میتونین، دستی انتگرال گیری بکنین، و عبارت معادلش رو (که که اگه ازش مشتق گرفته بشه میشه عبارت زیر انتگرال) تو محدودیت بنویسین مثلا به جای انتگرال x بنویسین، x2/2. یا اینکه از رابطه ی بین گمز و مطلب استفاده کنین.
سلام.و خسته نباشید.
من مدلی را ران کرده ام ک solver statusوmodel ststusان نوشته شدهlicensing problemsهست.میشه بفرمایید ایراد از چی میتونه باشه؟ممکنه مشکل از مقدار دهی نادرست پارامترها باشد.چون مقداردهی ها تقریبا فرضی ارایه شده اند
سلام
لایسنس خوب برای برنامه نصب شده تون پیدا کنید. سالور هاتون غبر فعالن
سلام.متشکرم.حل شد.فقط ی سوال دیگه هم داشتم نمیدونم در حیطه کاری شما هست یا نه ولی گفتم شاید بتونید مشکلم رو حل بفرمایید.مقدار دهی های من به پارامترها به صورت فرضیه ولی هربار جواب را نشدنی میزند شما میتونید در داده ها کمک کنید؟
سلام
شما باید dataset هایی که مربوط به حوزه کاریتون هست رو پیدا کنین. معمولا سایتایی هستن که داده های استاندارد ارائه میدن واسه مسائل مختلف. اگرم پیدا نشد باید از یه مسئله ریز شروع کنین و عدد بدین تا به سایزهای بالاتر برسین.
در واقع قسمت توان دار و کسری مدل من به صورت زیر هست
e** mu((1_c)/c)
که برای cکران پایین تعریف کردم ولی مجدد خطا زد.
یه عدد خیلی کوچیک اضافه کنین مناسب تره. فقط مواظب باشین که اعداد غیر منطقی تولید نشه با این کار
سلام.من در اجرای مدل خطایی به این صورت ظاهر شده است:
overflow in*operation(mulop)
میشه راهنمایی بفرمایید؟؟
سلام
برا خطی که ارور میده احتمالا از توان استفاده کردین. یا کسری. نباید صفر بشه کسر و پایه در عبارت توان دار نباید صفر بشه. پس اگه متغیری در پایه دارین، یه کران پایین براش تعیین کنین. یا اینکه به پایه یه مقدار خیلی ناچیز اضافه کنین.
سلام.اول خطای تقسیم بر صفر میزد ک جایی ک تقسیم داشتم برای اون متغیر کران پایین تعریف کردم و جای دیگری تقسیم نداشتم ران ک کردم مجدد این خطا رو زد.و نمیدونم چکارش باید بکنم؟؟
سلام
متن ارور رو کامل بذارین، خط تابع هدفی که میگین رو هم بذارین
سلام.ببخشید برای روش پارامتری وزین.من در یک مایان نامه دیدم ک استفاده شده به صورت خیلی ساده نوشتنmin(aF_bG)
که a.bوزنها هستند وF.Gتوابع هدف در مدل.و به این صورت تک هدفه کردن ولی در جای دیگر به این صورت به کار رفته است که هر بار مدل را با هریک از توابع حل کنند و نقاطPISوNISرا بدست اورند در فرمولF_PIS/pIs_NIsجایگزین کنند برای هر تابع هدف این کار را بکنند در پایان دو تابع را جمع کنند و در وزنها ضرب کنند ک تک هدفه شود.کدام روش درست میباشد؟؟
سلام
از روش اول وزنی ساده نام داره، روش دوم چندتا اسم داره: وزنی نرمال شده، وزنی استاندارد، وزنی بی مقیاس شده، ال پی متریک با توان یک، معیار جامع یا حداقل انحراف با توان یک. اینا همش میشه مدل دوم. دومی درست تره قطعا.
سلام خیلی ممنونم از توضیحاتتون.و ی سوال دیگ اینکه خطای55 دلیلش چیه که نوشته
endogenous operands for /not allowed in linear models
احتمالا مربوط به نوع مدل میشود.من نوع مدلمmipهست ولی با تغیراتی در تابع هدف از تقسیم هم استفاده کردم نوع مدل چه میشود؟؟
سلام
تقسیم، ضرب، توان و… بین متغیر ها مدل رو غیر خطی میکنه. مدل شما میشه minlp
با سلام.
من میخواستم مونت کارلو رو در گمز به صورت زیر پیاده کنم:
loop(IT,
solve UC using MIP minimizing J;
display j.l;
);
الان میخام هر بار که مساله رو حل کردj ها رو با هم جمع کنه اندیس لوپ هم انگار نمیشه تعریف کرد برای j. چه کار باید بکنم؟ ممنون
مدلتونو برای ما ارسال کنید.
کد رو ارسال کردم براتون.
ممنون میشم راهنماییم کنید.
با تشکر
سلام.. من میخوام تو تابع هدفم انتگرالو حل کنم ..آیا تو گمز میشه؟ چطوری؟
همچنین حلقه های شرطیو برای مقدار دادن به پارامتر هام رو میشه تو گمز نوشت؟
لطفا جواب منو بدید..سپاس فراوان
سلام
دستوری برای آوردن مستقیم انتگرال نیست.
بله میشه دستور داد
سلام خسته نباشید
عدد نپرe به صورت توان داربا توانx((1_c)/c) چگونه کدنویسی میشود؟؟
سلام
Exp(something)
که به جای something هرچی که دلتون بخواد میتونین بذارین
سلام.برای پارامتر هایی ک پنج اندیس دارند اگر از نوعparameterکدندیسی شوندواز نوعtableنباشند ایرادی دارد؟؟چون در تاپیک پارامترها نوشته شده وقتی تعداد اندیسها زیاد است ترجیحا از نوعtableنوشته شوند.
سلام از تیبل باید استفاده کنی . یا عدد تصادفی بهش بدی به شکل زیر:
parameter A(i,j,k,m,n);
A(i,j,k,m,n)=uniform(0,100);
A بین 0 تا 100 مقدار می گیره
salam,khaste nabashid
man unit commitmento ba GAMS neveshtam,hala mikham reserve ezafe konam va bar tebghe maghale gofte hazineie reserve 0.2 locational marginal coste vahedhast,LMP ro az marginale kudum gheid mitunam bedast biaram?
سلام
نمیدونم.
سلام و خسته نباشید. ممکنه ببینین سوال من راه حلش چیه؟
من یک مساله نمونه با ابعاد بزرگ رو می خوام با بارون حل کنم. تو نمونه های کوچیک حواب می ده ولی در حالت بزرگ، وقتی reslim رو مثلا 7000 میزارم روی حدود یکساعت نرم افزار خود به خود قطع میشه و پیام stop workingمیده. برای چک کردن قدرت کامپیوتر مدل رو غیر خطی و ساده تر کردم و با سیپلکس حل کردم تا حدود سه ساعت هم مشکلی پیش نیومد. به نطرتون چه باید کرد؟
گمز زمان زیادی را برای حل کردن ابعاد بزرگ مساله صرف می کند و گاهی توان حلشون را ندارد. شما باید از الگوریتم های فراابتکاری بهره بگیرید.
ممنونم.منظورم این هست که کدنویسی پارامترcq باید به چه صورت باشه؟؟
در روش وزنی ساده سوالم اینجاست ک wک به عنوان وزن در نظر گرفته میشود چطور تعریف شود و چه تفاوتی داره نوع تابع هدفها چی باشهminیا max؟اگ ی مثال بزنید ممنون میشوم بیشتر برایم مشخص میشود.
سلام
برای تعریف cq و w به تاپیک زیر مراجعه کنید.
ورود پارامتر در نرم افزار گمز
نه فرقی نمیکنه. فقط باید مواظب باشین که جهتشون یکی هست یا نه. اگه جفتشون max یا Min هستن که وزنی جمع کنین. اگه یکیشون max و یکیشون min هست، علامت یکیشون رو منفی بذارین کافیه
متشکرم از راهنماییتون.فقط نحوه کار این روش ها رو از کجا میتونم تهیه کنم؟؟
و اینکه من در مدلم پارامتری دارم با عنوانcqک دامنه ای ندارد برای تعریف چگونه باید باشد؟؟
میبخشید زیاد سوال میپرسم.متشکرم
سلام
خواهش میکنم.
لطفا فقط به همون سوال قبلی ریپلای کنین.
نحوه کار یه سرچ بزنین تو گوگل پره از این چیزا.
یعنی چی پارامتره و دامنه ای نداره؟
سلام.از گوگل بله فراوان هست ولی روش حل با جزییات ارایه نشده.مثلا من روش اپسیلون رو دیدم در این حد متوجه شدم ک یکی از محدودیت ها minدر تابع هدف میماند بقیه جز محدودیت اند به صورت کوچکتر مساوی اپسیلون.ولی مقدار دهی اپسیلون نحوه تعریف تابعی ک جز محدودیت شده است و اینکه maxیا minان چه تاثیری دارد برام جای سوال بود.در وزن دهی هم وزنها مبهم بود.؟؟
پارامتری دارم به اسم،سود حاصل از هر سطح کیفیت cq.چطور تعریف شود؟؟
سلام
شما که تازه کارید اپسیلون برای شما خیلی خیلی زوده استفاده ازش. روش وزنی ساده رو استفاده کنین، یه هدف دارین z1 و یه هدف دیگه دارین z2 جمع وزنی اینا رو میذارین z به صورت z=e=w1*z1+w2*z2 بعد z رو بهینه میکنین. علامت ها و جهت ها رو دقت کنین.
یعنی چی چجوری تعریف میشه؟
سلام خسته نباشید.من یک مدل برنامه ریزی عدد صحیح مختلط دوهدفه یکی از اهدافminو دیگریmaxمیباشد.میخوام در گمز کدنویسیش کنم.چندتا سوال داشتم.اول اینکه چندهدفه هست روشی ک ساده باشه رو اگر ممکنه معرفی کنید و در اختیارم قرار دهید با روشهای چندهدفه اشنایی ندارم اصلا لطفا کمک کنید.و اینکه در کدنویسی گمز وجود داده های جدولی و اسکالر الزامیست؟؟
سلام
سوال اول: ساده ترین راه روش وزنی هست، و شما میتونید از روش وزنی ساده استفاده کنید. میتونید روشهای دیگه که اونا هم ساده هستن مث روش معیار جامع هم استفاده کنین. یا روش ال پی متریک
سوال دوم: خیر الزامی نیست. مهم اینه که شما میخواین یه عدد رو به گمز بفهمونین، چجوریش رو دیگه شما تشخیص میدین.
سلام،دانشجوي ارشد رياضي كاربردي هستم و موضوع پايان نامه من در مورد بهينه سازي مساله هاي چند هدفه و حل ان با روش epsilon-constraint است، هيچ كجا نتونستم مقاله يا مطلبي كه اين روش رو بطور كامل با يه مثال عددي توضيح بده پيدا كنم،كسي هست كه بتونه كمك كنه؟ برنامش تو گمز هست ولي بايد تو فصل دو اين روش رو كامل توضيح بدم
سلام
تو سایت gams.com هست. ترجمه کنین
سلام، استفاده از روش وزن دهی توابع شرایط خاصی داره؟
سلام
استقلال توابع هدف خیلی مهمه توی وزن دهی. روش وزنی ساده بجز این شرط خواصی نداره تا جایی که خاطرم باشه
سلام، وقتتون بخیر
من یه محدودیت دارم که به ازای i شامل {a,b} تعذیف شده، تو این محدودیت تابع سام دارم که به ازای k عضو D تعریف شده، که این D تحت عنوان جدولی در قسمت table تعریف شده است، قسمت ord این رو باید چطور بنویسم؟
sum((iter,t,k)$(ord(k)???)
سلام
یعنی چی k عضو D هست؟
k اندیسه؟ D چیه؟
ممنون از پاسخگوییتون، ولی مشکلی که وجود داره اینه که در طول برنامه و قبل از رسیدن به لوپ نهایی برای solve برنامه، نیاز به مقداردهی به sd هست. در غیراین صورت ارور 141 میده:
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.
(چون حل برنامه به مقادیر دیتا در روزِ بخصوصِ sd بستگی داره)
برای حل این مشکل چه کاری میشه کرد؟
با نوشتن چنتا دستور for برای sd تونستم مشکلمو حل کنم:)
ممنونم از کمکتون:)
خب درسته. قبل دستور solve باید بهش مقدار بدین دیگه. رویه ای که نوشتم رو دقت کنین حتما. رویه همون هست که نوشتم براتون.
سلام وقتتون بخیر
ببخشید من یه Z (تابع هدف) دارم که هزینه رو توی “یک روز مشخص”(مثلا sd عدد اسکالریه که بعنوان ورودی تعریف کردم) محاسبه میکنه. حالا میخوام همین تابع هدف رو برای 30 روز بعدی هم نشون بده.یه لوپ تعریف کردم که 30 بار تکرار بشه؛ هربار برنامم solve و display بشه و مقدار sd یکی اضافه بشه. اما چون sd رو در ورودی عدد ثابت تعیین کردم sd همون عدد اولیه میمونه و تغییری نمیکنه. سعی کردم از اندیسی که مربوط به sd است هم استفاده کنم ولی گمز افزایش اندیس صرف یا با ord رو هم ارور میده.ممنون میشم اگه راهنماییم کنین:)
و اینکه ممنونم بابت سایت خوبتون:)
البته از دستور for هم استفاده کردم ولی بازم چون مقدار اولیه ورودی sd مقدار مشخصیه که مقدارش در قسمت scalar ذکر شده؛ هربار برنامه فقط به ازای همون sd اولیه بدست میاد…
سلام
یه اندیس t تعریف کنین که مربوط به 30 روز هست. بعد sdوsdd رو به عنوان پارامتر تعریف کنین و به sd عددی ندین به شکل زیر:
set t/1*30/
alias(t,tt)
parameter sd,sdd(t);
بعد این به sdd مقدار بدین.
بعد تو لوپتون به شکل زیر عمل کنین:
Loop(tt,
sd=sdd(tt);
solve...
.
.
);
option pertubation در گمز چه کاربردی دارد؟
سلام
perturbation درسته . به طور مستقیم این آپشن در گمز نیست و من ندیدم و سرچ هم کردم. perturbation یک متد ریاضی هست خواستی روش کارشو برات ایمیل میکنم.
با سلام
لطفا نحوه استفاده از دستور crbatch.gms که توسط آن چندين فايل را بتوان پشت سر همديگر اجرا نمود را بفرماييد
با تشکر
سلام
من کار نکردم متاسفانه. اگه وقت کردم و یاد گرفتم برای شمام همینجا توضیح میدم. و اگه شما یاد گرفتین بگین که دوستان هم یاد بگیرن.
سلام در گمز تنظیماتی هست که بتواند تباهیدگی را برطرف نماید؟ممنون
سلام
اطلاعی ندارم.
مشکل چیه
با عرض سلام و خسته نباشید و تشکر فراوان بابت سایت بسیار پربارتون .
من یک مدل غیر خطی تو گز با استفاده از راهنمایی های شما نوشتم و تنها خطای من 65 هست که می گه متغیر گسسته فقط می تونه تو mip و … باشه این درحالیه که به متغیر نام تابع هدف من در مرحله سلو این ارور رو می ده.
بسیار ممنون میشم اگه منو راهنمایی کنید.
سلام
ممنون و خواهش میکنم
اگه متغیر گسسته دارین، مدلتون اگه غیر خطی از minlp و اگه خطیه mip استفاده کنین. اونجایی که گفتین solve …. using …. lp….obj به جای lp بزنین minlp
سلام. خسته نباشید و ممنون بابت سایت فوق العاده تون
ببخشید جناب محمودی ی سوال داشتم از خدمتتون. من کد بندرز تصادفی مربوط به مساله PRP رو توی گمز نوشتم که تعدادی تکرار تعریف کردم که توی هر تکرار خروجی یک حد بالا و یک حد پایین هست که زمانی متوقف میشه که این حدود به هم نزدیک بشن. کدم اجرا میشه و اروری نمیده و از درستی کات هایی که نوشتم هم مطمئنم ولی متأسفانه بعد از چند تکرار (تقریبا 60 تا 80 تکرار) دیگه این حدود تغییر نمی کنند من حتی تعداد تکرارها رو به 500 تا رسوندم، سایز مسأله رو هم کوچیک کردم ولی باز هم از ی جایی به بعد دیگه حدود تغییر نمی کنن. می خواستم ببینم بر حسب تجربه تون نمی دونید من باید چه تغییری بدم که مشکل برطرف بشه؟ بیشتر از یک ماهه که روی این کد وقت گذاشتم خیلی از تغییرات رو هم امتحان کردم مثلا مقدار integrality tolerance رو تغییر دادم ولی جواب تغییری نکرد. واقعا ممنون میشم ازتون اگر مثل همیشه راهنماییم کنید.
سلام
دقیقا متوجه نمیشم مشکلش از کجا میتونه باشه. ولی شاید اصلاح دوباره مدل بتونه کمک کنه. یا مثلا وقتی که مدل تو هر تکرار حل شد، مقادیر بهینه رو مثلا صفر کنین که دوباره بیاد بهشون مقدار بده (این شاید به دردتون نخوره نمیدونم). یه کد هم بنویسین که هر وقت جواب نشدنی شد متوقف بشه. البته شاید کد شما نشدنی تولید نکنه. ولی اگه کرد شاید نقطه شروع خوبی باشه.
خواستید کد و رویه ی مدل رو بفرستین، اگه بتونم کمک میکنم
سلام
من ی مدل کد کردم و اروری نمیده و تو پنجره چپ solver ندارم مشکل چیه؟
سلام
یعنی چی تو پنجره چپ سالور ندارین؟
دو تای اولو با mip حل کردم و تابع هدف سوم ک خطارو مینیمم میکنه رو با minlp
سلام
مقداری متوجه سوال من نشدین. لطفا کد رو به ایمیل سایت بفرستین. و مشکل رو دقیق تر توضیح بدین.
سلام.خسته نباشید.ببخشید من یه مساله mip داشتم یعنی دوتا از متغیرام باینری و یکیش مثبت بود.مسالم دو هدفه هستش که اومدم با روش معیار جامع حلش کردم و تو قسمت solve حل رو با mipزدم خطا میداد و minlp که زدم مدل ران شد ولی متغیرهای باینریم اشتباه شدن و مقادیری غیر از صفر و یک گرفتن در حالیکه بعنوان binary variable هم تعریفشون کردم. نظر شما چیه؟
برای روش معیار جامع مقدار بهینه هر تابع هدف رو منهای تابع هدف و تقسیم بر تابع هدف کردم
سلام
دو کد زیر رو قبل از دستور solve بنویسین بعد مشخص میشه که مشکل چیه. اگه گفت نشدنیه که باید اصلاح کنین. اگه نگفت که اون اعداد تصحیح میشن. در ضمن باید لایسنس هم داشته باشین. احتمالا
option minlp=baron;
option optcr=0;
قبل از solve اخر که مربوط به حداقل کردن هر تابع هدف از مقدار بهینش هستش این کدی که شما فرمودین رو گداشتم.z1وz2رو حل کرد ولی z3 تو قسمت solution report زده
**** SOLVER STATUS 10 Solver Failure
**** MODEL STATUS 12 Error Unknown
**** OBJECTIVE VALUE NA
برا هرکدوم یه دستور solve دارین؟
بله برای هر کدوم جدا دارم
سلام
اولا این یعنی مدل به صورت نشدنی رفته جلو و یه جواب بهتون داده. ثانیا اینکه تقسیم بر تابع هدف نکنین. تقسیم بر بازه ی تابع هدف بکنین.
سعی کنین با یه الگوریتم دقیق امتحان کنین.
این کامنتم جا مونده بود
سلام آقای محمودی
خسته نباشید
آیا روش تجزیه بندرز مقدار تابع هدف رو بهینه تر میکنه یا فقط زمان حل مساله رو کاهش میده نسبت به حالتی که ما با سالورهای موجود در گمز مساله رو حل میکنیم؟
سلام
نه بهینه تر نمیکنه.
سلام.خسته نباشید.من یه مدل دو هدفه دارم که وقتی دو تا هدفو با هم جمع میزنم(یعنی فرض میکنم که اهداف هم جهت باشن و همدیگه رو نقض نکنن) جواب مدل با وقتی که تک تکشون رو جدا حل میکنم و جمع میزنم تقریبا برابر میشه و ی خورده اختلاف داره. بنظر شما این یعنی اینکه توابعم در تضاد نیستن و میشه با جمع بستن حل کرد؟(با هم جمع میزنم 29/899 میشه و تک تک حل میکنم یکیش 2/413و دیگری 28/001)
ی سوالم راجع به روش محدودیت اپسیلون دارم؟الان اختلاف مقادیر مقادیر بهینه دو تابع هدف رو باید بدست بیارم و هر چی شد باید به چند قسمت تقسیمش کنم؟
سلام
ممنون
ممکنه هم جهت باشن، یا اینکه فضای شدنی شما اونقد کوچیک باشه که فقط بتونن این اعداد رو بگیرن. شایدم یه استثنا باشه و ناحیه شما غیر محدب باشه. سوال دوم. بله یه جورایی
من درست روش محدودیت اپسیلون رو متوجه نمیشوم میشه یه مثال بزنین
متشکرم
سلام
شما دوتا هدف دارین. یکیش زمان انجام پروژه ست یکیشم هزینه پروژه. جفتش رو هم میخواین کم کنین. اگه بخواین زمان رو کم کنین، هزینه هم میره بالا. و بالعکس.
فرض کنیم کمترین هزینه 10 شد. بیشترین هزینه 100 و کمترین زمان 40 و بیشترین زمان 60 شد.
حالا اگه بخوایم مثلا 10 تا جواب تولید کنیم اپسیلون ما میشه 1/10، هر بازه رو به ده بخش تقسیم میکنیم.
بعد مثلا هدف رو هزینه میذاریم. کمینه میکنیم. یه جواب به دست میاد. بعد ده درصد به این مقدار الانش اضافه میکنیم. یه جواب دیگه برا زمان به دست میاد همینجوری میریم جلو تا یه سری جواب اصطلاحا پارتویی تولید بشه.
سلام من میخوام این دستور رو تو gams اجرا کنم ولی ارور میده دلیل ارورش چیه ؟
SETS
I Nodes /1*5.
.
.
.
COST .. Z =E= SUM(J, X(J)*L(J));
TARGET(I) .. SUM(J$(C(I) = S(J)), X(J)) - SUM(J$(C(I) = E(J)), X(J)) =E= T(I);
MODEL GRAPH /ALL/;
SOLVE GRAPH USING MIP MINIMIZING Z;
سلام
ارور نمیده.
سلام.
من چطوری میتونم بفهمم که سالور بارون، جواب بیکران پیدا کرده یا نه؟ شما فرمودین بارون نمیگه به ما که مساله واقعا نشدنی هست یا جواب بیکران داره.
سلام
میتونین یه حد بالا برای تابع هدفتون در نظر بگیرین (دیگه اینکه چه حد بالایی و چه عددی بستگی به شناخت شما از مدل داره) و ران کنین مدل رو. اگه جواب داد، یعنی بیکرانه. اگه نداد یعنی جواب در اصل نشدنی بوده. با سالورای دیگه هم میتونین امتحان کنین.
ممکنه بخاطر کدینگ غلط هم باشه دشگه، درسته؟ یعنی مساله در اصل شدنی باشه ولی چون درست کد نزدیم بگه نشدنیه؟
بله ممکنه
با سلام و خسته نباشید
من برنامه گمز ران کردم که هیج اروری نمیگره اما بعد از ران کردن ریپورت گزارش وجود نداره! دلیلش چیه بنظرتون؟
با تشکر
سلام
لایسنس ندارین شما
سلام. ممنون بابت راهنمایی های مفدیتون.
دستور یا روشی هست که بعده اینکه گمز مساله رو حل کرد ی صدایی تولید کنه که بفهمیم حل تموم شده؟
سلام
من که ندیدم والا. خب یه بیکار گیر بیارین بگین هر وقت این دکمه استاپ به کلوز تبدیل شد بهم بگو :دی
یک سوال دیگه: در شبیه سازی وقتی یک پارامتر را تغییر میدم مدل جواب میدهد اما خلاصه
**** SOLVER STATUS 1 Normal Completion
**** MODEL STATUS 5 Locally Infeasible
0 NONOPT
2 INFEASIBLE (INFES)
SUM 3.0398E-6
MAX 1.6689E-6
MEAN 1.5199E-6
0 UNBOUNDED
0 REDEFINED
1 ERRORS ( ****)
ایا این نتایج با توجه به کوچک بودن infes قابل اتکا است؟ پیشنهاد شما برای رفع این خطا چیست با توجه به اینکه در حالت پایه نتیجه مدل اپتیمال و بدون خطا است و با تغییر پارامتر در مرحله شبیه سازی این نتیجه ایجاد می شود.
با سپاس
سلام
بحث قابلیت اتکا، بستگی به مدل و دقت مدل شما داره.
راهکار: دستور option optcr=0; رو قبل از دستور solve بذارین. و باز ران کنین مدل رو. اگه شدنی شد که فبها. اگه نشد مدل نشدنیه و باید تحلیل کنین دیگه کامل.
در ضمن با سالورهای دیگه هم امتحان کنین
سلام
این خطا رو چطور میشه رفع کرد؟
7 error(s): vcPower: FUNC DOMAIN: x**c, x < 0 (RETURNED 0)
مدل با mcp حل میشه و نمیتونم حد پایین تعیین کنم به اضافه اینکه توان عدد صحیح نیست که از دستور power استفاده کنم.
ممنون
سلام
تابع power یه جوریه که شما پایه تون نباید صفر بشه. اگه علامتش براتون مهم نیست، پایه رو بذارین تو abs و اگه براتون مهمه که باید تشخیص بدین خروجی تابع مثبت میشه یا منفی، اگه منفیه بکشینش بیرون در هر صورت باید یه کاری کنین که این علامت منفی از تابع خارج بشه.
با سلام
خسته نباشید
مرسی واسه وقتی که واسه دوستان میزاری
من یه سوال داشتم، میخوام تو گمز eps رو پیاده کنم. از اون مثالی که خود گمز تو لایبرریش زده سر در نمیارم. از کجا میتونم مثال گمزیشو پیدا کنم؟؟
مرسی
با سلام
خسته نباشید
مسی واسه وقتی که واسه دوستان میزاری
من یه سوال داشتم، میخوان تو گمز eps رو پیاده کنم. از اون مثالی که ود گمز تو لایبرریش زده سد در نمیارم. از میتونم مثال گمزیشو چیدا کنم؟؟
مرسی
سلام
ممنونم ازتون.
در کل نفهمیدم چی میگین. واضح نبود. ولی اگه میخواین eps رو یاد بگیرین که باید مطالعه کنید و یه سری مثال هم پیاده کنین تا به مدل خودتون برسین. اگرم میخواین مدلتون رو بفرستین بدم همکارا کد میکنن براتون.
با سلام
مدلی در نرم افزار گمز نوشتم و ارور ۲۷۵ رو نشون میده لطفاً در صورت امکان توضیحاتی ارائه بفرمائید.
با تشکر
سلام . متن انگلیسی ارور را هم بفرستین یا اینکه مدل تونو ایمیل کنید تا مشکل حل شود.
سلام
مدلی غیر خطی نوشتم که قید هاش رو دونه دونه ران کردم و خطا ها رو رفع کردم سر قید اخر مسئله نشدنی میشه و ماهیتشم اینکه مجموعه خروجی باید از یه مقدار کمتر باشه(ایم قدارم ضرب عدد ثابت در متغیری که مدل باید معلومش کنه) حالا من حتی عدد ها رو هم تغییر دادم بازم ناشدنی هست به نظرتون باشد چه کنم؟
ببخشید سریع نوشتم غلط املایی داره
خواهش میکنم اشکالی نداره. نتونستم بفهممش وا الا اصلاحش میکردم :))
سلام
شندنی بودن یک مدل سه تا دلیل اصلی داره:
اول اینکه مشکل از داده ها باشه. تو این حالت باید داده ها تغییر داده بشن و یه داده منطقی به مدل داده بشه.
دوم: مشکل از کد نویسی باشه. اینم که مشخصه.
سوم: مشکل از خود مدل باشه. اینجا باید ساختار مدل تغییر داده بشه و ناحیه ی شدنی ایجاد بشهو احتمالا مشکل شما هم همینه. باید تحلیل کنین دیگه. بگین که مثلا چرا این محدودیت با اونای دیگه مشکل داره؟ مقداری وقت گیره. ولی جواب میده.
چهارم: مشکل از solver باشه. تو این حالت سایز باید کوچیک بشه. لایسنس نصب بشه و یه سری آپشن دیگه
پیشنهاد من به شما اینه که سایز مسئله رو اونقدر کوچیک کنین که بتونین راحت تر با عدد گذاری که گمز انجام میده تحلیلش کنین
با سلام
برای خطی کردن تابع sign در گمز باید چیکار کرد؟
سلام
یه رویه میتونه به شکل زیر باشه. دقت کنید که y همون تابع شما، و x1,x2 هم متغیرهای باینری هستن:
one.. b1 + b2 =l= 1;
defsign.. y =e= x1 - x2;
موفق باشید
سلام و تشکر بابت سایت خوبتون
مدلی رو در گمز حل کردم و مدت حل مدل توسط گمز کمتر از 1 ثانیه بود
حال همون مدل رو با تغییرات اندکی وبا اضافه کردن sqrt در تابع هدف، وارد گمز کردم، ولی گمز جواب نمیده، در واقع گمز در حالت ران قرار میگیره و هرچقد هم که صبر میکنم جوابی نمیده، این ناشی از درست نبودن مدل هست ؟؟ویا اینکه گمز در حل مدل توانا نیست؟؟
واگر گمز نمیتونه حل کنه، پیشنهادتون چی هست؟؟
پیشاپیش ممنون بابت پاسخگویی
سلام
مدلتون رو غیر خطی کردین. سالور مناسبی براش انتخاب کنین، شاید سایز هم بردین بالا
درسته
مدل غیر خطی شده و سالور بارون رو براش در نظر گرفتم، ولی در سایز مدل تغییری ایجاد نکردم
در هرصورت ممنون از جوابتون
سلام ، میخوام بدونم که چطور میتونم یه مسئله رو از روش b&b (شاخه و کران ) توی گمز حل کنم ؟
لطفا ادرس جایی که اموزش کاملش هست رو بدید
سلام solver های گمز رو در منوی بالا نرم افزار قسمت help و آوردن گزینه ی solver manual می تونید ببینید و توضیحات در آنجا نوشته شده است.
با سلام
فرض کنید دو تا تابع داریم که به روش اپسیلون محدودیت تقویت شده حلش کردیم و برای تابع اول و دوم مثلا ده بار تکرار شده و جواباشو داریم .الان میخوایم نمودار تابع اول برحسب تابع دوم رو رسم کنیم.اینکارو چجوری با گمز باید انجام بدیم؟
ممنون میشم اگه کسی میدونه راهنماییم کنه 🙂
سلام
کار درستی نیست با گمز رسم کنید نمودار ها رو. مقداری نفهمه. شما جوابا رو ببرید تو متلب یا اکسل اونجا رسمش کنید
سلام
من یه مدل دارم که دوتا متغیر مثبت پیوسته و یک متغیر باینری داره.قیل از نوشتن مدل مقدار متغیر باینری را برابر یک گذاشتم. با این حساب باید مدل من یک مدل lp بشه ولی وقتی ران میکنم ارور 65 میده و میگه متغیرهای گسسته نمیتونن lp باشن.لطفا راهنماییم کنید.
سلام
خب وقتی شما مقدار رو ثابت میگیرین. عملاً گمز به عنوان متغیر حسابش میکنه ولی مقدارش معلومه. شما به جا اینکه متغیر باینری تعریف کنید بیاید همین متغیر رو به عنوان پارامتر تعریف کنید و مقدارش هم برابر یک قرار بدید.
سلام خیلی ممنون فیض بردیم
سلام
خواهش میکنم
با سلام . در تعریف متغییر ها عبارت روبرو را دارم
(x(i,t,j بعد از solve می خواهم روی x.l شرط if بگذارم به چه صورت این کار را انجام دهم.
یا کلاً روی نتیجه x چه جوری شرط بگذارم
سلام
یکی از روشها مشابه کد زیر میتونه باشه:
solve first using minlp minimizing z1;
parameter a(i2,k);
loop(i2,loop(k,
if( x1.l(i2,k)=0,
a(i2,k)=10
;)
;)
;)
;
موفق باشید
سلام.
در کدهای دینامیکی مثلا زمان از s تا t باشه.sum روی s که از لحظه یک تا t رو چطور کد کنم؟باتشکر
سلام
سوالتون مقداری گنگه، حالا با این فرض که منظورتون همینه جلو بریم.
فرض کنیم یه مجموعه داریم به اسم s و این s از 1 تا T=10 رو بتونه بگیره. یعنی:
Set s/1*10/ ;
خب. بعد میخواین سام بزنین.
sum(s,x(s))....
اگه منظورتون رو نفهمیدم بیشتر توضیح بدین
سلام من کد زیر رو برای محاسبه ی بازده نوشتم ممکنه راهنمایی ام کنید .
for (i=1:9,
for (t=1:487,
r(t,i)=(price(t+1,i)- price(t,i))/price(t,i);
););
سلام
اینکه فرمول درسه یا نه نمیدونم. بستگی به تعاریف شما داره. ولی دستور for رو به loop تبدیل کنید مناسبتره. حلقه رو هم اینجوری بنویسین:
loop(i, something);
سلام
در تعریف متغییر ها ، دوتا ازمتغییرها باینری (0 یا 1) هستند .ولی مقداری که بعد از حل بدست میاید مقداری اعشاری بین 0 و 1 است .بنظر شما علت چیه؟
باتشکر
سلام
ببخشید از کجا بفهیم که سولور سیپلکس گمز چنده؟ تو مقالات دیدم که نوشته مثلا گمز سولور سیپلکس 12.2
ولی قسمت سولور، عددی ننوشته.
باتشکر
سلام
دو راه دارید. یکی اینکه برید تو سایت gams و مشخصات نسخه ای از گمز که دارید استفاده میکنید رو مطالعه کنید. اونجا نوشته که کدوم نسخه از سالورها استفاده شده. راه دوم هم اینه که help نرم افزار رو بزنید، و solver manual رو بزنید
سلام در موقع اجر کردن خطای 71 میدهد، علت چیست؟
من در مساله حدود 200 قید دارم که اکثرشان قیدهای مساوی هستند! چطور باید تابع هدف را متمایز کنم؟
سلام
احتمالا شما یه معادله تعریف کردین تو قسمت equations بعدش فرمولی براش ننوشتین.
یعنی چی متمایز بکنین؟
سلام و ممنون از راهنماییهاتون
برای حل یه مساله دو هدفه با گمز، اگه نخوام روش وزنی به کار ببرم، یعنی می خوام هدفامو جدا بنویسم و واسه هر کدوم یه مقدار جداگانه بده، باید چیکار کنم؟
مرسی
سلام
اگه میخواین هدف ها با در نظر گرفتن هم جواب بدین از روش eps-constraint استفاده کنین، اگه نه که با دستور model برای هر کدوم هدف رو مشخص کنین و حلش کنین. البته روش زیاده، مث lp-metric
مدل منم دو هدفه که باید همزمان مورد بررسی قرار بگیره (در الگوریتم های فراابتکاری مفهوم پارتو) بهم گفتن باید از روش e-cons استفاده کنی آیا استفاده ازین روش درسته؟
سلام
بله درسته چون جواب پارتویی بهتون میده
سلام
ببخشید، من تابع هدف زیر رو وارد میکنم ولی ارور set is under control already رو میده
چرا؟
sum((i,j,t),q(i,t)*x(i,j,t)
سلام
احتمالا شما تو تعریف اسم محدودیت، گفتین که محدودیت به ازای فلان اندیس برقراره
سلام یه راهش اینه که روی اندیس مورد نظر تو محدودیت (به طور مثال اگه محدودیت روی اندیس i باشه) اندیس دیگه ای مانند i1 تعریف کنی مانند خود i که از دستور alias استفاده کنی. مثلا بنویسی
alias(I1,i)
سلام
به اینم دقت کنین که شما یه پرانتز کمتر نوشتین
سلام
برای استفاده از دو تابع هدف برای حل کننده bonmin که امکان کار با دو تابع هدف رو داره ،چجوری دو تابع هدف رو مدل کنم؟تک به تک بنویسم که مینیمم بشه یا به روش های بالا که گفتید باید ازش استفاده کرد؟
برنامه من موقع کامپایل کردن خطا نمیده اما جوابم نمیده، به نظرتون مشکل چی میتونه باشه؟
در برنامه من که روی شبکه ها می باشد، یک مجموعه قطر دارم که هرکدوم یک هزینه ای دارند این رو چجوری مدل کنم یعنی بگم قطر(1) d هزینه (c(1 رو داره؟ بعد برای هر یال یک مجموعه قطر مثلا 14 تا قطر وجود دارد برای مدلسازی فقط باید از متغیرهای باینری( x(i کنار هر کدوم از این قطرهای( d(i استفاده کرد یا روش بهتری برای مدلسازی وجود داره که از این همه متغیر باینری استفاده نشه؟ مثلا آیا میشه همین مجموعه قطر یا هزینه رو با یکم تغییر به عنوان متغیر استفاده کرد؟
سلام من عضو میشم ولی بعد که می خواهم وارد شوم خطای زیر رو میده
شما مجوز کافی برای دسترسی بهاین برگه را ندارید.
چکار کنم
سلام دوستان
کسی میتونه راهنمایی کنه چطوره یک بهینه سازی چند هدفه را در گمز اجرا کنیم ؟
سلام
شما کلی روش هست که باید یاد بگیرین، باید بررسی کنین کدوم به دردتون میخوره، روش وزنی، نرمالسازی، lp متریک، eps و… . فقط باید بدونین کدوم به دردتون میخوره
سلام کد لایسنس معتبر برای نسخه 24.4 می خواهم و چگونگی ثبت ان
اگر بخوایم از روش اپسیلون کانسترینت استفاده کنیم باید در کد این روش بیاریم؟؟؟
نسخه unlimited برای گمز چطور میشه دانلود کرد؟؟؟
متوجه سوولتون نشدم.
نسخه پرمیوم هست و باید از سایتایی نظیر gams.com خریداری کنین
سلام. وقتتون بخیر. خطای 125 Set is under control already به چه علت ممکنه رخ بده؟
سلام
ممنون
معمولا به خاطر اینه که شما گفتبن محدودیت به ازای فلان اندیس برقرار است ولی بعدش تو دستوراتی مثل prod و sum رو همین انئیس جمع بستین
خیلی ممنون. مشکلم برطرف شد.
سلام
مرسی از سایت خوبتون
من مدلی رو ران کردم که چند تا از محدودیتهام غیر خطی هستند و متغیرام هم صفرو یک و پیوسته اند، از MIQCP که استفاده میکنم کلا جواب صفر میده. MINLP هم که میذارم چند مقدار برای هدف نشون میده. مگه نباید یک عدد باشه؟ معنیش چیه و چه مشکلی داره؟ممنون میشم در اینمورد راهنمایی کنید. solver های مختلفم امتحان کردم ولی باز به همین شکله.
تشکر
سلام
شما باید به پیامی که solver های gams بهتون وقت حل مدل میده و مخصوصا خطوط اخر پیام دقت کنین. اینکه جوابشون یکی نیست یکی به خاطر این پیامه و یکی هم به خاطر روششونه. به احتمال زیاد هیچکدوم به جواب منطقی نرسیدن.
خواهش میکنم و موفق باشید
با سلام و خسته نباشید
عبارت منطقی or که برای مجموعه محدودیت زیر است . بعد از خطی شدن به صورت زیر است به چه صورت در گمز بیان می شود؟؟
(Mj=M(j-1
j binary
ممنون
سلام . نرمالیزه کردن در توابع هدف به چه صورت است.من در مدل ریاضی پایان نامه ام دو تا تابع هدف دارم که در کد گمز باید نرمالیزه بشند به چه صورت باید این کار را انجام بدم.لطفا راهنمایی بفرمایید تشکر
سلام
در روش نرمالیزه کردن، ما به دنبال یافتن ضرایبی برای توابع هدف هستیم که تمامی انها را به یک هدف تبدیل کنیم. در این روش ابتدا یک هدف را در نطر گرفته و تمامی هدف های دیگر را به محدودیت تبدیل میکنیم. این کار را برای همه اهداف انجام می دهیم. با هر بار حل مدل مقادیری برای اهداف به دست می اید. از این مقادیر برای تک هدفه کردن هدفمان استفاده میکنیم.
Z=e=(z1-z1star)/z1star+(z2-z2star)/z2star ;
موفق باشید
با سلام مجدد
عبارت زیر در گمز را باید به چه صورت نوشت ؟برای من ارور 145 و 148 میده…نمیدونم باید چه کنم؟
ممنون از سایت خوبتون
Y(i,t) > Y((i-1),t)
سلام
Y(i,t)=g=y(t-1);
G یعنی grater than
برای مطالعات بیشتر به بخش معادلات مراجعه کنید
با سلام و خسته نباشید
من دو تا سوال داشتم
1. در یکی از محدودیتای مدلم متغیرم از یک مقدار تابت کمتر می باشد و من اون رو این طوری در گمز نوشتم ولی ایراد میگیره
x(t) =l= CH
erorr 149؟ میشه توضیح بدین من باید چه کار کنم؟
2. یک عبارت سیگما دارم که شامل متغیری با چهار اندیس می باشد (i,t,g,k,) هر دو اندیس g و k از یک مجموعه می باشند. میخاهم روی سه متغیر i,g,k سیگما بنویسم ..نمیدونم باید چه طور بنویسم…. ممنون…
سلام
سوال اول: کد زیر رو بعد اینکه تغیر رو تعریف کردین بذاری. توجه بشه که نیازی نیست تو equation نوشته بشه
X.lo(ch)=ch ;
تخصیص کران بالا به متغیر اسمشه.
سوال دوم: یه مثال:
Sum((i,g,k),x(i,t,g,k);
موفق باشین
ممنون از پاسخگویی سریعتون
سلام
خواهش میکنم
سلام
من یه مدل چندهدفه دارم که کدشو نوشتم و تنها خطایی که داره ارور لایسنس هستش که میگه باید بعد از 2014 باشه ولی همه کرکایی که پیدا کردم واسه قبل از 2005 هستن
لطفا کمکم کنید
سلام
نسخه گمزتون چنده؟
با سلام و احترام و ضمن تشکر از راهنماییهای خوبتون
برنامه ای نوشتم که یکی از محدودیت های آن به صورت زیر است، هیچ کدوم از محدودیت های دیگه این رو نقض نمیکنه..چطور ممکنه که در حالت تساوی و کوچکتر مساوی محدودیت غیر موجه شود..
C6(t)..sum(i,A(i,t)$subi(i))+r(t)=E=d(t);
C6(1).. A(3,1) + A(4,1) + A(5,1) + A(6,1) + A(7,1) + A(8,1) + A(9,1) + A(10,1)
+ A(11,1) + A(12,1) + A(13,1) + A(14,1) + A(15,1) + A(16,1) + A(17,1)
+ A(18,1) + A(19,1) + A(20,1) + A(21,1) + A(22,1) + A(23,1) + A(24,1)
+ A(25,1) + A(26,1) + A(27,1) + A(28,1) + A(29,1) + A(30,1) + A(31,1)
+ A(32,1) + A(33,1) + A(34,1) + A(35,1) + A(36,1) + A(37,1) + A(38,1)
+ A(39,1) + A(40,1) + A(41,1) + A(42,1) + R(1) =E= 50 ;
(LHS = 0, INFES = 50 ****)
d(t) رو به صورت پارامتر تعریف کردم و مقادیر مثبتی رو به ازای آن گذاشتم و از طریق مقدار آن که تقاضا محسوب می شود باید مقدار A و r تعیین شود..
سلام
با یه محدودیت که نمیشه چیزی گفت. ولی مطمئن باشین قطعا تناقضی وجود داره
با سلام
کدی در گمز زدم که ارور زیر را می دهد ظاهرا مشکلی ندارد
میشه لطفا راهنمایی کنید
125 Set is under control already
با تشکر
C9(i,t)..-sum(i,v(i-1,t-1)$subi(i)+y(i,t)$subi(i))-r(t)$subi(i)-n(t)*BIGDELTA(t)-sum(s,p(t,s))=L=-d(t);
به ازای محدودیت بالا ارور 125 را می دهد
سلام
شما اول نوشتین محدودیت 9 به ازای i ولی باز روی i سامیشن بستین. این درست نیست
با سلام و ضمن تشکر از راهنمایی های خوبتون
من برنامه ای نوشتم که سطر به سطر رو چک کردم و ارور نمیداد اما وقتی میخواهم که برنامه را حل کند پیام می دهد:
ALL rows and columns eliminated
و برای مساله مینیمم سازی مقدار 0 را برمی گرداند در حالیکه محدودیتها مشکلی ندارد.
لطفا پیامی که می دهد اینجا بنویسید
— Job Untitled_5.gms Start 07/10/15 22:28:50 24.1.2 r40979 WEX-WEI x86_64/MS Windows
GAMS 24.1.2 Copyright (C) 1987-2013 GAMS Development. All rights reserved
Licensee: Gary Goldstein G010614:2121CA-WIN
Decision Ware, Inc. DC2807
— Starting compilation
— Untitled_5.gms(321) 3 Mb
— Starting execution: elapsed 0:00:00.006
— Generating MIP model Untitled_5
— Untitled_5.gms(319) 14 Mb
— 45,844 rows 21,254 columns 135,870 non-zeroes
— 21,069 discrete-columns
***
*** 19183 Integer +INF Bounds have been reset to 100
***
— Executing CPLEX: elapsed 0:00:00.125
IBM ILOG CPLEX 24.1.2 r40979 Released Jun 16, 2013 WEI x86_64/MS Windows
— GAMS/Cplex licensed for continuous and discrete problems.
Cplex 12.5.1.0
Reading data…
Starting Cplex…
Tried aggregator 4 times.
MIP Presolve eliminated 45012 rows and 20551 columns.
MIP Presolve modified 20854 coefficients.
Aggregator did 573 substitutions.
Reduced MIP has 259 rows, 130 columns, and 665 nonzeros.
Reduced MIP has 20 binaries, 110 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.06 sec. (43.58 ticks)
Found incumbent of value 0.000000 after 0.06 sec. (46.98 ticks)
Root node processing (before b&c):
Real time = 0.06 sec. (47.69 ticks)
Sequential b&c:
Real time = 0.00 sec. (0.00 ticks)
————
Total (root+branch&cut) = 0.06 sec. (47.69 ticks)
MIP status(101): integer optimal solution
Cplex Time: 0.06sec (det. 47.69 ticks)
Fixing integer variables, and solving final LP…
Tried aggregator 1 time.
LP Presolve eliminated 45844 rows and 21254 columns.
All rows and columns eliminated.
Presolve time = 0.02 sec. (13.15 ticks)
Iteration log . . .
Iteration: 1 Dual objective = 0.000000
Fixed MIP status(1): optimal
Cplex Time: 0.03sec (det. 36.14 ticks)
Proven optimal solution.
MIP Solution: 0.000000 (0 iterations, 0 nodes)
Final Solve: 0.000000 (1 iterations)
Best possible: 0.000000
Absolute gap: 0.000000
Relative gap: 0.000000
— Restarting execution
— Untitled_5.gms(319) 4 Mb
— Reading solution for model Untitled_5
— Untitled_5.gms(319) 7 Mb
*** Status: Normal completion
— Job Untitled_5.gms Stop 07/10/15 22:28:51 elapsed 0:00:00.496
سلام
process نشون میده که گمز مشکلی رو گیا نکرده. یعنی یه جورایی شما مدل یا داده هاتون رو باد تغییر بدین که جواب منطقی بگیرین
با سلام.بهترین solver برای حل تابع sign کدومه؟
نمیدونم چرا معادله equationam درست منتقل نمیشه به قسمت نظرات واسه همین معادلم رو جدا میفرستم
(first.. y =E= (x*x)$(x 0)+
با سلام و تشکر بابت سایت خیلی خوبتون
من کد زیر رو میخوام اجرا کنه،ولی خطا میگیره و متوجه نمیشم مشکلش کجاست
; 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
مرسی از راهنماییتون
با سلام و تشکر بابت سایت خیلی خوبتون
من کد زیر رو میخوام اجرا کنه،ولی خطا میگیره و متوجه نمیشم مشکلش کجاست
; 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 گذاشتین رو نمیفهمه. شما باید از تابع ifthen استفاده کنید یا مدلتون رو تغییر بدین مقداری
سلام.خسته نباشید.ببخشید من در نوشتن تابع سیگما دچار مشکل شده ام.شماره خطای 125 میده
eq2 (m,t)..h(t)=e=(1+l(t-1))*(h(t-1)+sum(m,u(m,t-1))-sum (m,v(m,t-1)));
ممنون میشم راهنمایی کنید.
سلام
ظاهرا درسته. فقط قسمت زیر رو اصلاح کنین
l(t-1)
با سلام و خسته نباشید. میخواستم بدونم محدودیتی که سیگما روی اجتماع i,j هست چه طوری باید بنویسم؟
سلام
اگر منظورتون سیگما روی I و j هست به شکل زیر: (یعنی سیگما روی هر دو)
sum((i,j),x(i,j))
ولی اگه منظورتون استفاده از اجتماع دو مجموعه هست، باید ابتدا دو مجوعه رو تعریف کنید، بعد اجتماع اون دوتا و بعدشم روی اون مجموعه ی اجتماع، سیگما ببندید. اگه منظورتون دومی هست از این تاپیک میتونین استفاده کنین.
موفق باشید
سلام ، خسته نباشید
من میخواستم یک مدل چهار هدفه رو تو گمز مدل کنم.
1. شنیدم که گمز مدل چند هدفه رو حل میکنه ، اگه درسته ممکنه بگین با چه دستوری میتونم این کار رو انجام بدم؟
2. حلقه for تو گمز چطوری نوشته میشه؟ مثلا میخوام به ازای اندیس های i و t ، روی اندیس j ، جمع (sum) ببندیم.
پیشاپیش از راهنماییتون ممنونم.
سلام
سوال اول: دستور خاصی نیست. یک روش و قاعده داره که توضیحش زیاده. شما تو سایت gams.com عبارت mulltiobjective optimization رو سرچ بزنین. یک مقدار وقت گیر هست یادگیریش ولی سایت خیلی مفیدیه. البته مقالات زیادی هم تو این حوزه نوشته شده.
سوال دوم: من فکر میکنم منظورتون از این کار نوشتن صرفا سیگما هست. فرض کنید یک متغیر یا پارامتر دارید به نام (X(i,j,t حال میخواهید روی اندیس j سیگما بزنید. دستور زیر اینو نشون میده.
sum(j, X(i,j,t) )
اگر مشکلی داشتید تو همین تاپیک بفرمایید که جواب بدم.
موفق باشید
خیلی ممنون از راهنماییتون
سلام
خواهش میکنم
salam age bekhaeim meghdare ye tabaro behine koni, bayad az che dastori estefade konim.mamnon
سلام
شما وقتی یک تابع دارید، باید برای آن اسمی تعریف کنید. مثلا z
سپس در بخش متغیرها ک متغیر به نام variable z تعریف نمایید.
سپس در بخش Equations فرمول تابع را مساوی z قرار دهید.
سپس در دستور Solve به نرم افزار بفهمانید که z را بهینه کند.
موفق باشید
من یک مدل minlp دارم. ولی یک ارور میده در مورد rminlp بودن!
چه ربطی داره آخه؟
راه حلی داره؟
سلام
GAMS مدل شما رو تحت عنوان RMINLP میشناسه. شما تایپ مدلتون رو همین بذارین