「注意:此須運用SAS/OR運籌學(註1)模組內的proc optmodel,故SAS UE無法支援」
[抱怨]Google的Blogger無法針對文字進行上標或下標,僅能透過HTML語法調,請新增按鈕進編輯頁好嗎?註2
ANS:
data curve; /*利用迴圈產生curve資料集,內含 200001筆虛擬觀察值*/
do x=-1000 to 1000 by 0.01;
y=3*x**2-3*x+4;
output;
end;
run;
...
<部份資料>
proc optmodel data=curve; /*求 x y之值,若你上一步剛把curve跑出來,其實可省略data=curve*/
var x;
min y=3*x**2-3*x+4;
solve;
print x y;
quit;
看到答案了嗎?或許你可能會像被三輪車壓到腳的阿嬤一樣沒知覺。沒關係,版大畫圖給你看。
<亂入>
proc sgplot data=curve;
series x=x y=y / lineattrs=(pattern=1 thickness=3); /*設定曲線的x,y值及其格式*/
xaxis labelattrs=(size=14) valueattrs=(size=14) values=(-1000 to 1000 by 250); /*設定x軸格式*/
yaxis labelattrs=(size=14) valueattrs=(size=14) values=(0 to 3000000 by 200000); /*設定y軸格式*/
refline 0.5 / axis=x label="0.5" labelattrs=(size=14) ; /*插入插在x軸上的參考線*/
refline 3.25 / axis=y label="3.25" labelattrs=(size=14 ) ; /*插入插在y軸上的參考線*/
run;
版大微調上圖,x,y軸起迄及間隔調成合適大小。
proc sgplot data=curve;
series x=x y=y / lineattrs=(pattern=1 thickness=3);
xaxis labelattrs=(size=14) valueattrs=(size=14) values=(-2 to 2 by 0.1);
yaxis labelattrs=(size=14) valueattrs=(size=14) values=(0 to 10 by 1);
refline 0.5 / axis=x label="0.5" labelattrs=(size=14) ;
refline 3.25 / axis=y label="3.25" labelattrs=(size=14) ;
run;
成果如下:
非常清楚的結果,不再解釋!
註1
運籌學是應用恰當的科學技術知識和數學方法對實際問題進行研究,從而提供量化分析依據以及最優方案,幫助決策的一門學科,它包括了多個分支,例如規劃論(含線性規劃、非線性規劃、整數規劃、動態規劃等)、庫存論、決策分析、排隊論、博弈論、圖論、可靠性理論等,這些分支構成了一個完整的運籌學理論體系。
例:大貓麵包工廠主要製作4種麵包和餅乾,分別為可頌、吐司、法式麵包和大貓餅乾。原料主要為麵粉、奶油和黃油,每一烤箱麵包或餅乾的售價及所需原料如表一,麵粉、奶油和黃油的售價及每日可供使用量如表二。
假設每天生產的麵包及餅乾能完售,則每天須分別製作多少箱才能使大貓工廠的總盈利最大化?
SAS公司另針對此模組設計出模擬軟體SAS Simulation,此軟體計算核心多由OR內的procedure完成,可模擬各種情境(例如急診病人流)。
註2
本篇文章完整語法
do x=-1000 to 1000 by 0.01;
y=3*x**2-3*x+4;
output;
end;
run;
proc optmodel data=curve;
var x;
min y=3*x**2-3*x+4;
solve;
print x y;
quit;
proc sgplot data=curve;
series x=x y=y / lineattrs=(pattern=1 thickness=3);
xaxis labelattrs=(size=14) valueattrs=(size=14) values=(-2 to 2 by 0.1);
yaxis labelattrs=(size=14) valueattrs=(size=14) values=(0 to 10 by 1);
refline 0.5 / axis=x label="0.5" labelattrs=(size=14) ;
refline 3.25 / axis=y label="3.25" labelattrs=(size=14) ;
run;
同場加映
出處:
沒有留言:
張貼留言