[求助]2万论坛币求助 关于SAS OR模块-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 软件培训>>

SAS软件培训

>>

[求助]2万论坛币求助 关于SAS OR模块

[求助]2万论坛币求助 关于SAS OR模块

发布:andyjia1984 | 分类:SAS软件培训

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

获取电子版《CDA一级教材》

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。

正在写篇关于DEA的论文,想在SAS中实现引入quasi-fixedinputs的模型,其实用proclp应该就能解决,但由于本人对LP不是很熟悉,所以在编程中遇到好多问题,那位兄弟能给与解答最少2万论坛币感谢。。。。希望能MSN联系, ...
免费学术公开课,扫码加入


正在写篇关于DEA的论文,想在SAS中实现引入quasi-fixed inputs 的模型, 其实用proc lp 应该就能解决,但由于本人对LP不是很熟悉,所以在编程中遇到好多问题,那位兄弟能给与解答最少2万论坛币感谢。。。。

希望能MSN联系,或者邮件。。。
msn: andyjia1984@hotmail.com
e-mail: linjia.zhang1984@gmail.com

谢 谢大家啦 , 以下蓝字的是一个基本的程序, 问题是:那位能给我讲解下在model building 中的语句, %macro data 我基本都明白,但是在model building 中的语句尤其是 array , 彻底把我能晕拉。。。。 (我想在线性规划中加入两个限制条件,第一,lambda的和为1。。和一个不等关系)

一个小问题。。 keep _row_ _col_ _type_ _coef_ ;, 我不明白变量_coef_ 是什么时候引进的阿。。。

红色语句中的J0是怎么回事啊??和绿色语句中的j0是一个变量吗??


%macro data;
data NY;
  infile &_OutData delimiter='09'X missover dsd ;
  array NYarray(&_nOutput) $ NY1-NY&_nOutput ;
  length unitname $ 50 ;
  input unitname $ NYarray(*) $ ;
  if _n_ eq 1 then output ;
  drop unitname;
  run;
data AY DMUs;
  infile &_OutData delimiter='09'X missover dsd;
  array AYarray(&_nOutput) AY1-AY&_nOutput;
  length unitname $ 50 ;
  input unitname $ AYarray(*) ;
  if _n_ gt 1 then output ;
run;
data NX;
  infile &_InData delimiter='09'X missover dsd ;
  array NXarray(&_nInput)$ NX1-NX&_NInput ;
  length unitname $ 50 ;
  input unitname $ NXarray(*) $ ;
  if _n_ eq 1 then output;
  drop unitname;
  run;
data AX;
  infile &_InData delimiter='09'X missover dsd ;
  array AXarray(&_nInput) AX1-AX&_nInput;
  length unitname $ 50 ;
  input unitname $ AXarray(*) ;
  if _n_ gt 1 then output;
  call symput('_nDmu',_n_-1);
  run;
data DMUs;
  set AY (keep=UnitName);
  Uj0=_n_;
  run;
%mend data;
/*MODEL BUILDING (%MODEL)*/
%macro model;
%local i j j0;
data MODEL1;
  %let _nUnit=&_nDmu;
  array NYarray(&_nOutput)$ NY1-NY&_nOutput ;
  array AYarray(&_nOutput) AY1-AY&_nOutput;
  array NXarray(&_nInput) $ NX1-NX&_NInput ;
  array AXarray(&_nInput) AX1-AX&_nInput;
  array Jarray(&_nUnit) U1-U&_nUnit ;
  length _row_ $ 50 _col_ $ 50 _type_ $ 8 ;
  keep _row_ _col_ _type_ _coef_ ;
  J0=&jj; /* Jo is unit under assessment*/
  if &_Orienta='InputMin' then do;
                          _type_='MIN';
                          _row_ ='OBJ';
                          _col_='.';
                          _coef_=.;
                          output;
                          _type_='.';
                          _row_ ='OBJ';
                          _col_ ='FI';
                          _coef_=1;
                          output;
                          _type_='.';
                          _row_ ='OBJ';
                          _col_='_rhs_';
                          _coef_=0;
                          output;
                          end;
    link ReadNX;
    do j= 1 to &_nUnit;
       link ReadAX;
    do i= 1 to &_nInput;
       _col_='LA' || put(j,3.);
       _row_=NXarray(i);
       _type_='.';
       _coef_=AXarray(i);
       output;
       if j=J0 then do;
         select(&_Orienta);
         when('InputMin') do;
         _row_=NXarray(i);
         _type_='.';
         _coef_=-AXarray(i);
         _col_='FI';
         output;
        _col_='_rhs_';
        _row_=NXarray(i);
        _type_='LE'; /*LE*/;
        _coef_=0;
        output;
        end;
      when('OutputMax') do;
        _row_=NXarray(i);
        _type_='LE';
        _coef_=AXarray(i);
        _col_='_rhs_';
        output;
        end;
      otherwise;
      end;
    end;
  end;
