diff --git a/matRad_fluenceOptimization.m b/matRad_fluenceOptimization.m index aa7d3cc3e..89c045172 100644 --- a/matRad_fluenceOptimization.m +++ b/matRad_fluenceOptimization.m @@ -1,13 +1,15 @@ -function [resultGUI,optimizer] = matRad_fluenceOptimization(dij,cst,pln) +function [resultGUI,optimizer] = matRad_fluenceOptimization(dij,cst,pln,wInit) % matRad inverse planning wrapper function % % call % [resultGUI,optimizer] = matRad_fluenceOptimization(dij,cst,pln) +% [resultGUI,optimizer] = matRad_fluenceOptimization(dij,cst,pln,wInit) % % input % dij: matRad dij struct % cst: matRad cst struct % pln: matRad pln struct +% wInit: (optional) custom weights to initialize problems % % output % resultGUI: struct containing optimized fluence vector, dose, and (for @@ -109,7 +111,9 @@ end % calculate initial beam intensities wInit -if strcmp(pln.propOpt.bioOptimization,'const_RBExD') && strcmp(pln.radiationMode,'protons') +if exist('wInit','var') + %do Nothing +elseif strcmp(pln.propOpt.bioOptimization,'const_RBExD') && strcmp(pln.radiationMode,'protons') % check if a constant RBE is defined - if not use 1.1 if ~isfield(dij,'RBE') diff --git a/optimization/optimizer/matRad_OptimizerIPOPT.m b/optimization/optimizer/matRad_OptimizerIPOPT.m index 2cfc690f3..8f493d77c 100644 --- a/optimization/optimizer/matRad_OptimizerIPOPT.m +++ b/optimization/optimizer/matRad_OptimizerIPOPT.m @@ -64,17 +64,17 @@ obj.options.print_options_documentation = 'no'; % Termination (C.2) - obj.options.tol = 1e-8; % (Opt1) - obj.options.dual_inf_tol = 1; % (Opt2) + obj.options.tol = 1e-10; % (Opt1) + obj.options.dual_inf_tol = 1e-4; % (Opt2) obj.options.constr_viol_tol = 1e-4; % (Opt3) obj.options.compl_inf_tol = 1e-4; % (Opt4), Optimal Solution Found if (Opt1),...,(Opt4) fullfiled - obj.options.acceptable_iter = 3; % (Acc1) + obj.options.acceptable_iter = 5; % (Acc1) obj.options.acceptable_tol = 1e10; % (Acc2) - obj.options.acceptable_constr_viol_tol = 1e10; % (Acc3) + obj.options.acceptable_constr_viol_tol = 1e-2; % (Acc3) obj.options.acceptable_dual_inf_tol = 1e10; % (Acc4) obj.options.acceptable_compl_inf_tol = 1e10; % (Acc5) - obj.options.acceptable_obj_change_tol = 1e-3; % (Acc6), Solved To Acceptable Level if (Acc1),...,(Acc6) fullfiled + obj.options.acceptable_obj_change_tol = 1e-4; % (Acc6), Solved To Acceptable Level if (Acc1),...,(Acc6) fullfiled obj.options.max_iter = matRad_cfg.propOpt.defaultMaxIter; obj.options.max_cpu_time = 3000;