解决一个问题时,发现用PROC NLP对同一组数据进行优化,发现前后每次运行的结果不相同,是与初始值有关吗?
如果不是,那会有什么原因导致的呢?
期待热心的高手帮忙解答。大概如下(因为数字是用宏变量替换的,所以看起来很不爽,大家理解下):
- proc nlp outest = OutData;
- max Sharp;
- parms W1 W2 W3 W4 W5;
- Rf = 0.035; *--无风险利率;
- SigmaSquare1 = W1*W1*0.0376922483*0.0376922483 + W2*W2*0.0363280264*0.0363280264 + W3*W3*0.0353578932*0.0353578932 + W4*W4*0.0324964514*0.0324964514 + W5*W5*0.0309305537*0.0309305537;
- SigmaSquare21 = 2*(W1*W2*0.699465271*0.0376922483*0.0363280264 + W1*W3*0.5697270077*0.0376922483*0.0353578932 + W1*W4*0.2465877023*0.0376922483*0.0324964514 + W1*W5*0.4014381566*0.0376922483*0.0309305537);
- SigmaSquare22 = 2*(W2*W3*0.6638612802*0.0363280264*0.0353578932 + W2*W4*0.2247782741*0.0363280264*0.0324964514 + W2*W5*0.3952689626*0.0363280264*0.0309305537);
- SigmaSquare23 = 2*(W3*W4*0.1661923447*0.0353578932*0.0324964514 + W3*W5*0.3295817699*0.0353578932*0.0309305537);
- SigmaSquare24 = 2*(W4*W5*0.3893912498*0.0324964514*0.0309305537);
- SigmaSquare = SigmaSquare1 + SigmaSquare21 + SigmaSquare22 + SigmaSquare23 + SigmaSquare24;
- Return = W1*0.0025495781 + W2*0.0020532864 + W3*0.0020421431 + W4*-0.0018462873168 + W5*0.0003627019;
- Sharp = (Return - Rf)/sqrt(SigmaSquare);
- bounds 0 <= W1 <= 1,
- 0 <= W2 <= 1,
- 0 <= W3 <= 1,
- 0 <= W4 <= 1,
- 0 <= W5 <= 1;
- lincon W1 + W2 + W3 + W4 + W5 = 1;run;
- quit;