【发布时间】:2020-12-13 07:09:43
【问题描述】:
我需要在 SAS 表中转换 PROC OPTMODEL 的输出。
在互联网上浏览,我发现可以通过使用 PROC OPTMODEL 中的 CREATE DATA 语句来做到这一点。
具体来说,我正在尝试解决一个优化问题,旨在最小化两个约束下的波动性;示例脚本如下:
proc optmodel;;
/* let x1, x2, x3, x4 be the amount invested in each asset */
var x{1..&n.} >= 0;
num coeff{1..&n., 1..&n.} = [&covariance_matrix.];
num r{1..&n.} = [&return.];
/* minimize the variance of the portfolio's total return */
minimize f = sum{i in 1..&n., j in 1..&n.}coeff[i,j]*x[i]*x[j];
/* subject to the following constraints */
con BUDGET: sum{i in 1..&n.}x[i] <= &budget.;
con GROWTH: sum{i in 1..&n.}r[i]*x[i] >= &growth. * &budget.;
solve with NLP;
create data weights from x;
/* print the optimal solution */
print x;
quit;
我的目标是在 SAS 表中转换向量 x,以便能够使用最小化波动性的权重;日志窗口显示以下错误消息:
错误 650-782:下标计数与数组“x”不匹配,2 NE 1。
为什么我会收到这样的错误?有人可以帮我解决吗?
如果问题不清楚,请在下面的评论中给我发短信。
提前谢谢大家!!
【问题讨论】:
标签: optimization sas mathematical-optimization minimization