Skip to content

Commit 3d29b76

Browse files
authored
Merge pull request #506 from e0404/hotfixes/daoWithConstraints
Fix Direct Aperture Optimization with Constraints
2 parents b478ede + be8b2bf commit 3d29b76

File tree

5 files changed

+18
-15
lines changed

5 files changed

+18
-15
lines changed

optimization/@matRad_OptimizationProblemDAO/matRad_constraintFunctions.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
%
3333
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3434

35+
% update apertureInfo, bixel weight vector an mapping of leafes to bixels
36+
if ~isequal(apertureInfoVec,optiProb.apertureInfo.apertureVector)
37+
optiProb.apertureInfo = optiProb.matRad_daoVec2ApertureInfo(optiProb.apertureInfo,apertureInfoVec);
38+
end
3539
apertureInfo = optiProb.apertureInfo;
3640

3741
% value of constraints for leaves

optimization/@matRad_OptimizationProblemDAO/matRad_constraintJacobian.m

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@
3030
%
3131
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3232

33-
apertureInfo = optiProb.apertureInfo;
34-
35-
% update apertureInfo if necessary
36-
if ~isequal(apertureInfoVec,apertureInfo.apertureVector)
37-
apertureInfo = optiProb.matRad_daoVec2ApertureInfo(apertureInfo,apertureInfoVec);
33+
% update apertureInfo, bixel weight vector an mapping of leafes to bixels
34+
if ~isequal(apertureInfoVec,optiProb.apertureInfo.apertureVector)
35+
optiProb.apertureInfo = optiProb.matRad_daoVec2ApertureInfo(optiProb.apertureInfo,apertureInfoVec);
3836
end
37+
apertureInfo = optiProb.apertureInfo;
3938

4039
% jacobian of the dao constraints
4140

optimization/@matRad_OptimizationProblemDAO/matRad_getJacobianStructure.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
end
7474

7575
% second leaves
76-
counter = 0;
76+
counter = apertureInfo.totalNumOfShapes;
7777
for i = 1:size(apertureInfo.beam,2)
7878
for j = 1:apertureInfo.beam(i).numOfShapes
7979
for k = 1:apertureInfo.beam(i).numOfActiveLeafPairs

optimization/@matRad_OptimizationProblemDAO/matRad_objectiveFunction.m

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
function f = matRad_objectiveFunction(optiProb,apertureInfoVect,dij,cst)
1+
function f = matRad_objectiveFunction(optiProb,apertureInfoVec,dij,cst)
22
% matRad IPOPT callback: objective function for direct aperture optimization
33
%
44
% call
55
% f = matRad_objectiveFunction(optiProb,apertureInfoVect,dij,cst)
66
%
77
% input
88
% optiProb: option struct defining the type of optimization
9-
% apertureInfoVect: aperture info in form of vector
9+
% apertureInfoVec: aperture info in form of vector
1010
% dij: matRad dij struct as generated by bixel-based dose calculation
1111
% cst: matRad cst struct
1212
%
@@ -31,10 +31,11 @@
3131
%
3232
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3333

34-
apertureInfo = optiProb.apertureInfo;
35-
3634
% update apertureInfo, bixel weight vector an mapping of leafes to bixels
37-
apertureInfo = optiProb.matRad_daoVec2ApertureInfo(apertureInfo,apertureInfoVect);
35+
if ~isequal(apertureInfoVec,optiProb.apertureInfo.apertureVector)
36+
optiProb.apertureInfo = optiProb.matRad_daoVec2ApertureInfo(optiProb.apertureInfo,apertureInfoVec);
37+
end
38+
apertureInfo = optiProb.apertureInfo;
3839

3940
% bixel based objective function calculation
4041
f = matRad_objectiveFunction@matRad_OptimizationProblem(optiProb,apertureInfo.bixelWeights,dij,cst);

optimization/@matRad_OptimizationProblemDAO/matRad_objectiveGradient.m

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,11 @@
3131
%
3232
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3333

34-
apertureInfo = optiProb.apertureInfo;
35-
3634
% update apertureInfo, bixel weight vector an mapping of leafes to bixels
37-
if ~isequal(apertureInfoVec,apertureInfo.apertureVector)
38-
apertureInfo = optiProb.matRad_daoVec2ApertureInfo(apertureInfo,apertureInfoVec);
35+
if ~isequal(apertureInfoVec,optiProb.apertureInfo.apertureVector)
36+
optiProb.apertureInfo = optiProb.matRad_daoVec2ApertureInfo(optiProb.apertureInfo,apertureInfoVec);
3937
end
38+
apertureInfo = optiProb.apertureInfo;
4039

4140
% bixel based gradient calculation
4241
bixelG = matRad_objectiveGradient@matRad_OptimizationProblem(optiProb,apertureInfo.bixelWeights,dij,cst);

0 commit comments

Comments
 (0)