Browse Source

Updated goalDef GUI, some opt imization updates

pferjancic 4 years ago
parent
commit
06f2002b4c

+ 2 - 2
WiscPlanPhotonkV125/matlab_frontend/NLP_optimizer_v3.m

@@ -303,12 +303,12 @@ function penalty = eval_f(x, optGoal, nrs_i, sss_i, rgs_i, bLet_idx)
                 % penalize if achieved dose is lower than target dose
                 temp1=-min(0, (optGoal{goal_i}.nrs{nrs_i}.sss{sss_i}.rgs{rgs_i}.beamlets_pruned * x)-...
                     (optGoal{goal_i}.nrs{nrs_i}.sss{sss_i}.rgs{rgs_i}.target));
-                d_penalty = 1.0e0 * (sum(temp1.*temp1+temp1) + 1.0e3* sum(temp1>0)/numel(temp1));
+                d_penalty = 1.0e1 * (sum(temp1.*temp1) + 1.0e3* sum(temp1>0)/numel(temp1));
             case 'max_step'
                 % penalize if achieved dose is higher than target dose
                 temp1=max(0, (optGoal{goal_i}.nrs{nrs_i}.sss{sss_i}.rgs{rgs_i}.beamlets_pruned * x)-...
                     (optGoal{goal_i}.nrs{nrs_i}.sss{sss_i}.rgs{rgs_i}.target));
-                d_penalty = 1.0e0 * (sum(temp1.*temp1+temp1) + 1.0e3* sum(temp1>0)/numel(temp1));
+                d_penalty = 1.0e1 * (sum(temp1.*temp1) + 1.0e3* sum(temp1>0)/numel(temp1));
             case 'LeastSquare'
                 % penalize with sum of squares any deviation from target
                 % dose

+ 3 - 0
WiscPlanPhotonkV125/matlab_frontend/RDX/loadOptResults.m

@@ -288,6 +288,9 @@ optResults.batchNames = optResults.batchNames(perm_vector);
 optResults.dose = optResults.dose(perm_vector);
 optResults.weights = optResults.weights(perm_vector);
 
+% added 7/16/2020 -- allows saving of longer optimizations
+optResults.dose = {optResults.dose{1}, optResults.dose{end}};
+
 % save file to matlab_files folder
 savefile = fullfile(optimizerFolder, 'matlab_files', 'optResults.mat');
 save(savefile,'optSettings','optResults');

+ 9 - 1
WiscPlanPhotonkV125/matlab_frontend/goal_def_UI.m

@@ -241,6 +241,9 @@ OptGoals.goals = [handles.uitable1.Data];
 OptGoals.maxModulation = str2double(handles.maxModulation.String);
 OptGoals.BeamSmoothMax = str2double(handles.BeamSmoothMax.String);
 
+OptGoals.sss.Y = handles.sss_Y.String;
+OptGoals.sss.X = handles.sss_X.String;
+OptGoals.sss.Z = handles.sss_Z.String;
 sss_scene_list={[0,0,0]};
 Num = sscanf(handles.sss_Y.String, '%g,').';
 for i=1:numel(Num)
@@ -273,8 +276,13 @@ disp('load goal')
 
 handles.uitable1.Data = OptGoals.goals;
 handles.maxModulation.String = num2str(OptGoals.maxModulation);
+
+handles.sss_Y.String = OptGoals.sss.Y;
+handles.sss_X.String = OptGoals.sss.X;
+handles.sss_Z.String = OptGoals.sss.Z;
+
 if isfield(OptGoals, 'BeamSmoothMax')
-    handles.MaxBeamSmooth.String = num2str(OptGoals.BeamSmoothMax);
+    handles.BeamSmoothMax.String = num2str(OptGoals.BeamSmoothMax);
 end
 end
 

+ 3 - 3
WiscPlanPhotonkV125/matlab_frontend/read_ryan_beamlets.m

@@ -77,10 +77,10 @@ switch lower(mode)
                 if k == 1 % allocate dose matrix in the first loop
                     dose = zeros(beamlet.x_count, beamlet.y_count, beamlet.z_count);
                 end
-%                 dose(beamlet.non_zero_indices) = dose(beamlet.non_zero_indices) + ...
-%                     beamlet.non_zero_values * weights(beamlet.num);
                 dose(beamlet.non_zero_indices) = dose(beamlet.non_zero_indices) + ...
-                    beamlet.non_zero_values * weights(k);
+                    beamlet.non_zero_values * weights(beamlet.num);
+%                 dose(beamlet.non_zero_indices) = dose(beamlet.non_zero_indices) + ...
+%                     beamlet.non_zero_values * weights(k);
             end
             
             results = beamlets;