I have put together a R snippet wherein I am trying to get optimum values for which error is minimized. The error is the difference between two matrices. Every time I run the below code, I don't see any optimization happening as in the final answer is the same as the initial estimate regardless of what I mention as initial estimate. Could you please advise on how can I improve it? I have also tried using nloptr but to no avail.
To optimize vp.kval my.data.matrix.prod <- matrix(a,nrow = length(a),1) Estimated.Qt.mat <- matrix(b,nrow = nrow(my.data.matrix.prod), ncol = 1) Cum.WInj.matrix <- matrix (c,nrow = nrow(my.data.matrix.prod), ncol = 1) Koval.tD <- matrix(,nrow = nrow(my.data.matrix.prod), ncol = 1) # tD Matrix Koval.fw <- matrix(,nrow = nrow(my.data.matrix.prod), ncol = 1) # fw Matrix Koval.Error.func <- function(vp.kval,n) { #First convert vector(Koval.InitialData.list) to MATRIX and send it to calculate estimated matrix Koval.InitialData.Matrix <- matrix(vp.kval,nrow = 2, 1,byrow = TRUE) # Define Koval Parameters Matrix for the "n" Qo.Koval <- Qo.Koval(Koval.InitialData.Matrix) # Get Qo Estimation from Koval diff.values <- my.data.matrix.prod[,n] - Qo.Koval #FIND DIFFERENCE BETWEEN CAL. MATRIX AND ORIGINAL MATRIX Error <- ((colSums ((diff.values^2), na.rm = TRUE, dims = 1))/nrow(my.data.matrix.prod))^0.5 #sum of square root of the diff Error # return error value } Qo.Koval <- function(Koval.InitialData.Matrix) { Qo.Koval.Est <- matrix(,nrow(my.data.matrix.prod), 1) #ncol(my.data.matrix.prod) for(rowno in 1:nrow(my.data.matrix.prod)) #number of rows of data { Koval.tD[rowno,1] = Cum.WInj.matrix[rowno,1] * Koval.InitialData.Matrix[1,1] # Evaluate tD matrix if(Koval.tD[rowno,1] < (1/Koval.InitialData.Matrix[2,1])) { Koval.fw[rowno,1] = 0 } else { if(Koval.tD[rowno,1] > Koval.InitialData.Matrix[2,1]) { Koval.fw[rowno,1] = 1 }else { Koval.fw[rowno,1] = (Koval.InitialData.Matrix[2,1] - sqrt(Koval.InitialData.Matrix[2,1]/Koval.tD[rowno,1]))/(Koval.InitialData.Matrix[2,1]-1) } } Qo.Koval.Est[rowno,1] = Koval.fw[rowno,1] * Estimated.Qt.mat[rowno,1] } Qo.Koval.Est # Return Estimated matrix } vp.kval <- c(100000,1) #initial estimate Koval.lb = c(0,0) Koval.ub = c(Inf,Inf) n <- 1 Koval.result <- optim(vp.kval,Koval.Error.func, method = "L-BFGS-B", lower = Koval.lb, upper = Koval.ub, n=n) print(paste(Koval.result$convergence)) print(paste(Koval.result$par)) Here is the input data: a: structure(c(414, 40, 639, 616, 677, 598, 586, 494, 322, 351, 322, 213, 395, 358, 406, 384, 409, 404, 370, 376, 412, 404, 369, 391, 341, 350, 349, 313, 302, 196, 386, 330, 350, 323, 454, 465, 465, 399, 416, 396, 453, 388, 496, 379, 472, 491, 492, 503, 516, 454, 630, 547, 578, 312, 764, 672, 548, 611, 546, 552, 520, 486, 581, 559, 433, 262, 650, 615, 542, 571, 542, 529, 577, 469, 557, 540, 546, 519, 376, 605, 520, 435, 299, 531, 538, 475, 511, 487, 490, 494, 537, 482, 438, 498, 312, 476, 383, 382), .Dim = c(98L, 1L), .Dimnames = list(NULL, "Q2")) b: structure(c(2342.12883525675, 2595.06229039124, 2715.2774272809, 2742.14586849367, 2678.48814516156, 2769.17482063132, 2809.26904957691, 2647.26143288146, 2142.48588931211, 1986.26692938822, 2417.80180308667, 2539.99173834861, 2889.68696098066, 2949.03395956634, 3345.265659123, 3178.09552101488, 3202.97894028497, 3294.04615708455, 3273.96002181006, 3290.59294404149, 3074.57078080845, 2809.00966959208, 2870.20594457832, 2994.89960881099, 3031.51083818418, 2838.72778780229, 2779.83367818986, 2471.70302686638, 2277.52074079803, 2313.67080371772, 2415.57558854185, 2593.57170885689, 2579.65222779155, 2542.47630393453, 2610.16334633228, 2715.1622580481, 2680.04491562794, 2676.08878142995, 2890.5657368073, 2939.98447437336, 2932.41354171428, 2699.29100102243, 2748.9757584712, 2885.90115387751, 2841.03004973532, 3111.28842226602, 3293.09352655985, 3448.16679970445, 3470.58231818316, 3077.6191619663, 2892.81263635983, 2563.00601428125, 2410.40833201752, 2696.80369889632, 3250.95996536945, 3900.33363068933, 3571.89127039948, 3569.09158205254, 3718.94141619046, 3963.05018539626, 4317.67764180387, 4143.2306512351, 4482.33003541385, 4313.47162218783, 4162.58533919444, 4119.75974744111, 4080.01960112015, 4146.78116940934, 3848.98992961189, 3507.00912988581, 3336.3269842557, 3691.50683899193, 3616.0923981163, 3325.14304882807, 3471.79805853069, 3229.60965194249, 3106.05768279943, 3184.66721766981, 3140.79657087168, 3242.97205541341, 3090.78617601495, 3086.74973135927, 3317.74000570974, 3594.90929884806, 3716.02759860505, 3622.91307702134, 3793.8518218782, 3666.82966979173, 3779.4557494045, 3750.98605852729, 3333.45681985961, 3057.22984206785, 3395.04273620089, 3623.47886822009, 3690.34495906538, 3827.97665203175, 3933.61679986677, 3762.82354740958), .Dim = c(98L, 1L)) c: structure(c(2854.17262019504, 91576.5893971961, 171680.262910889, 257565.867448752, 335812.78671975, 424624.296030534, 510229.898689908, 586994.432148103, 636896.230541501, 691311.784820203, 780382.614051205, 860628.109248455, 961649.745761829, 1055011.51571743, 1162113.22730208, 1255164.70993334, 1352077.97513698, 1457172.94644257, 1554726.68952114, 1657279.26732716, 1745523.14071769, 1821000.62788843, 1911979.2340704, 2005954.86455037, 2101129.54803795, 2182822.62676551, 2258661.15941603, 2325202.52364728, 2387098.71588595, 2460005.26984465, 2535846.63352407, 2622071.03988945, 2701584.84087477, 2776628.22472118, 2859757.87551639, 2944689.28669068, 3026621.7086177, 3109451.02390273, 3200463.68736646, 3293220.09008416, 3380941.82063061, 3456992.53009029, 3541106.87910663, 3635049.74483035, 3721653.58199201, 3823940.56521733, 3931974.7704047, 4040554.293988, 4148875.73758196, 4231424.94909108, 4306157.82023537, 4374820.38189491, 4442080.07977206, 4535051.28823047, 4650928.35668784, 4793084.92990124, 4893067.57046614, 5000047.61946087, 5120237.59556207, 5247211.61097682, 5392662.33159569, 5515394.91894634, 5652397.35652795, 5780590.26125026, 5900471.93425283, 6026783.31719041, 6147868.09782702, 6278602.62144284, 6388178.16489299, 6482065.35854026, 6579907.11054506, 6702412.42037957, 6812043.87236422, 6905604.01572694, 7007786.71329603, 7099980.68361161, 7189071.57372477, 7290368.20702837, 7383139.53472758, 7487014.64958016, 7577849.79802546, 7670318.64215094, 7780726.13033402, 7897750.56237753, 8016910.17077053, 8126173.95193153, 8241923.12215802, 8351438.92663496, 8468551.68021943, 8583900.77567578, 8670079.97000769, 8755816.49103472, 8872115.39013376, 8988383.34061776, 9104971.76148562, 9224368.08502439, 9349766.5439318, 9460826.05419725), .Dim = c(98L, 1L)) ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.