R - Problema con la funcion fmincon

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 2 puestos en R (en relación al último mes)
Gráfica de R

Problema con la funcion fmincon

Publicado por mark (1 intervención) el 22/05/2020 13:59:31
Hola,
Estoy intentando minimizar una funcion no lineal (myfun_ro1_canonica2_v3) con restricciones mediante el comando fmincon pero me sale error,pego el codigo por si alguien puede ayudarme. Gracias!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
myfun_ro1_canonica2_v3 <- function(x,par) {   ## funcion del momento 1 en forma canonica
  # Valores empiricos:
  tau = par[1]; ro1emp = par[2]; mu1emp = par[3]; mu2emp = par[4]; mu3emp = par[5];
    f = (1/x[3]/x[1]*x[2]*x[4]*(x[3]^3*x[1]+2*x[4]*x[3]^2*x[1]+x[4]^2*x[3]*x[1]-3*x[1]*x[3]^2*x[2]-5*x[1]*x[3]*x[2]*x[4]-3*x[1]^2*x[3]*x[4]+x[3]^3*x[2]+x[1]^3*x[4]-x[4]^2*x[1]^2+2*x[2]*x[1]^2*x[4]-2*x[2]*x[4]^2*x[1]-2*x[2]^2*x[4]*x[3]-x[2]^2*x[3]^2+x[4]^2*x[3]*x[2]+2*x[4]*x[3]^2*x[2]+x[2]^2*x[1]*x[3]+2*x[2]*x[1]^2*x[3]+x[2]^2*x[1]*x[4]+x[1]^3*x[3]-2*x[1]^2*x[3]^2-x[2]^2*x[4]^2)/(2*x[4]*x[3]^2*x[2]+2*x[4]^2*x[3]*x[2]+x[4]^2*x[3]*x[1]-2*x[2]^2*x[4]*x[3]-2*x[2]^2*x[4]^2-2*x[2]*x[4]^2*x[1]+x[2]^2*x[1]*x[3]+2*x[2]^2*x[1]*x[4]+2*x[2]*x[1]^2*x[4]-2*x[1]*x[3]*x[2]*x[4])-ro1emp)^2 + tau*(((-(x[4]+x[2])/(x[3]*x[2]+x[2]*x[4]+x[4]*x[1])-mu1emp)/mu1emp)^2 + ((2/x[1]/x[3]*(x[4]*x[3]-x[2]*x[4]+x[2]*x[1])/(x[3]*x[2]+x[2]*x[4]+x[4]*x[1])-mu2emp)/mu2emp)^2 + ((-6/x[1]^2/x[3]^2*(x[4]*x[3]^2-x[2]*x[4]*x[3]-x[2]*x[4]*x[1]+x[2]*x[1]^2)/(x[3]*x[2]+x[2]*x[4]+x[4]*x[1])-mu3emp)/mu3emp)^2);
 
}
 
 
# datos de entrada
tau=1;
ro1emp=0.1660;
mu1emp=4;
mu2emp=28.4250;
mu3emp=255.2875;
par=c(tau,ro1emp,mu1emp,mu2emp,mu3emp)
 
# Matriz de restricciones
A=matrix(c(1,1,0,0,0,0,1,1),nrow=2,ncol=4,byrow= TRUE);
b=c(0,0);
num=100; # numero de puntos iniciales aleatorios
R=matrix(rep(0), nrow=num, ncol=14)
 
for (i in 1:num){
  x = -runif(1,0,100);
  y = runif(1,0,-x);
  u = -runif(1,0,100);
  v = runif(1,0,-u);
  x0=c(x,y,u,v);
 
 
  # Acotaciones de las variables
  lb=matrix(c(-1000,0.001,-1000,0.0001),nrow=4,ncol=1,byrow=TRUE)
  epsilon=2.225e-308;
  ub=matrix(c(-epsilon,Inf,-epsilon,Inf),nrow=4,ncol=1,byrow=TRUE)
 
  library(pracma)
  library(NlcOptim)
  library(MASS)
 
  # Resolvemos el primer problema de optimizacion
 res=fmincon(x0,myfun_ro1_canonica2_v3(x,par),A,b,lb,ub)
  }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder