#sas #minimization #sas-iml
#sas #минимизация #sas-iml
Вопрос:
Используя SAS proc IML, у меня есть функция: CVF(m,p,h,pi,e);
Я хотел бы угадать h, который минимизирует эту функцию. Существует ли какая-либо встроенная подпрограмма для ее минимизации? Или как я могу построить для нее итеративный процесс? Все остальные переменные определены.
Комментарии:
1. Как упоминалось ниже, вы можете использовать NLPQN или NLPNRA. Независимо от того, какую процедуру оптимизации вы выберете, вам придется предоставить первоначальное предположение для решения. Если у вас еще нет приблизительного предположения, вы можете оценить целевую функцию на однородной сетке, как описано в этой статье : blogs.sas.com/content/iml/2014/06/11 /…
Ответ №1:
Используйте call nlpqn();
. Передаваемая вами функция должна иметь только 1 параметр, вектор, который вы хотите оптимизировать. Итак, здесь я определяю квадратичную функцию, в которой также могут быть определены параметры a, b и c. Используйте ГЛОБАЛЬНЫЙ оператор и определите неподвижные переменные перед вызовом.
В качестве альтернативы, вы можете поместить все во входной вектор, а затем добавить ограничения, чтобы эти значения не перемещались.
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
Комментарии:
1. Как я мог ограничить диапазон решений? в данном конкретном случае я хотел бы ограничить x> 0.
2. Посмотрите документацию. Вы создаете матрицу ограничений и передаете ее функции nlpqn() .
3. Вот подробная информация о матрице линейных ограничений. support.sas.com/documentation/cdl/en/imlug/66845/HTML/default /…
Ответ №2:
Конечно, вы можете создать свою собственную процедуру оптимизации на языке IML, но у вас также есть встроенные процедуры оптимизации, см. Главу 11 Руководства пользователя IML, Примеры нелинейной оптимизации.