我想找到一个宏产生的极值作为输入参数的函数:
这里的示例目的是一些数据:
data Input_data;
input X Y;
cards;
10 15
20 18
30 27
33 41
;
run;
以下不是实际的公式(因为分析上很容易找到它的最小值)。我想要计算方法。 例如,我有半经验规则,它采用三个参数:
%macro Function(const1, const2 const3);
data output;
set input;
X_eff1=((X > &const1.)*(X - &const1.)**2);
X_eff2=((X > &const2.)*(X - &const2.)**2);
X_eff3=((X > &const3.)*(X - &const3.)**2);
Residual= Y - (1.3*X_eff1 - 2.7*X_eff2+ 3.1*X_eff3);
run;
%mend;
我想找到const1,const2 const3,它为变量'Residual'产生最小值。 SAS能做到吗? 很少有选择要考虑:
a)查找全局最小值
b)在边界条件下找到局部最小值,例如:const1[0,1]
const2[10,17]
,const3[20, 22]
我可以生成巨大的桌子和蛮力将它提供给该功能。但是,如果输入参数的数量增加,则这是不可行的。
我可以抓一些程序吗?
我可以在numpy中做到这一点(来自cipy.optimize的fmin)或R如果证明SAS很难。
关于如何解决它的任何想法?