资源

带查找表的不连续函数(lsoe09)

/**********************************************************************//*                                                                    *//*S A S S A M P L E L I B R A R Y*//*                                                                    *//*姓名:lsoe09*//*标题:带查找表的不连续函数(lsoe09)*//*产品:或*//*系统:所有*//*关键字:或*//*程序:OPTLSO、FCMP、PRINT*//*数据:*//*                                                                    *//*支持:更新:*//*参考:*//*MISC:OPTLSO章节中的示例9*//*本地搜索优化书籍*//*                                                                    *//**********************************************************************/%设N=100;%设L=0;%设U=10;选项cmplib=sasuser.myfuncs;proc fcmp outlib=sasuser.myfuncs.mypkg;函数SmoothFunc(x);y=x*sin(x)+x*x*cos(x);收益(y);endsub;函数DiscretizedFunc(x);数组查找[&N,2]/nosymbols;rc=读数组('f_discrete',查找);do i=1到%eval(&N-1);如果x>=查找[i,1]和x<查找[i+1,1],则做;/*最近较小离散点的查找值*/y=查找[i,2];i=评估百分比(&N-1);结束;结束;收益(y);endsub;运行;数据f离散;a=&L;b=&U;n=&n;下降i a b n;do i=1到n;x=a+(i/n)*(b-a);y=平滑函数(x);产出;结束;运行;数据变量数据;输入_ id$_ lb_ ub_;数据线;x 0 10;/*使用离散化函数作为目标*/数据对象;长度函数_ 16美元;输入_ id _$函数_$传感器_$;数据线;f离散函数最小值;选项cmplib=sasuser.myfuncs;程序optlsoprimaluut=最终变量=vardata目标=objdata;readarray f离散;运行;proc打印数据=最终;运行;%设N=100;%设L=0;%设U=10;选项cmplib=sasuser.myfuncs;proc fcmp outlib=sasuser.myfuncs.mypkg;函数SmoothFunc(x);y=x*sin(x)+x*x*cos(x);收益(y);endsub;运行;数据变量数据;输入_ id$_ lb_ ub_;数据线;x 0 10;/*以平滑函数为目标*/数据对象;长度函数_ 16美元;输入_ id _$函数_$传感器_$;数据线;f SmoothFunc最小值;选项cmplib=sasuser.myfuncs;程序optlsoprimaluut=最终变量=vardata目标=objdata;运行;proc打印数据=最终;运行;