Changeset 22836
- Timestamp:
- 06/11/18 09:58:30 (7 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
r22829 r22836 84 84 int JlistN = input_struct->N; 85 85 int* Jlisti = input_struct->i; 86 IssmPDouble* X_best = input_struct->X_best; 87 IssmPDouble* G_best = input_struct->G_best; 86 88 IssmPDouble* J_best = input_struct->J_best; 87 IssmPDouble* X_best = input_struct->X_best;88 IssmPDouble* G_best = input_struct->G_best;89 89 int intn = (int)*n; 90 90 … … 166 166 } 167 167 } 168 if(my_rank==0){ 169 if(*J_best<0 || J<*J_best){ 170 *J_best = reCast<IssmPDouble>(J); 171 for(int i=0;i<intn;i++){ 172 X_best[i] = reCast<IssmPDouble>(X[i]); 173 G_best[i] = reCast<IssmPDouble>(G[i]); 174 } 175 } 176 } 168 177 169 178 /*Turning off trace tape*/ … … 298 307 Jlist[(*Jlisti)*JlistN+num_responses] = reCast<IssmPDouble>(J); 299 308 300 301 if(*J_best<0 || J<*J_best){302 *J_best = reCast<IssmPDouble>(J);303 for(int i=0;i<intn;i++){304 X_best[i] = reCast<IssmPDouble>(X[i]);305 G_best[i] = reCast<IssmPDouble>(G[i]);306 }307 }308 309 309 /* 310 310 IssmDouble* test = xNew<IssmDouble>(intn); … … 351 351 _printf0_("\n"); 352 352 353 input_struct->X_best = X_best; 354 input_struct->G_best = G_best; 355 input_struct->J_best = J_best; 356 353 357 /*Clean-up and return*/ 354 358 *Jlisti = (*Jlisti) +1; … … 450 454 mystruct.X_best = xNewZeroInit<IssmPDouble>(intn); 451 455 mystruct.G_best = xNewZeroInit<IssmPDouble>(intn); 456 *mystruct.J_best = -10.; 452 457 /*Initialize Gradient and cost function of M1QN3*/ 453 458 indic = 4; /*gradient required*/ … … 490 495 } 491 496 492 IssmDouble* aX_best = NULL;493 IssmDouble* aG_best = NULL;494 495 femmodel->parameters->FindParam(&aX_best,NULL,InversionXBestEnum);496 femmodel->parameters->FindParam(&aG_best,NULL,InversionGBestEnum);497 498 497 /*Set X as our new control*/ 499 498 IssmDouble* aX=xNew<IssmDouble>(intn); … … 505 504 aX[i] = reCast<IssmDouble>(X[i]); 506 505 aG[i] = reCast<IssmDouble>(G[i]); 507 X_best[i] = reCast<double>( aX_best[i]);508 G_best[i] = reCast<double>( aG_best[i]);506 X_best[i] = reCast<double>(mystruct.X_best[i]); 507 G_best[i] = reCast<double>(mystruct.G_best[i]); 509 508 } 510 509 -
issm/trunk-jpl/src/m/classes/autodiff.m
r22744 r22836 125 125 types=zeros(num_independent_objects,1); 126 126 127 max_parameters_pre = []; 128 min_parameters_pre = []; 129 M_size = false; 130 for i=1:num_independent_objects, 131 indep=self.independents{i}; 132 if M_size == false && indep.control_size>1 133 M_size = true; 134 end 135 end 136 127 137 for i=1:num_independent_objects, 128 138 indep=self.independents{i}; … … 130 140 names{i}=indep.name; 131 141 types(i)=indep.typetoscalar(); 132 min_parameters(:,:,i)=indep.min_parameters; 133 max_parameters(:,:,i)=indep.max_parameters; 142 size(indep.min_parameters) 143 if indep.control_size == 1 && M_size == true 144 indep.min_parameters = [indep.min_parameters;NaN]; 145 indep.max_parameters = [indep.max_parameters;NaN]; 146 end 147 min_parameters_pre=[min_parameters_pre,indep.min_parameters]; 148 max_parameters_pre=[max_parameters_pre,indep.max_parameters]; 134 149 scaling_factors(i)=indep.control_scaling_factor; 135 150 control_sizes(i) = indep.control_size; 136 151 137 152 end 153 154 size(max_parameters_pre) 155 max_parameters=reshape(max_parameters_pre,size(max_parameters_pre,1),sum(control_sizes)); 156 min_parameters=reshape(min_parameters_pre,size(min_parameters_pre,1),sum(control_sizes)); 157 158 size(max_parameters) 138 159 WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray'); 139 160 WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3);
Note:
See TracChangeset
for help on using the changeset viewer.