Optimization 使用PROC OPTMODEL创建SAS表
我需要在SAS表中转换PROC OPTMODEL的输出 浏览internet时,我发现可以通过在中使用CREATEDATA语句来实现这一点 具体来说,我试图解决一个优化问题,目的是在两个约束条件下最小化波动性;示例脚本如下所示:Optimization 使用PROC OPTMODEL创建SAS表,optimization,sas,mathematical-optimization,minimization,Optimization,Sas,Mathematical Optimization,Minimization,我需要在SAS表中转换PROC OPTMODEL的输出 浏览internet时,我发现可以通过在中使用CREATEDATA语句来实现这一点 具体来说,我试图解决一个优化问题,目的是在两个约束条件下最小化波动性;示例脚本如下所示: proc optmodel;; /* let x1, x2, x3, x4 be the amount invested in each asset */ var x{1..&n.} >= 0; num coeff{1..&am
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;
proc optmodel;;
/*设x1、x2、x3、x4为每项资产的投资金额*/
变量x{1..&n}>=0;
num coeff{1..&n.,1..&n.}=[&协方差矩阵];
numr{1..&n.}=[&return.];
/*最小化投资组合总回报的方差*/
最小化f=sum{i in 1..n.,j in 1..n.}coeff[i,j]*x[i]*x[j];
/*受以下限制*/
con预算:总和{i in 1..&n.}x[i]=&growth.*&预算。;
用自然语言处理;
从x创建数据权重;
/*打印最佳解决方案*/
打印x;
退出
我的目标是转换SAS表中的向量x,以便能够使用使波动性最小化的权重;日志窗口显示以下错误消息:
错误650-782:下标计数与数组“x”,2 NE 1不匹配
为什么我会犯这样的错误?有人能帮我解决吗
如果问题不清楚,请在下面的评论中给我发短信
提前谢谢大家
x
是从1到&n的变量向量。你需要循环每一个
create data weights from [i] = {1..&n}
x[i]
;
我通过运行以下语句解决了这个问题:
从[n]x创建数据权重