2017-12-12 9 views
-1

変数の値を変えてその変数の平均値を小さくするマクロを書き直すタスクがあります第1変数に依存する第2変数をある閾値以下に減少させる。しかし、SASの新機能やマクロで読み込まれたiiveでは、この説明に当てはまるものは何も表示されませんでした。SAS:変数値を変更しながらプログラムを再実行するマクロを作成する方法

+0

タグの説明をお読みください。 –

+0

これはシミュレーションです。最適化をお探しの場合は、SAS/OR手順を調べることもできます。 – Reeza

答えて

0

これは非常に興味深い質問であることがわかります。私はこれにあらかじめ構築された方法は見つけられませんでしたが、おそらくこのようなものかもしれません:

最初に私はノルムを定義します。あなたが望むものからの距離。

%macro do_calc(value); 
    %let res=%eval(&value.-1); 
%mend; 

この時点で反復方向を指定する必要があります。ほとんどの場合、関数を導出し、数値を数値に微調整します。何かのように

%macro update_vars (var1, var2); 
    %let var1=&var1. + 0.1; 
    %let var2=&var2. - 0.2; 
%mend; 

実際の繰り返しは非常に簡単です。

%macro iterate; 
    %let res=110; 
    %let i=1; 
    %do %while(&res.>100 or i>1000); 
     %do_calc(&res.); /*Add var1, var2); here */ 
     %update_vars(&var1.,&var2.); 
     %put &res.; 

     %let i= %eval(&i.+1); /*failsafe*/ 
    %end; 
%mend; 
%iterate;