PROC OPTGRAPH /*OPTGRAPH STATEMENT*/ DATA_LINKS=NodeSetIn OUT_NODES = NodeSetOut OUT_LINKS = LinkSetOut; /*DATA_LINKS_VAR STATEMENT可以省略,因为原数据是用from和to命名的*/ /*DATA_LINKS_VAR FROM=from TO =to;*/ PERFORMANCE NTHREADS = 8; COMMUNITY ALGORITHM=LOUVAIN OUT_COMMUNITY=OUTCOM1; RUN;
1. 每个statement以statement的名字为开始,以option为结束。
2. 美观起见都是以
STATEMENT_NAME OPTION1=.... OPTION2=.... .... OPTIONn=....;
这样换行的格式,并在option最后以分号;为结束。
data CostMatrix; input back breast fly free@@; datalines; 35.1 36.7 28.3 36.1 34.6 32.6 26.9 26.2 31.3 33.9 27.1 31.2 28.6 34.1 29.1 30.3 32.9 32.2 26.6 24.0 27.8 32.5 27.8 27.0 26.3 27.6 23.5 22.4 29.0 24.0 27.9 25.4 27.2 33.8 25.2 24.1 27.0 29.2 23.0 21.9 ; proc optgraph data_matrix = CostMatrix; data_matrix_var back--free; linear_assignment out = LinearAssign; run;
3. 这里的linear_assignment其实就是optimization问题的特殊情况。一共是10个任务,4个特工,每个任务只能派一个人,一个人不能执行两个任务,每个任务的分值如表格所示,要求计算哪四个任务以及各分配哪个特工是最优解。