درباره نویسنده

27 دیدگاه

  1. raz

    با سلام
    چطور می توان در تابع هدف متغیر اندیس دار تعریف کرد؟

  2. یاوری

    سلام وقت شما بخیر
    من میخوام مدل DEA بازه ای بنویسم نمیدونم محدودیت رو چطور برای واحدها به غیر از واحد مورد بررسی بنویسم
    Yrj*Ur-Xij*Vi<0 برای هر j بغیر از واحد o
    چون بعد هم از دستور loop استفاده میشه نمیدونم چیکار باید بکنم که این محدودیت هر سری برای واحد o در نظر گرفته نشه
    با تشکر

    1. محمودی

      سلام
      شما یه j دارین، و یه jj هم بهش باید آلیاس بشه که تو Loop استفاده بشه. یه parameter به نام مثلا o تعریف کنین. و محدودیت و loop به شکل زیر در میاد.

      parameter o;
      sum(j$ord(j) ne o,........)+.....
      .
      .
      loop(jj,
      o=ord(jj);
      solve ...
      );
      
  3. A.R.M

    سلام
    خسته نباشید
    این محدودیت رو چطوری میتونم بنویسم؟؟
    xiI = minj {xij}; i = 1, . . . ,m
    در واقع یه table دارم که میخوام مینیمم هر سطرش رو بهم بده
    (table x(i,j
    6 5 4 3 2 1
    2.5 20 18 10 2 2 1
    ;6 8 8 5 15 6 2

      1. A.R.M

        ببینید من تو تابع هدف یه پارامتر دارم که از دو تا فرمول به دست میاد
        میخوام بدونم که فرمولش رو باید تو قسمت پارامتر نوشت یا تو قسمت محدودیت ها؟؟
        باید تو پارامتر ها تعریفشون کنم یا تو قسمت متغییر ها؟؟
        دو تا فرمولا ایناست:

        maxi {(xip - xiI) / |xip| , xip mokhalef 0 ; i = 1,...,m} = θp
        

        که xiI از فرمول زیر به دست میاد:

        xiI = minj {xij} ; i = 1,...,m
        

        من خودم فکر میکنم که xip و xiI باید تو پارامتر نوشته شه و فرمول xiI هم باید تو قسمت پارامتر آورده بشه
        تتا پی باید تو متغیر نوشته شه و فرمولش تو محدودیت ها

        1. محمودی

          سلام
          tetaP رو من نمیدونم چرا نوشتین دقیقا. و مفهوم اون مساوی چیه.
          کلا اینو یادتون باشه، تو تحلیل پوششی داده ها x و y (که بیشتر استفاده میشن) هر کاری روشون انجام بشه، بازم پارامترن.
          الان دو تا راه دارین، اول اینکه به صورت پارامتر تعریف کنین و نهایتا تا قبل از loopی که می نویسین مقدارش رو با تابع smax یا smin به دست بیارین.
          یا اینکه داخل loop اینکارو انجام بدین. loop رو به این خاطر میگم که شاید شما سوال رو واضح نپرسیدید.
          باید تشخیص بدین کدومشه.

  4. A.R.M

    سلام مجدد
    ممنون بابت جوابتون
    این تابع هدف هست

    ((z=e=1-1/2*(1/m*sum(i,teta(i)/tetabarp)+1/s*sum(r,fi(r)/fibarp
    

    که تتا بار پی از دو رابطه بالا به دست میاد
    فی بار پی هم همینطور. ولی من فقط یکیش رو از شما پرسیدم
    الان من کدم رو با توجه به پاسخ شما و مطالب سایت اصلاح کردم ولی باز به یه مشکلی خوردم
    میتونم کدم رو براتون ایمیل کنم؟؟

    1. محمودی

      کد، مدل و مقاله بیس رو ارسال کنین. اگه وقت شد چشم.

  5. A.R.M

    سلام
    من یه سوال دیگه برام پیش اومد
    اگه بخوام واحدهای کارا یا به عبارتی واحدهایی که مقدار کارایی یا همون z شون یک شده رو رتبه بندی کنم محدودیتا چطوری میشه؟
    مثلا واحد سوم و پنجم مقدار کاراییشون یک شده
    حالا میخوام این دو تا رو رتبه بندی کنم و مقدار کاراییشون رو به دست بیارم
    اگه بخوام کارایی واحد سوم رو به دست بیارم باید محدودیت مربوط به واحد سوم حذف شه دیگه درسته؟
    اینطوری؟

    ;((eq1(i)..     sum(j$(ord(j) ne 3),landa(j)*x(i,j))=l=xp(i)+teta(i)*abs(xp(i
    ;((eq2(r)..     sum(j$(ord(j) ne 3),landa(j)*y(r,j))=g=yp(r)-fi(r)*abs(yp(r
    ;sum(j,landa(j))=e=1
    
    1. محمودی

      سلام
      یه مقاله بود که در این باره یک روش رو ارائه داده بود. متاسفانه الان حضور ذهن ندارم معرفی کنم خدمتتون. اینی که نوشتین از لحاظ کدینگ درسته ولی از لحاظ مفهومی اطلاعی ندارم ازش.

  6. A.R.M

    با سلام
    ببخشید من یه مدل dea رو اول فازی و بعد با روش آلفا برش دی فازی کردم
    وقتی کدش رو تو گمز میزنم فقط برای دو تا از dmuها مقدار میده و از طرفیم ارور exit code=3 رو میده
    شما دلیلش رو میدونید؟؟

  7. A.R.M

    دو تا از dmu ها رو به دست میاره ولی برای بقیه رو منفی به دست میاره و تکراری
    این ارور رو میده:
    Error at line 98: division by zero (0)
    حالا نمیدونم مشکل از کجاست شاید مدلم رو اشتباه فازی و دی فازی کردم

    1. محمودی

      سلام
      این ارور وقتی رخ میده که تو مخرج یه متغیر داشته باشین.
      برای رفعش به مخرج یه عدد ریز مثل ۰٫۰۰۰۱ اضافه کنید.

  8. A.R.M

    بله این رو هم امتحان کردم ولی درست نشد، بدتر شد
    شاید مدلم اشتباه باشه ….

    1. محمودی

      این ارور برای همین هست. اگه مقدار کوچکی به مخرج اضافه کنین دیگه رفع میشه. مقداری با دقت این مقدار رو اضافه کنین. پرانتز اینا خاطرتون باشه دقیق زیر مخرج باشه

  9. A.R.M

    الان میدونید مشکل من چیه؟
    (صحبتایی که تو کمنتای قبلی زدم رو ندید بگیرید.) من یه مدل تحلیل پوششی داده ها دارم که میخوام فازیش کنم، ولی دقیق نمیدونم چطوری!

    1. محمودی

      من همه چیو ندید میگیرم پس.
      اول باید مدلسازی رو انجام بدید به صورت فازی. روش فازی کردن هم باید مشخص باشه و از یه مرجع مشخص. رویه رو درست باید پیاده سازی کنید.
      بعدش دی فازی کنید.
      بعدش کد کنید.
      یه فازی باید حتما دی فازی بشه.

  10. A.R.M

    اوکی
    با توجه به فرمایشات شما، من الان با توجه به یه مقاله این کار رو انجام دادم
    از اعداد فازی مثلثی استفاده کردم
    این مقاله برای حل تحلیل پوششی داده های فازی اومده بود از یه روشی به نام آلفا برش (a-cut) استفاده کرده که شامل یه حد بالا و یه حد پایین هست.
    حالا نمیدونم با این روش تا چه حدی آشنا هستید، این طور که من دیدم ظاهرا یکی از روش های متداول هست.
    در واقع با این روش کارایی هر dmu به صورت بازه ای به دست میاد دیگه چون حد بالا و پایین داره
    من کد حد پایین رو تو گمز زدم جوابا این طوری شد، در واقع معلومه که جوابا اشتباهه…
    ۱ ۰٫۹۹۹۹۹۲۰, ۲ ۰٫۹۹۹۹۷۲۷, ۳ ۰٫۹۹۹۹۷۰۲, ۴ ۰٫۹۹۹۹۱۵۶, ۵ ۰٫۹۹۹۸۶۱۳
    ۶ ۰٫۹۹۹۹۹۳۱, ۷ ۰٫۹۹۹۹۷۰۲, ۸ ۰٫۹۹۹۹۷۶۲, ۹ ۰٫۹۹۹۹۷۹۲, ۱۰ ۰٫۹۹۹۸۷۴۳
    ۱۱ ۰٫۹۹۹۹۶۵۲, ۱۲ ۰٫۹۹۹۳۱۱۶, و …..

    1. محمودی

      بله احتمالا اشتباهه. یه جای کار ایراد داره. ایمیل کنید کد، مدل و مقاله رو.
      وقت بشه یه بررسی مختصر میکنم.

  11. محمد

    سلام وقت بخیر
    محدودیتی را به این شکل کد کرده ام:
    ((co13(j,k,s) .. pi0(j,k,s) =e= sum(nn,Power(landaa(j,k,s) / mu(k,s),nn
    اما این خطا رو میده:
    Error 148: Dimension different – The symbol is referenced with more/less indices as declared
    تمام پارامترهام هم از نظر اندیس ها درست تعریف شده ولی نمیدونم مشکل از کجاست؟

    1. محمودی

      سلام
      اگه درست اینا رو تعریف کردین، احتمالا مشکل از اینه که مثلا یه پارامتر به اسم z تعریف کردین. ولی یه متغیر هم به اسم z(k هم تعریف کردین. حالا z به کار بردین. و این ارور رو میده.

دیدگاهی دارید؟