SAS Proc IML:针对一个变量最小化函数

时间:2014-06-29 14:08:59

标签: sas minimization sas-iml

使用SAS proc IML,我有一个功能:CVF(m,p,h,pi,e);

我想猜测h可以最大限度地减少这个功能。是否有一些内置的子程序来最小化它?或者我如何为它构建迭代过程?每个其他变量都已定义。

2 个答案:

答案 0 :(得分:0)

当然,您可以使用IML语言构建自己的优化例程,但也有内置的优化例程,请参阅IML User's Guide的第11章,非线性优化示例

答案 1 :(得分:0)

使用call nlpqn();。您传递的功能只需要1个参数,即要优化的矢量。所以在这里我定义了一个二次函数,其中也可以定义a,b和c参数。使用GLOBAL语句并在调用之前定义非移动变量。

或者,您可以将所有内容放在输入向量中,然后添加约束以防止这些值移动。

proc iml;

start myfun(x) global(a, b, c);
    out = a*x**2 + b*x + c;
    return (out);
finish myfun;

a = 1;
b = 2;
c = 4;

optn = {0, /* option 1: 0 -> MIN, 1 -> MAX*/
        0  /* Print options 0-5 0 least, 5 most*/
        };

init = 0;
call nlpqn(rc, res, "myfun", init);

/*rc > 0 means success*/
print rc res;
quit;

返回:

                                  The SAS System           08:59 Friday, June 27, 2014   3

                                      rc       res

                                       3        -1