اولین خروجی مربوط به دستور solve، نام معادلات به همراه فرمول گسترده آنها می باشد. این بخش تحت عنوان Equation Listing در فایل lst زخیره می شود.
بخش معادلات گسترده در مثال کاربردی 1 به صورت شکل زیر خواهد بود. همانطور که ملاحظه می کنید، تابع هدف مسئله به صورت گسترده به همراه تمامی ضرایب، متغیرها و اندیس های مختلف آورده شده است. محدودیت اول به ازای مقادیری که اندیس i (1و2و3) به خود می گیرد، به سه محدودیت دیگر تبدیل شده است.
توجه! : به یاد دارید که پس از Run کردن مدل، پنجره ی Process Window اطلاعاتی کلی در مورد مدل ارائه می دهد. یکی از این اطلاعات، تعداد محدودیت های گسترده و تعداد متغیرها می باشد. طبق شکل زیر، این مقادیر تحت عناوین row و column بیان می شوند.
توجه! : در listing file، به تعداد دستورات solve که در برنامه نوشته ایم Equation Listing خواهیم داشت.
اگر تعداد محدودیت ها زیاد باشد، و یا فرمول گسترده ی آنها طولانی باشد، GAMS تعدادی (به صورت پیش فرض سه عدد) از این محدودیت ها را برای نمونه در lst نشان می دهد و پس از آن، تنها تعداد فرمول های باقی مانده را ذکر می کند.
توجه! : در صورتی که مایلید تعداد محدودیت ها در این لیست بیشتر باشند می توانید دستور option limrow=h ; را در برنامه اضافه کنید. در اینجا (h) تعداد محدودیت های است که مایل به مشاهده ی فرمول گسترده ی آنها در این لیست هستید.
خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش column listing، در نوار کناری سمت راست (منوی داینامیک دسته بندی) مراجعه نمایند.
با تشکر
مدیریت سایت gamsbook.ir
ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405—0919
با سلام
بنده معادلاتی با استفاده از روش KKT نوشتم و یک معادله دو سطحی رو به تک سطحی تبدیل کردم. ولی الان وقتی برنامه رو اجرا می کنیم برای روابط مربوط به سطح دوم که تبدیل کردم خطای infeasible میاره ممکن علل این مورد رو برام بفرمایید
ممنون
سلام و ادب
شما قبلا همین مسئله رو مطرح فرمودید در یک کامنت دیگه، پاسخی داده شد، اما جوابی ارائه ندادید و الان مشخص نیست مدل چه داستانی داره. و مجدد جای دیگه ای بحث مشابهی رو آغاز کردید. بهتر بود همونجا ادامه می دادید.
در هر صورت، اینکه اینفیزیبل شده، مربوط به مدلسازی یا و داده ها میشه و اینجوری نمیشه کمکی کرد.
با سلام و تبریک سال نو
بعد از ران کردن مدل، تو Process Window قسمت equation زیر دوتا از قیدهای من none نوشته شده. منظور از none چیه که فقط تو دوتا قید اومده؟؟؟؟؟؟
سلام
ممنونم سال نو شمام مبارک.
تو این پنجره که در مورد معادلات صحبتی نمیشه. منظورتون رو دقیقتر بنویسین لطفا. پیام های مربوطه رو بنویسید. تشکر
عزیز من مشکل من اینه که مثلا برای همین CON1(I1) تمام جمله های محدودیت نوشته نشده. بقیه محدودیت ها هم همین مشکل را داره
لطفا فقط به همون گفتگویی که داشتیم ریپلای کنین. تشکر
درست نشد متاسفانه
باید 20 تا عبارت را به صورت جمع فقط توی محدودیت اول نشون بده.
ولی فقط یه جمع رو به صورت زیر نشون میده
—- CON1 =L=
CON1(I1).. 1.64*V(I1) =L= 0 ; (LHS = 0)
تابع نوشته شده در گمز به صورت زیر بوده که فقط یک جمله ازش نشون داده میشه.
الان یعنی برای CON1(I2) چیزی ننوشته؟
فقط این نشون داده شده
1.64*V(I1) =L= 0
چند تا I دارین؟ اگه بیشتر از یکی باشه که مشکوکه و بفرستین به ایمیل سایت.
برای جملات I1 هم که گفته بودین باید دقت کنین که گمز میاد معادلات رو باز میکنه و مقادیر معلوم رو با هم جمع میکنه و نامعلوم ها رو هم به شکل متغیر به همراه اندیس مربوطه ش میاره و نشون میده.
عزیز من مشکل من اینه که مثلا برای همین CON1(I1) تمام جمله های محدودیت نوشته نشده. بقیه محدودیت ها هم همین مشکل را داره
لطفا کد رو به ایمیل سایت بفرستید. ممکنه مشکل از شروط باشه.
سلام
قسمت equations listing محدویت ها رو کامل نشون نمیده. مثلا باید مجموع 20 جمله را نشون بده ولی یک جمله بیشتر نشون داده نمیشه .
مشکل از کجاست؟
سلام
محدودیت تعداد 3 تا رو داره به صورت دیفالت. اگه بخواین مثلا حداکثر 30 تا رو نشون بده، این دستور رو قبل از solve بنویسین.
SETS
i index of firms /i1*i27/
k index of outputs /out1,out2/
l index of inputs /in1,in2/
;
alias(i,j);
alias (i,iter);
PARAMETERS
dataC(i,l) ‘cost data’
Ydata(i,k) ‘output data’
x0(l) ‘inputs of firm j0’
y0(k) ‘outputs of firm j0’
x(l,i) ‘inputs of firm i’
y(k,i) ‘outputs of firm i’
n sample size
efficiency(i) ‘efficiency of each DMU’
allu(i,k) ‘matrix of all u values’
allv(i,l) ‘matrix of all v values’
;
$libinclude xlimport Ydata E:\output.xlsx
$libinclude xlimport dataC E:\input.xlsx
;
x(l,i) = dataC(i,l);
y(k,i) = Ydata(i,k);
loop(iter,
positive variables
v(l) ‘input weights’
u(k) ‘output weights’
;
variable
eff ‘efficiency’
us ‘variable returns to scale’
;
equations
objective ‘objective function: maximize efficiency’
normalize ‘normalize input weights’
limit(i) “limit other DMU’s efficiency”;
objective.. eff =e= sum(k, u(k)*y0(k))+ us;
normalize.. sum(l, v(l)*x0(l)) =e= 1;
limit(i).. sum(k, u(k)*y(k,i))+ us =l= sum(l, v(l)*x(l,i))
;
model dea /objective, normalize, limit/;
x0(l) = x(l, iter);
y0(k) = y(k, iter);
solve dea using lp maximizing eff;
abort$(dea.modelstat1) “LP was not optimal”;
efficiency(iter) = eff.l;
allu(iter,k)=u.l(k);
allv(iter,l)=v.l(l);
);
display efficiency, u.l, v.l;
$libinclude xldump allu E:\DEA_results.xlsx u a1:cw120
$libinclude xldump allv E:\DEA_results.xlsx v a1:cw120
$libinclude xldump efficiency E:\DEA_results.xlsx efficiency a1:cw120
در کدی که ارسال کردم یک تغییر می خواهم بدهم اما راهی نیافتم
هر بار که حلقه تکرار می شود در محدودیت limit (i) باید i مخالف iter باشد
سلام
loop((iter,i),
if(ord(iter) ne ord(i),
.
.
.
(;
);
هدفتون این بود؟
سلام خسته نباشید
وقتی مدلمو ران میکنم تو قسمت Equation listing دوتا از محدودیتها رو نمیاره و به جاشون مینویسه None !
لطفا راهنماییم کنید که مشکل از کجاست
البته داده ها رو هم هنوز کامل وارد نکردم ولی فقط واسه دوتا از محدودیتها این مشکل پیش میاد!!
این اصلا مشکل هست یا نه؟
سلام
ممنون همچنین
یعنی چی داده ها رو کامل وارد نکردم؟
این که میزنه none یعنی همچین محدودیتی ندارین. یعنی اینکه شرط هایی که براش گذاشتین مجموعه ی تهی رو شامل میشن
ممنونم ازتون مشکل حل شد.
دوتا سوال دیگه دارم اگه ممکنه راهنماییم کنید
1) یه محدودین دارم به این شکل:
cons(k,h).. sum(i,x(i,h,k))-sum(j,x(h,j,k))=e=0
چطور میتونم شرط i مخالف j رو اعمال کنم؟
2) یه متغیر باینری دارم به این صورت: x(i,j,k)
میخوام مقدار x(‘o1′,’o2’,k) برابر صفر باشه
خودم بصورت x.fx(‘o1′,’o2’,k)=0 تعریف کردم جواب نداد!!
سوال یک بنظرم اشکال اساسی دارد. در گمز دو متغیر با یک اسم نمیاد اونم تازه اندیس های متفاوت باشه.
بهتره مدلتونو برامون میل کنید تا مشکل را بر طرف کنیم.
راستش من یه مدل اینتیجر خطی ران کردم.تمام ضرایب لاگرانژ یا همون مارجینال معادلاتم صفر شده و فقط برای تابع هدف یک شده
به همین خاطر فکر کردم کبرای سیستم های خطی آنالیز حساسیت نداریم.
ممکنه برام توضیح بدید اگر ایتجور نبست.ممنونتون میشم
سلام
اگر امکان دارد مدلتون را ارسال کنید تا مشکل را بررسی کنیم. این که تابع هدف یک و بقیه صفر شده ممکنه مدل نشدنی باشه.
سلام.وقتتون بخیر
یه سوال داشتم ممنون میشم پاسخ بدید
برای تحلیل آنالیز حساسیت در گمز برای مدل mip مفهومی داره؟
سلام
یعنی چی؟ اگه میخواین بگین که تحلیل حساسیت میشه انجام جواب مثبت هست
سلام وقتتون به خیر
ببخشید من میخوام اندیس های x در یک محدودیت به صورت زیر باشد:
c6(k).. sum((i,j)$(ord(i)ord(j) and ord(i)>2 and ord(j)>2 ),x(i,j,k))=l=10000000*sum((i,j)$(ord(i)2 ),x(i,j,k));
;
اما در قسمت lst
مقادیری که برای اندیس نشان می دهد به صورت زیر هست:
c6(1).. x(2,3,1) + x(2,4,1) + x(3,2,1) + x(3,4,1) + x(4,2,1) + x(4,3,1) =L= 0 ;
علت این مسئله چیست و چه طور میتوان این مشکل را مرتفع نمود؟
خیلی ممنون
سلام
سعی کنید شروط رو در دو طرف نامساوی مشابه هم بگیرید. برای این کار سعی کنید شروط رو بعد از c6(k) تعریف کنید که برای کل نامساوی اعمال بشه.
کد نویسی هم مقداری درست تر بنویسین