Создайте таблицу SAS, используя PROC OPTMODEL

Мне нужно преобразовать вывод PROC OPTMODEL в таблицу SAS.

Просматривая Интернет, я обнаружил, что это можно сделать, используя оператор CREATE DATA в PROC OPTMODEL.

В частности, я пытаюсь решить проблему оптимизации, направленную на минимизацию волатильности при двух ограничениях; пример скрипта следующий:

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;

Я стремлюсь преобразовать вектор x в таблицу SAS, чтобы иметь возможность использовать веса, минимизирующие волатильность; в окне журнала отображается следующее сообщение об ошибке:

ОШИБКА 650–782: количество индексов не соответствует массиву «x», 2 NE 1.

Почему я получаю такую ​​ошибку? Может ли кто-нибудь помочь мне найти решение?

Если вопрос не ясен, напишите мне в комментариях ниже.

Всем заранее спасибо!!

Загадки Python - Генерация простых чисел!
Загадки Python - Генерация простых чисел!
Обычно существует несколько способов решения задач даже пограничной сложности. Как же определить оптимальное и эффективное решение?
1
0
513
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

x — вектор переменных от 1 до &n. Вам нужно пройтись по каждому из них.

create data weights from [i] = {1..&n}
    x[i]
;
Ответ принят как подходящий

Я решил, выполнив следующий оператор:

create data weights from [n]x

Другие вопросы по теме