--- a
+++ b/MLFre/DPC/SLEP/pathSolutionTGL.m
@@ -0,0 +1,48 @@
+function [Sol,funVal,tsolver]=pathSolutionTGL(X, y, Lambda, opts)
+%% solve the TGL problem for a sequence of parameter values
+
+% -------------------------- pass parameters ---------------------------- %
+npar = length(Lambda);
+p=size(X,2);
+tsolver = zeros(1,npar);
+Sol = zeros(p,npar);
+funVal = zeros(1,npar);
+ind = opts.ind;
+
+% ind1=[
+%     [1, 2, sqrt(2)]', [1, 3, sqrt(3)]'
+%     ]; % the higher layer
+% 
+% ind2=[
+%     [1, 2, sqrt(2)]', [3,3,0]', [1, 3, sqrt(3)]'
+%     ]; % the higher layer
+
+% -------------------------- compute lambda ----------------------------- %
+lambda_max=findLambdaMax(X'*y, p, ind, size(ind,2));
+if opts.rFlag == 1
+    Lambda = Lambda * lambda_max;
+    opts.rFlag = 0;
+end
+[Lambdav,Lambda_ind] = sort(Lambda,'descend');
+
+% -------------------- solve the problems sequentially ------------------ %
+for i = 1:npar
+    fprintf('in solver step: %d\n',i);
+    if opts.init~=2
+        if i == 1
+            opts.x0=zeros(p,1);
+        else
+            opts.x0=x1;
+        end
+    end
+  
+    starts = tic;
+    %[x1, funVal1, ValueL1]= tree_LeastR(X, y, Lambdav(i), opts);
+    [x1, funVal1, ~]= tree_LeastR(X, y, Lambdav(i), opts);
+    tsolver(Lambda_ind(i)) = toc(starts);
+    funVal(Lambda_ind(i)) = funVal1(end);
+    Sol(:,Lambda_ind(i))=x1;
+end
+
+end
+