Learner
Posts: 1

# notation of complex functions PROC OPTMODEL

Hi,

I don’t have much experience in using proc optmodel. I try to optimize rather complex function f. See below and it is just part of it. I wonder if there is a way to simplify it notation. In general, I would like to know if I deal with min of function z(a,b,c)=(k(a,b,c) – g(a,b,c))^3-sin(g(a,b,c)). Can I define first function k and g  and then search for min z(a,b,c) and refer to functions f and g?

Thank you in advance!

Regards,

JED

data bard;

set lib1.test;

C_T=Sigma_hat*sqrt(T)*F_hat/sqrt(2*3.14159265359*2);

Ln_F_hat=log(F_hat);

drop obs;

run;

proc optmodel;

set J = 1..60;

set I = 1..16;

number T, F_hat, Sigma_hat, C_T, Ln_F_hat;

read data bard into T F_hat Sigma_hat C_T Ln_F_hat;

number v{k in J} = F_hat;

quit;

proc optmodel;

set J = 1..60;

set I = 1..16;

number T, F_hat, Sigma_hat, C_T, Ln_F_hat;

read data bard into T F_hat Sigma_hat C_T Ln_F_hat;

number v0{k in J} = T;

number v1{k in J} = F_hat;

number v2{k in I} = Sigma_hat;

number v3{k in I} = C_T;

number v4{k in J} = Ln_F_hat;

var kappa init 0.8541;

var chi_0 init 1.8373;

var chi_1 init 2.02;

var mu_psi init -0.0593;

var sigma_chi init 0.4069;

var sigma_psi init 0.00000216;

var rho_chi_psi init 0.000001;

var rho init 0.00647;

var psi init 2.200;

min f=sum{k in J}

(  psi +EXP(-1*kappa*v0[k])*chi_0 +(1-EXP(-1*kappa*v0[k]))*chi_1+mu_psi*v0[k]+0.5*((1-EXP(-2*kappa*v0[k]))*(sigma_chi^2)/(2*kappa)+(sigma_psi^2)*v0[k]+2*(1-EXP(-1*kappa*v0[k]))*((rho_chi_psi*sigma_psi*sigma_chi)/kappa))-v4[k]  )**2;

con c1: sigma_chi>=0;

con c2: sigma_psi>=0;

con c3: -1<=rho_chi_psi<=1;

SOLVE WITH NLPC;

print kappa;

print  chi_0 ;

print chi_1 ;

print mu_psi;

print sigma_chi;

print sigma_psi ;

print  rho_chi_psi;

print rho ;

print psi;

print f;

quit;

data bard;
set lib1.test;
C_T=Sigma_hat*sqrt(T)*F_hat/sqrt(2*3.14159265359*2);
Ln_F_hat=log(F_hat);
drop obs;
run;

proc optmodel;
set J = 1..60;
set I = 1..16;
number T, F_hat, Sigma_hat, C_T, Ln_F_hat;
read data bard into T F_hat Sigma_hat C_T Ln_F_hat;
number v{k in J} = F_hat;
quit;

proc optmodel;
set J = 1..60;
set I = 1..16;
number T, F_hat, Sigma_hat, C_T, Ln_F_hat;
read data bard into T F_hat Sigma_hat C_T Ln_F_hat;
number v0{k in J} = T;
number v1{k in J} = F_hat;
number v2{k in I} = Sigma_hat;
number v3{k in I} = C_T;
number v4{k in J} = Ln_F_hat;
var kappa init 0.8541;
var chi_0 init 1.8373;
var chi_1 init 2.02;
var mu_psi init -0.0593;
var sigma_chi init 0.4069;
var sigma_psi init 0.00000216;
var rho_chi_psi init 0.000001;
var rho init 0.00647;
var psi init 2.200;
min f=sum{k in J}
( psi +EXP(-1*kappa*v0[k])*chi_0 +(1-EXP(-1*kappa*v0[k]))*chi_1+mu_psi*v0[k]+0.5*((1-EXP(-2*kappa*v0[k]))*(sigma_chi^2)/(2*kappa)+(sigma_psi^2)*v0[k]+2*(1-EXP(-1*kappa*v0[k]))*((rho_chi_psi*sigma_psi*sigma_chi)/kappa))-v4[k] )**2;
con c1: sigma_chi>=0;
con c2: sigma_psi>=0;
con c3: -1<=rho_chi_psi<=1;
SOLVE WITH NLPC;
print kappa;
print chi_0 ;
print chi_1 ;
print mu_psi;
print sigma_chi;
print sigma_psi ;
print rho_chi_psi;
print rho ;
print psi;
print f;
quit;

SAS Employee
Posts: 538

## Re: notation of complex functions PROC OPTMODEL

Yes, you can use the IMPVAR statement to define expressions that you can reference later, including in an objective declaration.

Discussion stats