end;
ReadNX: set NX; return;
ReadAX: set AX; return;
run;
data MODEL2;
  %let _nUnit=&_nDmu;
  array NYarray(&_nOutput)$ NY1-NY&_nOutput ;
  array AYarray(&_nOutput) AY1-AY&_nOutput;
  array NXarray(&_nInput) $ NX1-NX&_NInput ;
  array AXarray(&_nInput) AX1-AX&_nInput;
  array Jarray(&_nUnit) U1-U&_nUnit ;
  length _row_ $ 50 _col_ $ 50 _type_ $ 8 ;
  keep _row_ _col_ _type_ _coef_ ;
  J0=&jj; /* Jo is unit under assessment*/;
  if &_Orienta='OutputMax' then do;
                           _type_='MAX';
                           _row_ ='OBJ';
                           _col_='.';
                           _coef_=.;
                           output;
                           _type_='.';
                           _row_ ='OBJ';
                           _col_ ='FI';
                           _coef_=1;
                           output;
                           _type_='.';
                           _row_ ='OBJ';
                           _col_='_rhs_';
                           _coef_=0;
                           output;
                           end;
  link ReadNY;
  do j= 1 to &_nUnit;
     link ReadAY;
     do r= 1 to &_nOutput;
        _col_='LA' || put(J,3.);
        _row_=NYarray(r);
        _type_='.';
        _coef_=AYarray(r);
        output;
        if j=J0 then do;
           select(&_Orienta);
           when('InputMin') do;
             _col_='_rhs_';
             _row_=NYarray(r);
             _type_='GE';
             _coef_=AYarray(r);
             output;
             end;
           when('OutputMax') do;
           _col_='FI';
           _row_=NYarray(r);
           _type_='.';
           _coef_=-AYarray(r);
           output;
           _col_='_rhs_';
           _row_=NYarray(r);
           _type_='GE';
           _coef_=0;
           output;
           end;
         otherwise;
         end;
       end;
     end;
   end;
ReadNY: set NY; return;
ReadAY: set AY; return;
run;
data MODEL; set MODEL1 MODEL2 ; run;
%mend model ;
/*SAS/DEA REPORT WRITING (%REPORT)*/
%macro report;
data eff(drop=Uj0);
  merge DMUs Eff;
  by Uj0;
run;
proc sort data=Eff; by eff; run;
proc print data=Eff; run;
proc sort data=Eff; by UnitName; run;
proc print data=Eff; run;
%mend report;
/*SAS/DEA MACRO*/
%macro sasdea;
  libname sasdea 'D:\sasdea';
  proc datasets nolist; delete Eff Report1 report2; run;
  %data;
  %let _nUnit=&_nDmu;
  %do jj=1 %to &_nUnit;
    %model;
    proc lp data=MODEL noprint sparsedata
primalout=lp2 dualout=lp3 ; run;
    data EffJ0(keep=Uj0 eff); set lp2 (where=(_var_='OBJ')); Uj0=&jj;
    if &_Orienta='OutputMax' and _value_ ne 0 then Eff=1/_value_;else Eff=_value_;
run;
    proc datasets nolist; append base=Eff data=EffJ0; run;
    data lp2; set lp2; Uj0=&jj;run;
    proc datasets nolist; append base=Report1 data=lp2;run;
    data lp3; set lp3; Uj0=&jj;run;
    proc datasets nolist; append base=Report2 data=lp3;run;
    %end;
    %report;
    %mend sasdea;
%let _InData='G:\dea\InVar.TXT';
%let _nInput=2;
%let _OutData='G:\dea\Outvar.TXT' ;
%let _nOutput=2;
%let _Orienta='InputMin';
%sasdea;
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-323557-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
数据分析师 人大经济论坛 大学 专业 手机版
联系客服
值班时间:工作日(9:00--18:00)