[求助]2万论坛币求助 关于SAS OR模块
发布:andyjia1984 | 分类:SAS软件培训
关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
获取电子版《CDA一级教材》
完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。
TOP热门关键词
正在写篇关于DEA的论文,想在SAS中实现引入quasi-fixedinputs的模型,其实用proclp应该就能解决,但由于本人对LP不是很熟悉,所以在编程中遇到好多问题,那位兄弟能给与解答最少2万论坛币感谢。。。。希望能MSN联系, ...
免费学术公开课,扫码加入![]() |
希望能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
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
- SAS软件培训 ... | 怎么用sas导入txt中的这种数据啊 ...
- SAS软件培训 ... | sas 9.0 license
- SAS软件培训 ... | Global Imbalances from Disaste ...
- SAS软件培训 ... | [分享]使用SAS Learning Edition ...
- SAS软件培训 ... | SAS基础宏之18:PrxChange
- SAS软件培训 ... | Categorical Data Analysis with ...
- SAS软件培训 ... | 如何用SAS做回归对下数据以下数据 ...
- SAS软件培训 ... | 请问同一sas程序运行不同数据量为 ...
人气文章
本文标题:[求助]2万论坛币求助 关于SAS OR模块
本文链接网址:https://bbs.pinggu.org/jg/ruanjianpeixun_sasruanjianpeixun_323557_1.html
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。



