0001 classdef (Abstract) matRad_DoseObjective < matRad_DoseOptimizationFunction 0002 % matRad_DoseObjective: Interface for optimization objectives 0003 % This abstract base class provides the structure of optimization 0004 % objectives like mean dose, squared deviation, EUD, dose-volume etc. 0005 % Implementations can be found in the DoseObjectives package 0006 % 0007 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0008 0009 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0010 % 0011 % Copyright 2015 the matRad development team. 0012 % 0013 % This file is part of the matRad project. It is subject to the license 0014 % terms in the LICENSE file found in the top-level directory of this 0015 % distribution and at https://github.com/e0404/matRad/LICENSES.txt. No part 0016 % of the matRad project, including this file, may be copied, modified, 0017 % propagated, or distributed except according to the terms contained in the 0018 % LICENSE file. 0019 % 0020 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0021 0022 properties (Abstract, Access = public) 0023 penalty %Optimization penalty 0024 end 0025 0026 %These should be abstract methods, however Octave can't parse them. As soon 0027 %as Octave is able to do this, they should be made abstract again 0028 methods %(Abstract) 0029 0030 %returns the objective function value for the given dose vector. Needs to be implemented in sub-classes. 0031 function fDose = computeDoseObjectiveFunction(obj,dose) 0032 error('Function needs to be implemented!'); 0033 end 0034 0035 0036 %returns the dose-gradient for the given dose vector. Needs to be implemented in sub-classes. 0037 function fDoseGrad = computeDoseObjectiveGradient(obj,dose) 0038 error('Function needs to be implemented!'); 0039 end 0040 0041 end 0042 0043 methods (Access = public) 0044 0045 % constructor of matRad_DoseObjective 0046 function obj = matRad_DoseObjective(varargin) 0047 %default initialization from struct (parameters & penalty) 0048 obj@matRad_DoseOptimizationFunction(varargin{:}); 0049 end 0050 0051 %Overloads the struct function to add Objective related information 0052 %to output struct 0053 function s = struct(obj) 0054 s = struct@matRad_DoseOptimizationFunction(obj); 0055 s.penalty = obj.penalty; 0056 end 0057 end 0058 end 0059