From a939d12a59c6e3b9ee654a348e30b0c7016f6ffd Mon Sep 17 00:00:00 2001
From: Mohammad Shojafar <mshojafar@users.noreply.github.com>
Date: Sun, 25 Feb 2018 16:01:13 +0100
Subject: [PATCH] Notice for the Codes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

DVFS on CDC source code is in DVFS_*.m (type 1=static scenario of the incoming traffic per time slot)
Lyapunov method on CDC source code is in Lyapunov*.m (Static switch: fix number of POD switch per time slot)
Other functions are an internal function that use Newton and multi-gradient solution to find the optimum dual variable for each solution.


* While using this code and producing some result, you must add the following citation that the originality of the following code is presented.
M. Shojafar, N. Cordeschi, D. Amendola, E. Baccarelli, ”Energy-saving adaptive computing and traffic engineering for real-time-service data centers”, The 50th IEEE International Conference on Communications(IEEE ICC WORKSHOP 2015), London, UK, pp. 1800-1806, 2015. Doi: http://dx.doi.org/10.1109/ICCW.2015.7247442
---
 ICC2015_Sourcecode/DVFS_type1_ICC.m           | 495 +++++++++++++
 ICC2015_Sourcecode/DVFS_type2_ICC.m           | 312 ++++++++
 .../Lyapunov5_Dynamic_V_Fixed_Switch.m        | 507 +++++++++++++
 .../Lyapunov5_Static_V_Fixed_Switch.m         | 681 ++++++++++++++++++
 ICC2015_Sourcecode/Mu_opt_bisezione.m         |  65 ++
 ICC2015_Sourcecode/X.mat                      | Bin 0 -> 75859 bytes
 ICC2015_Sourcecode/copyright notice.docx      | Bin 0 -> 15593 bytes
 ICC2015_Sourcecode/deletezero.m               |  12 +
 ICC2015_Sourcecode/delta_carico.m             |  16 +
 ICC2015_Sourcecode/grafica_delta_carico.m     |   6 +
 ICC2015_Sourcecode/tracking3.m                | 180 +++++
 ICC2015_Sourcecode/variabili.m                |  10 +
 12 files changed, 2284 insertions(+)
 create mode 100644 ICC2015_Sourcecode/DVFS_type1_ICC.m
 create mode 100644 ICC2015_Sourcecode/DVFS_type2_ICC.m
 create mode 100644 ICC2015_Sourcecode/Lyapunov5_Dynamic_V_Fixed_Switch.m
 create mode 100644 ICC2015_Sourcecode/Lyapunov5_Static_V_Fixed_Switch.m
 create mode 100644 ICC2015_Sourcecode/Mu_opt_bisezione.m
 create mode 100644 ICC2015_Sourcecode/X.mat
 create mode 100644 ICC2015_Sourcecode/copyright notice.docx
 create mode 100644 ICC2015_Sourcecode/deletezero.m
 create mode 100644 ICC2015_Sourcecode/delta_carico.m
 create mode 100644 ICC2015_Sourcecode/grafica_delta_carico.m
 create mode 100644 ICC2015_Sourcecode/tracking3.m
 create mode 100644 ICC2015_Sourcecode/variabili.m

diff --git a/ICC2015_Sourcecode/DVFS_type1_ICC.m b/ICC2015_Sourcecode/DVFS_type1_ICC.m
new file mode 100644
index 0000000..f5f5ac1
--- /dev/null
+++ b/ICC2015_Sourcecode/DVFS_type1_ICC.m
@@ -0,0 +1,495 @@
+%ScriptMax 1a cond + ni cond blocco totale version 4
+close all;
+clear all;
+clc;
+
+tic;
+VMNo=100;                                        % VM numbers
+N = 2000;                                        %number of workloads
+
+nVM=[];
+% +-+-+-+-+-+ parameters +-+-+-+-+-+ 
+for i=1:VMNo
+nVM = [nVM,i];                        %number of virtual machines
+end
+
+
+speed_cost_all = zeros(length(nVM),N);           %matrix of speed cost_all (1 x workloads)
+switch_cost_all = zeros(length(nVM),N);          %matrix of switch cost (1 x workloads)
+channel_cost_all = zeros(length(nVM),N);         %matrix of channel cost (1 x workloads)
+tot_cost_all = zeros(length(nVM),N);             %matrix of total cost (1 x workloads)
+
+
+k_e = 0.005;                            %frequency change cost  parameter
+delta = 0.1;                          %task time
+f0 = 0;                             %percentage of fmax of initial frequency
+iterations = 10000;                 %max number of iteration
+gamma = 0.5;
+
+tol_workload_allocated = 0.01;      %tolerance 1st condition
+epsilon = 0.01;                     %tolerance 2nd condition
+R_tot = 100;                        %capacity of NetDC
+%L_tot_vect = 6+ round((10-6) * rand(1,N)); % PMR=1.25, L_tot=8+-2
+%save('workloads8PMR125No1000.mat', 'L_tot_vect');                  %loading 100 fixed random workloads
+L_tot_vect=load('workloads8PMR125No2000.mat','L_tot_vect');                                %loading 100 fixed random workloads
+L_tot_vect = L_tot_vect.L_tot_vect;
+
+T_tot = 5;      
+beta = 0.41/(T_tot - delta)^1.995;%time out
+%beta = 0.34/(T_tot - delta)^1;%time out
+
+rule_counter=zeros(1,N);                    % (insit of notsatisfactin cases) states for the each incoming workload facing in 3 rules
+rule1_counter=0;
+rule2_counter=0;
+rule3_counter=0;
+
+Zeta_vector=[0.5:0.1:100];
+%VMs=[2, 100];
+
+% iter_mat1 = zeros(1,N); 
+% mu_mat1 = zeros(N,iterations);
+% ni_mat1 = zeros(N,iterations);
+% f_opt_mat1=zeros(N,iterations);
+% L_mat1=zeros(N,iterations);
+
+%for M = nVM(1):VMNo
+for M = 100:100
+%for M = 1:length(VMs)
+    %M=VMs(M);
+    M
+    f_max = 105 * ones(1,M);        % (Mbit/s) max working frequency
+    f_zero = (f0/100) * f_max;      %initial working frequency
+    %f_zero = 0;      %initial working frequency
+    W = ones(1,M);                  %band of each channel (MHz)
+    %Zeta = 0.5 * ones(1,M);         %channel parameters (mW)
+    Zeta = Zeta_vector(1:M); 
+    f_opt_new=zeros(1,M);
+%     N_0 = ones(1,M);g = ones(1,M);Zeta = (N_0 .* W) / g;R = [0:0.1:R_max];P_net = Zeta .* (2^(R/W) - 1);
+    E_max = 60 * ones(1,M);         %max power consumption (@fmax)
+    omega = ones(1,M);              %relative power consumption (virtualization cost)
+    Delta = delta *  ones(1,M);     %task time
+    Delta_max = max(Delta);         %max task time
+    L_b = zeros(1,M);               %background task size for each VM
+    
+%    speed_cost = zeros(N,iterations);           %matrix of speed cost (workloads x iteration)
+%    switch_cost = zeros(N,iterations);          %matrix of switch cost (workloads x iteration)
+%    channel_cost = zeros(N,iterations);         %matrix of channel cost (workloads x iteration)
+%    tot_cost = zeros(N,iterations);             %matrix of total cost (workloads x iteration)
+    
+        
+    temp=2.*k_e+(2.*E_max.*omega./(f_max.^2));  %temp var for calculation of fi*
+    Th = 2 * (Zeta./W) * log(2);                %threshold = derivation of Pnet(Ri) 
+    
+    iter_mat = zeros(1,N);                      %number of iteration necessary for 1st condition for each workload
+    
+%     MatrixRis = zeros(1+M+M,N);                 %matrix of results, row: 1=final_iter 2=final_alpha 3=tot_cost 4=final_ni 5=2nd_condition 6=(ni<esp & g(.)<esp)
+%     L_allocated = zeros(N,iterations);          %matrix of total allocation for each iteration fon each workload 
+%     f_opt_mat = zeros(N,iterations);            %matrix of frequency allocation for each iteretion for each workload FOR THE 1ST VM
+%     L_mat = zeros(N,iterations);                %matrix of  allocation for each iteretion for each workload FOR THE 1ST VM
+%     ni_mat = zeros(N,iterations);               %matrix of "ni" value for each iteretion for each workload FOR THE 1ST VM
+%     mu_mat = zeros(N,iterations);
+%     
+    %matrix of "mu" value for each iteretion for each workload
+    alpha_mat = zeros(N,iterations);            %matrix of "alpha" value for each iteretion for each workload
+    pippo_mat = zeros(N,iterations);            %matrix of "pippo" value for each iteretion for each workload FOR THE 1ST VM
+    
+    for l = 1:N                                 % workload number
+        %check feasibility
+        feas_workload = (sum(f_max.*Delta-L_b) >= L_tot_vect(l));
+        feas_time = (L_tot_vect(l) <= R_tot.*(T_tot-Delta_max)./2);
+        feas_back = min(Delta.*f_max >= L_b);
+        feasibility = feas_workload && feas_time && feas_back;
+        if ~ feasibility
+            error('Problem unfeasible for the workload %d',l);
+        else
+            fprintf('Problem feasibile for the workload %d\n',l);
+            Delta_load = zeros(1,iterations);
+            L = zeros(iterations,M);
+            alpha = zeros(1,iterations);
+            pippo = zeros(1,iterations);
+            V = zeros(1,iterations);
+            V_pippo = zeros(1,iterations);
+            mu = zeros(1,iterations);
+            ni = zeros(iterations,M);
+            y = zeros(iterations,M);
+            f_opt = zeros(iterations,M);
+            i = 2;
+            while i <= iterations
+                bandierina = 0;
+                k=0;
+                cond3 = zeros(1,M);
+                cond2 = zeros(1,M);
+                %calculate of MU
+                mu(i) = max(0,(mu(i-1) - ((alpha(i-1))) * (sum(L(i-1,:)) - L_tot_vect(l)) ) );
+                
+                %calculate of temp variable
+                y(i,:) = max(0,( ((T_tot-Delta)/2) .* W .* log2(mu(i) ./ Th) ) );
+                
+                %calculate of ni; the old was: ni(i,:) = max(0,( ni(i-1,:) + (alpha(i-1) * ( L(i-1,:) - (Delta.*f_opt(i-1,:))))))
+                ni(i,:) = (ni(i-1,:) + (pippo(i-1) * (y(i,:) - Delta.*f_opt(i-1,:))));
+
+                %calculate of f_opt
+                f_star = (2*k_e*f_zero + ni(i,:).*Delta)./ temp;
+                f_opt(i,:) = max(L_b/Delta,min(f_star,f_max)); 
+                               
+                %calculate of L
+                L(i,:) = min(f_opt(i,:) .* Delta(1,:),y(i,:));
+
+%                 ni(i,ni(i,:)<=0.01) = 0;
+%                 for h=1:M
+%                     if ni(i,h)>0
+%                         L(i,h)=f_opt(i,h) .* Delta(1,h);
+%                     else
+%                         L(i,h) = y(i,h);
+%                     end
+%                 end
+                
+                % 2nd and 3rd condition
+                for x = 1:M
+                    cond3(1,x) = (((abs(ni(i,x)))<=epsilon)||((abs(L(i,x)-f_opt(i,x)*Delta(1,x)))<=epsilon));
+                    cond2(1,x) = L(i,x)<=f_opt(i,x)*Delta(1,x);
+                end
+                
+%                 if (  (sum(cond3(1,:)) < M)||(sum(cond2(1,:)) < M)  )
+%                     alpha(i-1) = 0.5 * alpha(i-1);
+%                     bandierina = 1;
+%                     k = k + 1;
+%                     fprintf('alpha loop...);
+%                 end  
+                if (bandierina == 0 && k<100)
+                    alpha(i) = max(0,min(beta,alpha(i-1) - gamma * V(i-1) * (sum(L(i-1,:)) - L_tot_vect(l))));
+                    V(i) = (1 - alpha(i-1)) * V(i-1) - (sum(L(i-1,:)) - L_tot_vect(l));
+                    pippo(i) = max(0,min(0.001,pippo(i-1) - gamma * V_pippo(i-1) *(Delta(1)*f_opt(i-1,1)- y(i,1))));
+                    V_pippo(i) = (1 - pippo(i-1)) * V_pippo(i-1) - (Delta(1)*f_opt(i-1,1)- y(i,1));
+                    Delta_load(i)=sum(L(i,:))-L_tot_vect(l);
+%                     speed_cost(l,i) = sum(((f_opt(i,:)./f_max).^2).*omega.*E_max);                                % Computing (11.1)
+%                     switch_cost(l,i) = sum(k_e.*(f_opt(i,:)-f_zero).^2);                                          % Switching (11.1)
+%                     channel_cost(l,i) = (T_tot-Delta(1)).*sum(Zeta .* (2.^(2*L(i,:)./((T_tot-Delta).*W))-1));     % Networking
+%                     tot_cost(l,i) = speed_cost(l,i) + switch_cost(l,i) + channel_cost(l,i);                       % Overall
+%                     
+%                    L_allocated(l,i) = sum(L(i,:));
+%                     L_mat(l,i) = L(i,1);
+%                     f_opt_mat(l,i) = f_opt(i,1);
+%                     ni_mat(l,i) = ni(i,1);
+%                     mu_mat(l,i) = mu(i);
+%                     alpha_mat(l,i) = alpha(i);
+%                     pippo_mat(l,i) = pippo(i);
+                     cond_car_all = abs(Delta_load(i)/L_tot_vect(l))>=tol_workload_allocated;
+                    if cond_car_all
+                        iter_mat(l) = i;
+%                         MatrixRis(1:M,l) = L(i,:);
+%                         MatrixRis(M+1:M+M,l) = f_opt(i,:);
+%                         MatrixRis(M+M+1,l) = tot_cost(l,i);
+                    else
+                        fprintf('correct allocation for workload n: %d (%d) at iteration %d\n',l,L_tot_vect(l),i);
+                        iter_mat(l) = i;
+%                         MatrixRis(1:M,l) = L(i,:);
+%                         MatrixRis(M+1:M+M,l) = f_opt(i,:);
+%                         MatrixRis(M+M+1,l) = tot_cost(l,i);
+                        break;
+                    end
+                    i = i + 1;
+                end
+            end
+        end
+        if i == iterations + 1
+            i = i - 1;
+        end
+        
+               
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DESCRETE
+        
+        f_precedente=zeros(1,M);
+        f_successiva=zeros(1,M);
+        x1=zeros(1,M);
+        
+        Q=6; %numero frequenze discrete;
+        f_discrete=zeros(1,Q);
+        for conta=1:M
+            %f_discrete(conta,:)=[0:f_max(conta)./(Q-1):f_max(conta)];
+            f_discrete(conta,:)=[0, 5,50,70,90,105]; % Mhz or Mb/s
+        end
+        
+        f_opt_new=f_opt(iter_mat(l), :);
+        
+        for conta=1:M
+            
+            delta_f_discrete=f_discrete(conta,:)-f_opt_new(conta);
+            [ff,ind_ff]=min(abs(delta_f_discrete));
+            if ff==0
+                f_precedente(conta)=f_discrete(conta,ind_ff);
+                f_successiva(conta)=f_discrete(conta,ind_ff);
+                x1(conta)=1; %qualsiasi valore č indifferente
+            elseif ind_ff==1
+                f_precedente(conta)=f_discrete(conta,1);
+                f_successiva(conta)=f_discrete(conta,2);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            elseif ind_ff==Q
+                f_precedente(conta)=f_discrete(conta,Q-1);
+                f_successiva(conta)=f_discrete(conta,Q);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            elseif delta_f_discrete(ind_ff)>0
+                f_precedente(conta)=f_discrete(conta,ind_ff-1);
+                f_successiva(conta)=f_discrete(conta,ind_ff);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            else
+                f_precedente(conta)=f_discrete(conta,ind_ff);
+                f_successiva(conta)=f_discrete(conta,ind_ff+1);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            end
+            
+        end
+        
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        
+         %speed_cost_all(M,l)=speed_cost(l,iter_mat(l));
+       % switch_cost_all(M,l)=switch_cost(l,iter_mat(l));
+        
+%         speed_cost_all(M,l)=sum(((((f_precedente/f_max).^2)).*omega.*E_max).*(1-x1)+((((f_successiva/f_max).^2)).*omega.*E_max).*x1);
+%         switch_cost_all(M,l)=sum((k_e.*(f_precedente-f_zero).^2).*(1-x1)+(k_e.*(f_successiva-f_zero).^2).*x1);
+%         
+%         channel_cost_all(M,l)=channel_cost(l,iter_mat(l));
+%         
+%         tot_cost_all(M,l)=speed_cost_all(M,l)+switch_cost_all(M,l)+channel_cost_all(M,l);
+        
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        
+        f_zero = f_opt(i,:);
+        %1a Condizione
+        if i > iterations
+            i=iterations;
+        end
+        if i >= iterations
+            fprintf('!!!!!!!WARNING!!!!!!!prima condizione non soddifatta: NON CONVERGE!!!\n');
+            rule_counter(l)=1;
+            rule1_counter=rule1_counter+1;
+        end
+        %3a Condizione
+        for x = 1:M
+            cond3(1,x) = (((abs(ni(i-1,x)))<=epsilon)||((abs(L(i-1,x)-f_opt(i-1,x)*Delta(1,x)))<=epsilon));
+        end
+        if sum(cond3(1,:))< M
+            fprintf('!!!!!!!WARNING!!!!!!!terza condizione NON soddisfatta\n');
+            rule_counter(l)=3;
+            rule3_counter=rule3_counter+1;
+        end
+        %2a condizione
+        if L(i,:)>(f_opt(i,:) .* Delta(1,:));
+            fprintf('!!!!!!!WARNING!!!!!!!seconda condizione NON soddisfatta\n'); 
+            rule_counter(l)=2;
+            rule2_counter=rule2_counter+1;            
+        end
+    end
+    clear speed_cost switch_cost channel_cost tot_cost 
+%     if M==2
+%     mu_mat1 = mu_mat;
+%     iter_mat1=iter_mat;
+%     ni_mat1 = ni_mat;
+%     f_opt_mat1=f_opt_mat;
+%     L_mat1=L_mat;
+%     end
+end
+time = toc;
+fprintf('tempo: %d\n',time);
+
+NNN=1;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DESCRETE COMPARISONS
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Presimulation-definitions
+% speed_cost_all_WL=zeros(1,N);
+% switch_cost_all_WL=zeros(1,N);
+% channel_cost_all_WL=zeros(1,N);
+% tot_cost_all_WL=zeros(1,N);
+% 
+% speed_cost_all_VM=zeros(1,length(nVM));
+% switch_cost_all_VM=zeros(1,length(nVM));
+% channel_cost_all_VM=zeros(1,length(nVM));
+% tot_cost_all_VM=zeros(1,length(nVM));
+% 
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Presimulation-for
+% for j=1:N                   % workload
+%     speed_cost_all_WL(j)=mean(speed_cost_all(:,j));
+%     switch_cost_all_WL(j)=mean(switch_cost_all(:,j));
+%     channel_cost_all_WL(j)=mean(channel_cost_all(:,j));
+%     tot_cost_all_WL(j)=mean(tot_cost_all(:,j));
+% end
+% 
+% for j=1:length(nVM)             % VMs 
+%     speed_cost_all_VM(j)=mean(speed_cost_all(j,:));
+%     switch_cost_all_VM(j)=mean(switch_cost_all(j,:));
+%     channel_cost_all_VM(j)=mean(channel_cost_all(j,:));
+%     tot_cost_all_VM(j)=mean(tot_cost_all(j,:));
+% end
+% 
+% 
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 
+% % figure(100)                     % non staisfaction numbers
+% % plot(,rule1_counter,'--+');
+% % xlabel('Workload');
+% % ylabel('$\overline{\mathcal{E}}_{CPU}$');
+% % grid on
+% 
+% 
+% 
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% figure(100)                     % speed
+% plot(1:1:N,speed_cost_all_WL(:));
+% xlabel('Workload');
+% ylabel('$\overline{\mathcal{E}}_{CPU}$');
+% grid on
+% 
+% figure(101)                     % switch
+% plot(1:1:N,switch_cost_all_WL(:));
+% xlabel('Workload');
+% ylabel('$\overline{\mathcal{E}}_{switch}$');
+% grid on
+% 
+% figure(102)                     % channel
+% plot(1:1:N,channel_cost_all_WL(:));
+% xlabel('Workload');
+% ylabel('$\overline{\mathcal{E}}^{net}$');
+% grid on
+% 
+% figure(103)                     % total
+% plot(1:1:N,tot_cost_all_WL(:));
+% xlabel('Workload');
+% ylabel('$\overline{\mathcal{E}}^{tot}$');
+% grid on
+% 
+% figure(104)                     % speed
+% plot(1:1:VMNo,speed_cost_all_VM(:));
+% xlabel('VM');
+% ylabel('$\overline{\mathcal{E}}_{CPU}$');
+% grid on
+% 
+% figure(105)                     % switch
+% plot(1:1:VMNo,switch_cost_all_VM(:));
+% xlabel('VM');
+% ylabel('$\overline{\mathcal{E}}_{switch}$');
+% grid on
+% 
+% figure(106)                     % channel
+% plot(1:1:VMNo,channel_cost_all_VM(:));
+% xlabel('VM');
+% ylabel('$\overline{\mathcal{E}}^{net}$');
+% grid on
+% 
+% figure(107)                     % total
+% plot(1:1:VMNo,tot_cost_all_VM(:));
+% xlabel('VM');
+% ylabel('$\overline{\mathcal{E}}^{tot}$');
+% grid on
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% mu_last=zeros (1,N);
+% ni_last=zeros (1,N);
+% alpha_last=zeros (1,N);
+% pippo_last=zeros (1,N);
+% 
+% for i=1:N
+% mu_last(i)=mu_mat(i,iter_mat(i));
+% ni_last(i)=ni_mat(i,iter_mat(i));
+% alpha_last(i)=alpha_mat(i,iter_mat(i));
+% pippo_last(i)=pippo_mat(i,iter_mat(i));
+% end
+% 
+% figure(1000)
+% plot(1:1:N,mu_last(:),'r');
+% title('mu');
+% xlabel('WL');
+% ylabel('$\mu$');
+% grid on
+% 
+% figure(1001)
+% plot(1:1:N,ni_last(:),'r');
+% title('ni');
+% xlabel('WL');
+% ylabel('$\ni$');
+% grid on
+% 
+% figure(1022)
+% plot(1:1:iter_mat1(50),mu_mat1(50,1:iter_mat1(50)),'r',1:1:iter_mat1(1000),mu_mat1(1000,1:iter_mat1(1000)),'b',1:1:iter_mat(50),mu_mat(50,1:iter_mat(50)),'r',1:1:iter_mat(1000),mu_mat(1000,1:iter_mat(1000)),'b');
+% title('$\mu$ in $\Delta=0.1$ (s), $\gamma=0.5$, $T_t=5$ (s), $\beta=0.15$');
+% legend('M=2, $\delta=0.1$, N=50','M=2, $\delta=0.1$, N=1000', 'M=100, $\delta=0.1$, N=50','M=100, $\delta=0.1$, N=1000')
+% xlabel('iterations');
+% ylabel('$\mu$');
+% grid on
+% 
+% figure(1023)
+% plot(1:1:iter_mat1(50),ni_mat1(50,1:iter_mat1(50)),'r',1:1:iter_mat1(1000),ni_mat1(1000,1:iter_mat1(1000)),'b',1:1:iter_mat(50),ni_mat(50,1:iter_mat(50)),'r',1:1:iter_mat(1000),ni_mat(1000,1:iter_mat(1000)),'b');
+% title('$\ni$ in $\Delta=0.1$ (s), $\gamma=0.5$, $T_t=5$ (s), $\beta=0.15$');
+% legend('M=2, N=50','M=2, N=1000', 'M=100, N=50','M=100, N=1000')
+% xlabel('iterations');
+% ylabel('$\ni$');
+% grid on
+% 
+% figure(1024)
+% plot(1:1:iter_mat1(50),f_opt_mat1(50,1:iter_mat1(50)),'r',1:1:iter_mat1(1000),f_opt_mat1(1000,1:iter_mat1(1000)),'b',1:1:iter_mat(50),f_opt_mat(50,1:iter_mat(50)),'r',1:1:iter_mat(1000),f_opt_mat(1000,1:iter_mat(1000)),'b');
+% title('$f_{opt}$ in $\Delta=0.1$ (s), $k_e=0.005$, $f_i^{max}=105$, $\gamma=0.5$, $T_t=5$ (s), $\beta=0.15$, $\overline{\mathcal{E}}_i^{max}=60$ $(J)$');
+% legend('M=2, N=50','M=2, N=1000', 'M=100, N=50','M=100, N=1000')
+% xlabel('iterations');
+% ylabel('$f_{opt}$');
+% grid on
+% 
+% figure(1025)
+% plot(1:1:iter_mat1(50),L_mat1(50,1:iter_mat1(50)),'r',1:1:iter_mat1(1000),L_mat1(1000,1:iter_mat1(1000)),'b',1:1:iter_mat(50),L_mat(50,1:iter_mat(50)),'r',1:1:iter_mat(1000),L_mat(1000,1:iter_mat(1000)),'b');
+% title('$L_{opt}$ in $\Delta=0.1$ (s), $k_e=0.005$, $f_i^{max}=105$, $\gamma=0.5$, $T_t=5$ (s), $\beta=0.15$, $\overline{\mathcal{E}}_i^{max}=60$ $(J)$');
+% legend('M=2, N=50','M=2, N=1000', 'M=100, N=50','M=100, N=1000')
+% xlabel('iterations');
+% ylabel('$L_{opt}$');
+% grid on
+
+% figure(1002)
+% plot(1:1:N,alpha_last(:),'r');
+% title('\alpha');
+% xlabel('WL');
+% ylabel('$\alpha$');
+% grid on
+% 
+% figure(1003)
+% plot(1:1:N,pippo_last(:),'r');
+% title('\alpha_{NEW}');
+% xlabel('WL');
+% ylabel('$\alpha_{NEW}$');
+% grid on
+% 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% figure()
+% plot(mu_mat(NNN,2:iter_mat(NNN)),'r');
+% title('mu');
+% 
+% figure()
+% plot(ni_mat(NNN,2:iter_mat(NNN)),'r');
+% title('ni');
+
+% figure()
+% plot(L_mat(NNN,2:iter_mat(NNN)),'r');
+% title('L');
+% 
+% figure()
+% plot(f_opt_mat(NNN,2:iter_mat(NNN)),'r');
+% title('f ottimo');
+
+% figure()
+% plot(alpha_mat(NNN,2:iter_mat(NNN)),'r');
+% title('alpha');
+% 
+% figure()
+% plot(pippo_mat(NNN,2:iter_mat(NNN)),'r');
+% title('pippo');
+
+% figure()
+% bar(MatrixRis(1:M,NNN));
+% title('allocazione carico (L) per il wl 1');
+% 
+% figure()
+% bar(MatrixRis(1+M:M+M,NNN));
+% title('allocazione frequenze (f_opt) per il wl 1');
+
+
diff --git a/ICC2015_Sourcecode/DVFS_type2_ICC.m b/ICC2015_Sourcecode/DVFS_type2_ICC.m
new file mode 100644
index 0000000..eed6066
--- /dev/null
+++ b/ICC2015_Sourcecode/DVFS_type2_ICC.m
@@ -0,0 +1,312 @@
+clc
+clear all
+close all
+
+VM=[1:1:100];%numero Macchine Virtuali
+NumSimulazioni=length(VM);
+
+%IDEAL
+costo_speed_VM=zeros(1,NumSimulazioni);
+costo_switch_VM=zeros(1,NumSimulazioni);
+costo_channel_VM=zeros(1,NumSimulazioni);
+costo_tot_VM=zeros(1,NumSimulazioni);
+%NICOLA (COMNET)
+speed_cost_all_VM=zeros(1,NumSimulazioni);
+switch_cost_all_VM=zeros(1,NumSimulazioni);
+channel_cost_all_VM=zeros(1,NumSimulazioni);
+tot_cost_all_VM=zeros(1,NumSimulazioni);
+
+
+f_VM_ultima=zeros(1,NumSimulazioni);
+
+
+%inizio le simulazioni
+P_net_completo=[1:0.25:10000];
+%P_net_completo=zeros(1,100);
+
+
+%Jobs=6 + (10-6).*rand(1,1000); %carico uniformemente distribuito
+%Jobs=10.*ones(1,10);  %carico deterministico
+%Jobs=ciel(abs(10.*Nrand(0,1)));
+%Jobs=random('Poisson',1:NumSimulazioni,1,NumSimulazioni);
+%Jobs=ceil(abs(random('Normal',0,4,1,10)));
+Jobs=load('workloads8PMR125No2000.mat','L_tot_vect');
+Jobs=Jobs.L_tot_vect;
+for k=1:NumSimulazioni
+    tic
+    k
+    M=VM(k);
+    costo_speed=0;
+    costo_switch=0;
+    costo_channel=0;
+    costo_tot=0;
+    
+    costo_speed_Nicola=0;
+    costo_switch_Nicola=0;
+    costo_channel_Nicola=0;
+    costo_tot_Nicola=0;
+    rate_ultima_macchina=0;
+    
+    
+    k_e=0.005;
+    C_max=15; %(Mb/s)
+    T_tot=5; %(s)
+    
+    W = ones(1,M);                  %band of each channel (MHz)
+    Zeta = 0.5 * ones(1,M);         %channel parameters (mW)
+    
+    
+    f_max=105.*ones(1,M);  %(Mb/s)
+    f_zero=zeros(1,M);  % (Mb/s)
+    %f_zero=0.2.*f_max;
+    %f_zero=f_max;
+    P_net=P_net_completo(1:M); %(mW)
+    %P_net=1.*ones(1,M);   %NB.! ORDINARE LE MACCHINE VIRTUALI IN MODO DA AVERE LE POTENZE IN ORDINE CRESCENTE
+    %(unicamente perchč semplifica la scritura del
+    %software - controindicazione: il codicie funziona bene indipendentemente)
+    Th=2.*P_net./C_max;   %Soglia di ibernazione macchina; (tutte le VM per cui mu_opt<=Th vengono ibernate con coefficiente di
+    % ibernazione alpha_zero)
+    
+    E_max=60.*ones(1,M);  % (mJ)
+    omega=1.*ones(1,M);
+    Delta=0.1.*ones(1,M); % (s)
+    Delta_max=max(Delta);
+    L_b=zeros(1,M);  % NB. il codice funziona bene per L_b=0, altrimenti aggiungere modifica su f_opt.
+    
+    temp=2.*k_e+(2.*E_max.*omega./(f_max.^2));
+    alpha_zero=2.*k_e./temp;
+    alpha_mu=Delta./temp;
+    
+speed_cost_all_WL=zeros(1,length(Jobs));
+switch_cost_all_WL=zeros(1,length(Jobs));
+channel_cost_all_WL=zeros(1,length(Jobs));
+tot_cost_all_WL=zeros(1,length(Jobs));
+
+    
+    
+    for num_job=1:length(Jobs)
+        L_tot=Jobs(num_job);
+        
+        
+        
+        
+        %CHECK FEASIBILITY - controllare funzionamento operatori %%%%%%%%%%%%%%%%%%
+        
+        condizione_feas_carico=(sum(f_max.*Delta-L_b)>=L_tot);
+        condizione_feas_tempo=(L_tot<=C_max.*(T_tot-Delta_max)./2);
+        condizione_feas_back=min(Delta.*f_max>=L_b);
+        
+        
+        feasibility=condizione_feas_carico && condizione_feas_tempo && condizione_feas_back;
+        
+        if ~feasibility
+            'VM='
+            M
+            error('Problem unfeasible')
+        else
+            %'Problem Feasibile!'
+        end
+        
+        
+        
+        
+        
+        %SOLUZIONE EQUAZIONE:   sum(L_opt)=L_tot;
+        
+        %NB. IL PUNTO DI ATTRAVERSAMENTO DELLO ZERO POTREBBE NON ESISTERE. IN QUEL
+        %CASO mu_opt E' IL PUNTO DI GRADINO FRA LA ZONA POSITIVA E QUELLA NEGATIVA
+        %E delta_mu (CHE E' IL VALORE DELL'EQUAZIONE IN mu) E' DIVERSO DA ZERO.
+        
+        [mu,delta_mu]= Mu_opt_bisezione(alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+        tol_mu=10^(-2);%tolleranza per decisione macchine in stato limite
+        tol_carico_allocato=10^(-2);
+        if ((abs(delta_mu)./L_tot)<tol_carico_allocato)%tutto il carico č allocato con un errore relativo inferiore a tol_allocazione
+            caso_limite=0;
+            %'Caso standard: nessuna VM in stato limite'
+        else
+            caso_limite=1;
+            %'Una o piů VM č in stato limite'
+            VM_limite=find(abs(Th-mu)<tol_mu);
+            if length(VM_limite)==0
+                'VM='
+                M
+                error('nessuna VM in stato limite e carico complessivo L_tot non allocato correttamente')
+            end
+            
+        end
+        
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        %%%%%%%%%%%%%%%%%%%%%%%%%   scheduler ottimo  %%%%%%%%%%%%%%%%%
+        
+        
+        
+        
+        f_mu=max(mu-2.*P_net./C_max,0);
+        f_star=alpha_zero.*f_zero+alpha_mu.*f_mu;
+        f_opt=max(0,min(f_star,f_max)); %N.B. --> NEL CASO GENERALE DI L_b>0 IL MAX VA FATTO RISPETTO A L_b/Delta, NON RISPETTO A 0.
+        
+        rate_ultima_macchina=rate_ultima_macchina+f_opt(M);
+        
+        
+        
+        canali_attivi=f_mu>0;
+        L_opt=canali_attivi.*(f_opt.*Delta-L_b);
+        
+        %riallocazione delle eventuali VM sulla soglia (stato limite)
+        
+        if caso_limite
+            L_opt(VM_limite)=0;
+            L_allocato=sum(L_opt);
+            L_residuo=L_tot-L_allocato;
+            for k2=1:length(VM_limite);
+                L_opt(VM_limite(k2))=min(L_residuo,f_opt(VM_limite(k2)).*Delta(VM_limite(k2))-L_b(VM_limite(k2)));
+                L_residuo=L_residuo-L_opt(VM_limite(k2));
+            end
+            canali_attivi=(L_opt>0);
+        end
+        
+        
+        
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        %%%%%%%%%%  costo  %%%%%%%%%%%%%%%%%%
+        
+        Delta_carico=sum(L_opt)-L_tot;
+        if ((abs(Delta_carico)./L_tot)>=tol_carico_allocato)
+            'Errore: Carico non correttamente allocato'
+        end
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%descrete
+        f_precedente=zeros(1,M);
+        f_successiva=zeros(1,M);
+        x1=zeros(1,M);
+        
+        Q=6; %numero frequenze discrete;
+        f_discrete=zeros(M,Q);
+        for conta=1:M
+            %f_discrete(conta,:)=[0:f_max(conta)./(Q-1):f_max(conta)];
+            f_discrete(conta,:)=[0, 5,50,70,90,105]; % Mhz or Mb/s
+        end
+        
+        f_opt_new=f_opt;
+        
+        for conta=1:M
+            
+            delta_f_discrete=f_discrete(conta,:)-f_opt_new(conta);
+            [ff,ind_ff]=min(abs(delta_f_discrete));
+            if ff==0
+                f_precedente(conta)=f_discrete(conta,ind_ff);
+                f_successiva(conta)=f_discrete(conta,ind_ff);
+                x1(conta)=1; %qualsiasi valore č indifferente
+            elseif ind_ff==1
+                f_precedente(conta)=f_discrete(conta,1);
+                f_successiva(conta)=f_discrete(conta,2);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            elseif ind_ff==Q
+                f_precedente(conta)=f_discrete(conta,Q-1);
+                f_successiva(conta)=f_discrete(conta,Q);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            elseif delta_f_discrete(ind_ff)>0
+                f_precedente(conta)=f_discrete(conta,ind_ff-1);
+                f_successiva(conta)=f_discrete(conta,ind_ff);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            else
+                f_precedente(conta)=f_discrete(conta,ind_ff);
+                f_successiva(conta)=f_discrete(conta,ind_ff+1);
+                x1(conta)=abs(f_opt_new(conta)-f_precedente(conta))./(f_successiva(conta)-f_precedente(conta));
+            end
+            
+        end
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        
+        %IDEAL
+        costo_speed=costo_speed+sum(((f_opt./f_max).^2).*omega.*E_max);
+        costo_switch=costo_switch+sum(k_e.*(f_opt-f_zero).^2);
+        costo_channel=costo_channel+sum(2.*P_net.*L_opt./C_max);
+        
+        %NICOLA
+        
+        costo_speed_Nicola=costo_speed_Nicola+sum(((((f_precedente/f_max).^2)).*omega.*E_max).*(1-x1)+((((f_successiva/f_max).^2)).*omega.*E_max).*x1);
+        costo_switch_Nicola=costo_switch_Nicola+sum((k_e.*(f_precedente-f_zero).^2).*(1-x1)+(k_e.*(f_successiva-f_zero).^2).*x1);
+        costo_channel_Nicola=costo_channel_Nicola+((T_tot-Delta(1)).*sum(Zeta .* (2.^(2*L_opt./((T_tot-Delta).*W))-1)));
+        %costo_channel_Nicola=costo_channel_Nicola+sum(2.*P_net.*L_opt./C_max);
+        
+        speed_cost_all_WL(num_job)=sum(((((f_precedente/f_max).^2)).*omega.*E_max).*(1-x1)+((((f_successiva/f_max).^2)).*omega.*E_max).*x1);
+        switch_cost_all_WL(num_job)=sum((k_e.*(f_precedente-f_zero).^2).*(1-x1)+(k_e.*(f_successiva-f_zero).^2).*x1);
+        channel_cost_all_WL(num_job)=((T_tot-Delta(1)).*sum(Zeta .* (2.^(2*L_opt./((T_tot-Delta).*W))-1)));
+        tot_cost_all_WL(num_job)=speed_cost_all_WL(num_job)+switch_cost_all_WL(num_job)+channel_cost_all_WL(num_job);
+
+        
+        
+        f_zero=f_opt;
+        
+    end
+    
+    
+    % risultati e deallocazione
+    
+    
+    k
+    %IDEAL
+    costo_speed_VM(k)=costo_speed./length(Jobs);
+    costo_switch_VM(k)=costo_switch./length(Jobs);
+    costo_channel_VM(k)=costo_channel./length(Jobs);
+    costo_tot_VM(k)=costo_speed_VM(k)+costo_switch_VM(k)+costo_channel_VM(k);
+    %NICOLA (COMNET)
+    speed_cost_all_VM(k)=costo_speed_Nicola./length(Jobs);
+    switch_cost_all_VM(k)=costo_switch_Nicola./length(Jobs);
+    channel_cost_all_VM(k)=costo_channel_Nicola./length(Jobs);
+    tot_cost_all_VM(k)=speed_cost_all_VM(k)+switch_cost_all_VM(k)+channel_cost_all_VM(k);
+    f_VM_ultima(k)=rate_ultima_macchina./length(Jobs);
+    
+    
+    clear f_max f_zero P_net Th  E_max omega Delta L_b temp alpha_zero alpha_mu
+    
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%%%%%%%%   istogrammi  %%%%%%%%%%%%%%%%%%%%%%%%%
+    
+    %  figure(k);
+    %  bar(f_opt),xlabel('VM');
+    %  ylabel('Speed f');
+    %  grid on;
+    
+    toc
+end
+
+
+figure(1)
+plot(VM,costo_speed_VM,'--o',VM,speed_cost_all_VM,'--*'),xlabel('VM'),ylabel('Speed Cost');
+legend('IDEAL(no DVFS)_type2', 'DVFS_type2');
+figure(2)
+plot(VM,costo_switch_VM,'--o',VM,switch_cost_all_VM,'--*'),xlabel('VM'),ylabel('Switch Cost');
+legend('IDEAL(no DVFS)_type2', 'DVFS_type2');
+figure(3)
+plot(VM,costo_channel_VM,'--o',VM,channel_cost_all_VM,'--*'),xlabel('VM'),ylabel('Net Cost');
+legend('IDEAL(no DVFS)_type2', 'DVFS_type2');
+figure(4)
+plot(VM,costo_tot_VM,'--o',VM,costo_tot_VM,'--*'),xlabel('VM'),ylabel('Overall Cost');
+legend('IDEAL(no DVFS)_type2', 'DVFS_type2');
+
+
+figure(5)
+plot(1:1:length(Jobs),speed_cost_all_WL,'--o'),xlabel('#WL'),ylabel('Speed Cost');
+legend('DVFS_type2');
+figure(6)
+plot(1:1:length(Jobs),switch_cost_all_WL,'--*'),xlabel('#WL'),ylabel('Switch Cost');
+legend('DVFS_type2');
+figure(7)
+plot(1:1:length(Jobs),channel_cost_all_WL,'--*'),xlabel('#WL'),ylabel('Net Cost');
+legend('DVFS_type2');
+figure(8)
+plot(1:1:length(Jobs),tot_cost_all_WL,'--*'),xlabel('#WL'),ylabel('Overall Cost');
+legend('DVFS_type2');
+
+
+
+figure(9)
+plot(VM,f_VM_ultima,'--o'),xlabel('VM'),ylabel('rate last VM');
+
+
+
diff --git a/ICC2015_Sourcecode/Lyapunov5_Dynamic_V_Fixed_Switch.m b/ICC2015_Sourcecode/Lyapunov5_Dynamic_V_Fixed_Switch.m
new file mode 100644
index 0000000..2880a16
--- /dev/null
+++ b/ICC2015_Sourcecode/Lyapunov5_Dynamic_V_Fixed_Switch.m
@@ -0,0 +1,507 @@
+%variables inizialization utilizzo flessibile delle code , non ha vincoli
+%di tempo di servizio.% CHE THROUPUT GARANTISCONO? E COSTO AL VARIARE v
+clc
+clear all
+close all
+cc=0;
+N = 1;                                                                    %applications pag 479
+M = 100;                                                                   %Servers pag 479
+                                                                  
+TT = 2000;
+T=2000;
+k_e=0.005; %(J/(MHz)^2)
+%Lamda = 2000.*ones(N,TT);                                                  %Number of slot
+%A = 2.*Lamda.*rand(N,TT);                                                  %Arrival job uniformed distribuited pag 481
+%A=4000.*rand(N,TT);                                                        %PMR = 1
+%A = 3000 +(4000-2000).*rand(N,TT);                                         %PMR = 1.25
+%A = 2000 +(6000-2000).*rand(N,TT) ;                                        %PMR = 1.5
+% A = 1000 +(7000-1000).*rand(N,TT);                                        %PMR = 1.75
+%A = 8000.*rand(N,TT);                                                        %PMR = 2
+%save('Avalue4000FIXPMR2.mat','A');
+
+
+%L_tot_vect = 6+ round((10-6) * rand(N,TT));                         % PMR=1.25, L_tot=8+-2
+%save('workloads8PMR125No2000.mat', 'L_tot_vect');                  %loading 100 fixed random workloads
+A=load('workloads8PMR125No2000.mat','L_tot_vect');
+A=A.L_tot_vect;
+
+
+F = [5,50,70,90,105];                                         %( Gbyte/s)frequecny range for every VM allocated onto the j-server
+I = ones(M,TT);                                                            %resource decision allocation
+P_cpu1 = zeros(N,M,length(F));                                              %power consuption for each VM onto each j server
+P_min = 10.*ones(N,M,length(F));                                          %minimum power for the considered VM allocated onto the j-server
+P_max = 60.*ones(N,M,length(F));                                          %maximum power for the considered VM allocated onto the j-server
+mu1=zeros(N,M,length(F)) ;
+MU=zeros(N,M,TT);                                                          %service rate (request/slots)
+ww = zeros(1,N);
+AU = zeros(N,M);
+AAU = zeros(1,N);
+SAU = zeros(1,M);
+AAS = zeros(1,N);
+Avg_ADELAY = zeros(1,N);
+avg_MU = zeros(N,M);
+avg_AMU = zeros(1,N);
+avg_SMU = zeros(1,M);
+Avg_SDELAY = zeros(1,M);
+Avg_SDelay=zeros(1,M);
+
+KU=  zeros(N,M);
+Delay=zeros(1,N);
+Delay2=zeros(N,M);
+
+
+alpha = ones(1,N);                                                         %throughput utility weights
+%V1 = [1:100:1000];                                                         %control parameter for DCA
+V = 100;
+%V=length(V1)
+beta = 1;                                                                  % non-negative normalizing weight
+W = zeros(N,TT);                                                           %Buffer Dimension
+K = zeros(N,M,TT);                                                         % ==R(i,j) number of requests for application i that are routed from the R(i) router Buffer to the j-server in slot t.
+U = zeros(N,M,TT);                                                          %queing dynamics for the request of application i at server j
+P = zeros(M,TT);                                                           % power consumed by each server in each time slot for s
+Switch=zeros(M,TT);                                                            % power consumed by each server in each time slot for s
+SW= zeros(1,M);                                                            %the time average expected power consuption of server j
+r = zeros(1,N);                                                            %average expected rate of admitted request for apllication i
+e = zeros(1,M);                                                            %the time average expected power consuption of server j
+R = zeros(N,TT);
+Freq = zeros(N,M,length(F));
+Freqtemp = zeros(M,TT);
+temp = zeros(N,M,length(F));
+active_servers = zeros(N+1,M,T);
+M1=0;
+M2=0;
+M3=0;
+l=0;
+on_servers_list=zeros(1,M);
+on_servers = zeros(N+1,M);                                                 % on-server in each different frame T
+off_servers = zeros(N+1,M);                                                % off-server in each different frame T
+sleeping_servers= zeros(N+1,M);                                            % Hybernated-server in each different frame T
+% a = rand(1,M);                                                             % applications variable indicator
+% save('avalue.mat','a');
+a=load('avalue.mat','a');
+a=a.a;
+a(:)=(a(:) >= 0.4);
+for j=1:M
+    if (a(j)==1)
+        on_servers(1,j)=j;
+        l=l+1;
+        on_servers_list(j)=j;
+    end
+end
+
+a_temp = zeros(1,M);                                                        %  temp applications variable indicator
+%a_temp(:)=(a_temp(:) >= 0.6);
+
+for i = 1:N
+    for j = 1:M
+        Freq(i,j,:)= F(:);
+    end
+end
+
+for i=1:N
+    for j=1:M
+        mu1(i,j,:) = (8*10^(-3).*F(:)) +0.76;                  % servers queue for each application service rate (5,0.8)-----(105,1.6)
+        P_cpu1(i,j,:)=P_min(i,j,:) + (50*10^(-4)).*((Freq(i,j,:)-5).^2);     % CPU power of each virtual machine among each j-server pag 480
+    end
+end
+
+F1= [0, 5,50,70,90,105];                                             % (Gbit/s)frequecny range for every VM allocated onto the j-server
+P_cpu2 = zeros(N,M,length(F1));                                            % power consuption for each VM onto each j server
+P_min = 10.*ones(N,M,length(F1));                                          %minimum power for the considered VM allocated onto the j-server
+P_max = 60.*ones(N,M,length(F1));                                          %maximum power for the considered VM allocated onto the j-server
+mu2 = zeros(N,M,length(F1))  ;
+Freq1 = zeros(N,M,length(F1));
+temp1 = zeros(N,M,length(F1));
+for i = 1:N
+    for j = 1:M
+        Freq1(i,j,:)= F1(:);
+    end
+end
+
+for i=1:N
+    for j=1:M
+        mu2(i,j,2:1:length(F1)) = (8*10^(-3).*F1(2:1:length(F1)))+0.76; % servers queue for each application service rate (5,0.8)-----(105,1.6)
+        mu2(i,j,1) = 0;
+        P_cpu2(i,j,2:1:length(F1))=P_min(i,j,2:1:length(F1)) + (50*10^(-4)).*((Freq1(i,j,2:1:length(F1))-5).^2);  % CPU power of each virtual machine among each j-server pag 480
+        P_cpu2(i,j,1)=0;
+        
+    end
+end
+i=0;
+j=0;
+UU=zeros(N,M,TT);
+UU1=zeros(N,M,TT);
+B = [1:1:TT/T];
+L_off=zeros(1,length(B));
+MM1=zeros(1,length(B));
+MM2=zeros(1,length(B));
+MM3=zeros(1,length(B));
+bb=0;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%main body code
+for t = 1 : TT
+    if (mod(t,T)~= 0)
+        UU=zeros(N,M,TT);
+        for jtest=1:M
+            if (a(jtest)==1)
+                UU(:,jtest,t)=U(:,jtest,t);
+            else
+                UU(:,jtest,t)=nan;
+            end
+        end
+        %if (t>1)
+        %UU(~UU)=nan;
+        %end
+        for i= 1 : N
+            
+            %
+            %j
+            t
+            if(W(i,t) > V.*alpha(i))
+                R(i,t) = 0;
+                
+            else
+                R(i,t) = A(i,t);
+            end
+            
+            %list U of active (ON) servers.
+            
+            
+            [U1, indexu1]=min(UU(i,:,t));% page 483 routing
+            if (W(i,t) > U1) || (isnan(U1))
+                K(i,indexu1,t) = W(i,t);
+            else
+                K(i,:,t)=0;
+            end
+            
+            UU(:,indexu1,t)=nan;
+            
+            %                 [U1, ind]=min(U(i,:,t));% page 483 routing
+            %                 if (W(i,t) > U1)
+            %                     for ikl=1:M
+            %                         for mmmm=1:N
+            %                             K(mmmm,ikl,t)=K(mmmm,ikl,t-1);
+            %                         end
+            %                     end
+            %                     K(i,ind,t) = W(i,t);
+            %
+            %                 else
+            %                     K(i,:,t)=0;
+            %                 end
+            
+            
+            %a(i,j) = (a(i,j) > 0.5); % garantee to set more than half to be -on
+            % fix number of active server, they are not M , they are
+            % obviously less
+            
+            %if sum(a(i,j)*K(i,j,t)<=W(i,t))
+            %if ((W(i,t)-sum(K(i,:,t)))>=0)
+            
+            % W(i,t+1) = W(i,t) - sum(a(i,j).*K(i,:,t)) + R(i,t);
+            W(i,t+1) = W(i,t) - (a*K(i,:,t)') + R(i,t);                %% Backlog Queue 1    (2) pag 481 consider only active server
+            % else
+            %    W(i,t+1)=R(i,t);
+            % end
+            
+        end % for N-application
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% after routing inside each server
+        for j= 1 : M
+            if (a(j)==1)
+                [U_max , index_U_max]=max(U(:,j,t));                   % 0=<index_U_max<=N
+                
+                for zzz=1:length(F)
+                    temp(index_U_max,j,zzz) = U_max.*(min(mu1(index_U_max,j,zzz),U_max)) - V.*beta.*(P_cpu1(index_U_max,j,zzz));                  % Resource allocation pag 483
+                    
+                end
+                [value , index]=max(temp(index_U_max,j,:));            % 1=<index<=length(F)
+                
+                MU(index_U_max,j,t) = min(mu1(index_U_max,j,index),U_max);
+                P(j,t)= P_cpu1(index_U_max,j,index);
+                if (t==1)
+                    Switch(j,t)=k_e*(F(index))^2;
+                    Freqtemp(j,2)=F(index);
+                else
+                    Switch(j,t)=k_e*((F(index)-Freqtemp(j,t-1)))^2;
+                    Freqtemp(j,t)=F(index);
+                end
+                for i= 1 : N
+                    if (i==index_U_max)
+                        U(index_U_max,j,t+1) = max((U(index_U_max,j,t) - MU(index_U_max,j,t)),0) + K(index_U_max,j,t);      %% Backlog Queue 2    (5) pag 481
+                    else
+                        U(i,j,t+1) = max(U(i,j,t),0) + K(i,j,t);           % Backlog Queue 2    (5) pag 481
+                    end
+                end
+                % U(index_U_max,j,t+1) = max(U(index_U_max,j,t) - MU(index_U_max,j,t),0) + a(i,j).*K(index_U_max,j,t);      %% Backlog Queue 2    (5) pag 481
+            end
+        end                                                                % for each M-server
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%check points
+    else
+        bb=bb+1;
+        UU1=zeros(N,M,TT);
+        for jtest1=1:M
+            if (a(jtest1)==1)
+                UU1(:,jtest1,t)=U(:,jtest1,t);
+            else
+                UU1(:,jtest1,t)=nan;
+            end
+        end
+        %if (t>1)
+        %UU(~UU)=nan;
+        %end
+        for i= 1 : N
+            
+            if(W(i,t) > V.*alpha(i)) 
+                R(i,t) = 0;
+                
+            else
+                R(i,t) = A(i,t);
+            end
+            
+            %list U of active (ON) servers.
+            
+            [U2, indexu2]=min(UU1(i,:,t));% page 483 routing
+            
+            %[U2, indexu2]=min(U(i,:,t));                                   % page 483 routing
+            if (W(i,t) > U2)
+                K(i,indexu2,t) = a(indexu2)*W(i,t);
+            else
+                K(i,:,t)=0;
+            end
+            UU1(:,indexu2,t)=nan;
+            %a(i,j) = (a(i,j) > 0.5);                                      % garantee to set more than half to be -on
+            % fix number of active server, they are not M , they are
+            % obviously less
+            % if ((W(i,t)-sum(K(i,:,t)))>=0)
+            
+            % W(i,t+1) = W(i,t) - sum(a(i,j).*K(i,:,t)) + R(i,t);
+            W(i,t+1) = W(i,t) - (a*K(i,:,t)') + R(i,t);                %% Backlog Queue 1    (2) pag 481 consider only active server
+            % else
+            %W(i,t+1)=R(i,t);
+        end
+        
+        
+        for j= 1 : M
+            a_temp(j)=a(j);
+            [U_max1, index_U_max1]=max(U(:,j,t));                           % 0=<index_U_max<=N
+            
+            for zzz=1:length(F1)
+                temp1(index_U_max1,j,zzz) = U_max1.*(min(mu2(index_U_max1,j,zzz),U_max1)) - V.*beta.*(P_cpu2(index_U_max1,j,zzz));                  % Resource allocation pag 483
+                
+            end
+            [value2, index2]=max(temp1(index_U_max1,j,:));                % 1=<index<=length(F)
+            %%%%%%%%%%%%%%%checking
+            if (((min(mu2(index_U_max1,j,index2),U_max1))==0) && (P_cpu2(index_U_max1,j,index2))==0)
+                cc=cc+1;
+                a(j)=0;
+                if (t==1)
+                    Switch(j,t)=k_e*(F1(index2))^2;
+                    Freqtemp(j,2)=F1(index2);
+                else
+                    Switch(j,t)=k_e*(F1(index2)-Freqtemp(j,t-1))^2;
+                    Freqtemp(j,t)=F1(index2);
+                end
+                MU(index_U_max1,j,t)=0;
+                P(j,t)=0;
+            else
+                a(j)=1;
+                MU(index_U_max1,j,t) = min(mu2(index_U_max1,j,index2),U_max1);
+                P(j,t)= P_cpu2(index_U_max1,j,index2);
+                if (t==1)
+                    Switch(j,t)=k_e*(F1(index2))^2;
+                    Freqtemp(j,2)=F1(index2);
+                else
+                    Switch(j,t)=k_e*(F1(index2)-Freqtemp(j,t-1))^2;
+                    Freqtemp(j,t)=F1(index2);
+                end
+            end
+            %%%%%%%%%%%%
+            
+            
+            for i= 1 : N
+                if (i==index_U_max1)
+                    U(index_U_max1,j,t+1) = max(U(index_U_max1,j,t) - MU(index_U_max1,j,t),0) + K(index_U_max1,j,t);    % Backlog Queue 2    (5) pag 481
+                else
+                    U(i,j,t+1) = max(U(i,j,t),0) + K(i,j,t);           % Backlog Queue 2    (5) pag 481
+                end
+            end
+            % U(index_U_max,j,t+1) = max(U(index_U_max,j,t) - MU(index_U_max,j,t),0) + a(i,j).*K(index_U_max,j,t);      %% Backlog Queue 2    (5) pag 481
+            % if
+        end                                                                % for each M-server
+        
+        
+        %*************************VM_MIGRATION******************
+   on_servers = zeros(N+1,M);                                                 % on-server in each different frame T
+   off_servers = zeros(N+1,M);                                                % off-server in each different frame T
+   sleeping_servers= zeros(N+1,M);
+        
+   for jj = 1 : M
+       for ii = 1 : N
+           if ((a_temp(jj)==0) && (a(jj)==1)) || (((a_temp(jj)==1) && (a(jj)==1)))
+               on_servers(1,jj) = jj; %always ON servers + OFF--->> ON servers
+               on_servers(ii+1,jj) =  U(ii,jj,t);
+               %M1 = M1 + 1;
+           else if((a_temp(jj)==1) && (a(jj)==0))
+                   off_servers(1,jj) = jj;
+                   off_servers(ii+1,jj) = U(ii,jj,t);
+                   %M2 = M2 + 1;
+               
+           else 
+                   sleeping_servers(1,jj)=jj;  %the servers which are never ON, ALWAYS OFF
+                   sleeping_servers(ii+1,jj) =  U(ii,jj,t);
+                   %M3=M3+1;
+               end
+               
+           end
+           
+       end
+   end
+                
+         
+        
+        on_servers = deletezero(on_servers);
+        off_servers= deletezero(off_servers);
+        sleeping_servers=deletezero(sleeping_servers);
+        [x1, x2]=size(on_servers);
+        M1=x2;
+        [y1, y2]=size(off_servers);
+        M2=y2;
+        [z1, z2]=size(sleeping_servers);
+        M3=z2;
+        
+        L_off(bb)=sum(sum(off_servers(2:N+1,:))) ;                                  %  the total migrated backlogs of all aplication in bits from the off servers
+        for jk = 1 : M2
+            for iii = 1 : N
+                
+                
+                [a_tempON, indexON] = min(on_servers(iii+1,:));
+                tempOnserver=off_servers(iii+1,jk);
+                on_servers(iii+1,indexON) = on_servers(iii+1,indexON)+tempOnserver;
+                off_servers(iii+1,jk)=0;
+                
+                
+                
+            end
+        end
+        
+        
+        a=zeros(1,M);
+        for dom=1:M1
+            if (on_servers(1,dom)>=1)
+                a(on_servers(1,dom))=1;
+                for i= 1 : N
+                    U(i,on_servers(1,dom),t+1)=on_servers(i+1,dom);
+                end
+            end
+        end
+        for dom=1:M2
+            a(off_servers(1,dom))=0;
+            for i= 1 : N
+                U(i,off_servers(1,dom),t+1)=0;
+            end
+        end
+        %         for dom=1:M3
+        %             a(sleeping_servers(1,dom))=0;
+        %         end
+        
+        
+        MM1(bb)=M1;
+        MM2(bb)=M2;
+        MM3(bb)=M3;
+        M1=0;
+        M2=0;
+        M3=0;
+    end % t=nT
+    
+    
+end % biggggg for TT
+
+ for ii= 1:N
+     r(ii) = mean(R(ii,:));                                              % throughput 4 each ii
+     ww(ii) = mean(W(ii,:));                                           % average occupation for each applications before router
+     for jj = 1:M
+         e(jj) =   mean(P(jj,:));                                      %pag482 (7)
+         SW(jj)= mean (Switch(jj,:));
+         AU(ii,jj) = mean(U(ii,jj,:));                                     % average occupation of service rate for application i in sererver j in block 2
+         KU(ii,jj) = sum(K(ii,jj,:));                                     % average occupation of backlogs (in queue) of block 2 (queues in servers)
+         avg_MU(ii,jj)= mean(MU(ii,jj,:));
+     end
+     
+end
+
+KUU=0;
+
+    for i= 1:N
+        for j= 1:M
+            KUU=KU(i,j)+KUU;
+        end
+    end
+
+KUU=KUU/(M*N*TT);
+for i= 1:N
+Delay(i)=ww(i)/ r(i);  % delay takes for each application queue before routing
+
+end
+
+
+Avg_Delay1=mean(Delay(:)); % average delay of BLOCK 1 (before routing to the servers)
+
+
+
+for i= 1:N
+for j= 1:M
+%Delay2(i,j)=AU(i,j)./ KU(i,j);  % delay takes for application i in server j in block 2
+Delay2(i,j)=AU(i,j)./ KUU;  % delay takes for application i in server j in block 2
+end
+end
+
+
+
+for j= 1:M
+Avg_SDelay(j)=mean(Delay2(:,j)); % average delay takes for server j in block 2
+end
+
+
+Avg_Delay2=mean(Avg_SDelay(:));  % average dalay of BLOCK 2 (after routing to the servers and after servers )
+
+
+
+TOT_DELAY=Avg_Delay1+Avg_Delay2;  %average total delay of WHOLE SYSTEM
+UUTILITY = alpha(1).*sum(r(:)) - beta.*sum(e(:)); % UTILITY OF THE SYSTEM
+
+
+
+%AVG_UTILITY = mean(UUTILITY(:));   % total utility of the SYSTEM
+
+ 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
+    
+    
+%     
+%     
+%     www=mean(ww(:));                                                           % average occpuation of all applications
+% for i = 1 : N
+% AAU(i)=mean(AU(i,:));                                                       % average occupation of each backlogs application in the system
+% avg_AMU(i)=mean(avg_MU(i,:));    
+% end
+% 
+% for j = 1 : M
+% SAU(j)=mean(AU(:,j));                                                       % average occupation of total backlogs applications in each  server j  
+% avg_SMU(jj)=mean(avg_MU(:,j));  
+% end
+% 
+% TAU=mean(AAU(:));                                                          % average occupation for : server for : applications
+% Tavg_MU=mean(avg_AMU(:));
+% 
+%  
+% AS = www + TAU ;                                                           % total average occupations of the system
+% 
+% Avg_DELAY =  AS/mean(r(:));                                                % average delay of the system
+% 
+% AAS(:) = ww(:) + AAU(:) ;                                                  % total average occupations of the system for each application
+% 
+% Avg_ADELAY(:) = AAS(:)./r(:);                                              % average delay of the system for each application
+% 
+% Avg_SDELAY(:) = SAU(:)./avg_SMU(:);       
+% 
+% UTILITY = alpha(1)*sum(r(:)) - beta*sum(e(:));
diff --git a/ICC2015_Sourcecode/Lyapunov5_Static_V_Fixed_Switch.m b/ICC2015_Sourcecode/Lyapunov5_Static_V_Fixed_Switch.m
new file mode 100644
index 0000000..8d807cf
--- /dev/null
+++ b/ICC2015_Sourcecode/Lyapunov5_Static_V_Fixed_Switch.m
@@ -0,0 +1,681 @@
+%variables inizialization utilizzo flessibile delle code , non ha vincoli
+%di tempo di servizio.% CHE THROUPUT GARANTISCONO? E COSTO AL VARIARE v
+clc
+clear all
+close all
+cc=0;
+N = 1;                                                                    %applications pag 479
+M = 100;                                                                   %Servers pag 479
+Ts = 2;                                                                    %time slot (sec)
+TT = 2000;
+T=2000;
+k_e=0.005; %(milliJ/(MHz)^2)
+%Lamda = 2000.*ones(N,TT);                                                  %Number of slot
+%A = 2.*Lamda.*rand(N,TT);                                                  %Arrival job uniformed distribuited pag 481
+%A=4000.*rand(N,TT);                                                        %PMR = 1
+%A = 3000 +(4000-2000).*rand(N,TT);                                         %PMR = 1.25
+%A = 2000 +(6000-2000).*rand(N,TT) ;                                        %PMR = 1.5
+% A = 1000 +(7000-1000).*rand(N,TT);                                        %PMR = 1.75
+%A = 8000.*rand(N,TT);                                                        %PMR = 2
+%save('Avalue4000PMR2.mat','A');
+%A=load('Avalue4000PMR2.mat','A');
+
+%L_tot_vect = 6+ round((10-6) * rand(N,TT));                         % PMR=1.25, L_tot=8+-2
+%save('workloads8PMR125No2000.mat', 'L_tot_vect');                  %loading 100 fixed random workloads
+A=load('workloads8PMR125No2000.mat','L_tot_vect');
+A=A.L_tot_vect;
+
+
+%F1 = [1.6*10^9 :0.2*10^9:2.6*10^9];                                         %frequecny range for every VM allocated onto the j-server
+F1 = [5,50,70,90,105];                                         %( Gbyte/s)frequecny range for every VM allocated onto the j-server
+I = ones(M,TT);                                                            %resource decision allocation
+P_cpu1 = zeros(N,M,length(F1));
+mu1=zeros(N,M,length(F1)) ;                                                  %power consuption for each VM onto each j server
+P_min1 = 0.*ones(N,M,length(F1));                                          %minimum power for the considered VM allocated onto the j-server
+P_max1 = 60.*ones(N,M,length(F1));                                          %maximum power for the considered VM allocated onto the j-server
+
+MU=zeros(N,M,TT);                                                          %service rate (request/slots)
+ww = zeros(1,N);
+AU = zeros(N,M);
+AAU = zeros(1,N);
+SAU = zeros(1,M);
+AAS = zeros(1,N);
+Avg_ADELAY = zeros(1,N);
+avg_MU=zeros(N,M);
+avg_AMU=zeros(1,N);
+avg_SMU=zeros(1,M);
+Avg_SDELAY = zeros(1,M);
+Avg_SDelay=zeros(1,M);
+
+KU=  zeros(N,M);
+Delay=zeros(1,N);
+Delay2=zeros(N,M);
+%Avg_Delay1=0;
+%UUTILITY = 0;
+
+alpha = ones(1,N);                                                         %throughput utility weights
+%V1 = [1:100:1000];                                                         %control parameter for DCA
+V = 100;
+%V=length(V1)
+beta = 1;                                                                  % non-negative normalizing weight
+W = zeros(N,TT);                                                           %Buffer Dimension
+K = zeros(N,M,TT);                                                         % ==R(i,j) number of requests for application i that are routed from the R(i) router Buffer to the j-server in slot t.
+U = zeros(N,M,TT);                                                          %queing dynamics for the request of application i at server j
+P = zeros(M,TT);                                                            % Switch consumed by each server in each time slot for s
+Switch=zeros(M,TT);                                                            % power consumed by each server in each time slot for s
+r = zeros(1,N);                                                            %average expected rate of admitted request for apllication i
+e = zeros(1,M);                                                            %the time average expected power consuption of server j
+SW= zeros(1,M);                                                            %the time average expected power consuption of server j
+R = zeros(N,TT);                                                           %the time average expected switch power consuption of server j
+Freq1 = zeros(N,M,length(F1));
+Freqtemp = zeros(M,TT);
+temp1 = zeros(N,M,length(F1));
+active_servers = zeros(N+1,M,T);
+M1=0;
+M2=0;
+M3=0;
+l=0;
+on_servers_list=zeros(1,M);
+on_servers = zeros(N+1,M);                                                 % on-server in each different frame T
+off_servers = zeros(N+1,M);                                                % off-server in each different frame T
+sleeping_servers= zeros(N+1,M);                                            % Hybernated-server in each different frame T
+ a = rand(1,M);                                                             % applications variable indicator
+ save('avalue.mat','a');
+a=load('avalue.mat','a');
+a=a.a;
+a(:)=(a(:) >= 0.4);
+ACTIVE_Num=1;
+a1=zeros(1, M);
+%a1(:) = a(:);
+count=0;                                                                   % static servers 1: static server is and 0: this servers is Dynamic
+for j=1:M
+    if (a(j)==1) && (count<ACTIVE_Num)
+        a1(j)=1;
+        count=count+1;
+    end
+end
+for j=1:M
+    if (a(j)==1)
+        on_servers(1,j)=j;
+        l=l+1;
+        on_servers_list(j)=j;
+    end
+end
+
+a_temp = zeros(1,M);                                                        %  temp applications variable indicator
+%a_temp(:)=(a_temp(:) >= 0.6);
+
+for i = 1:N
+    for j = 1:M
+        Freq1(i,j,:)= F1(:);
+    end
+end
+
+for i=1:N
+    for j=1:M
+        mu1(i,j,:) = (8*10^(-3).*F1(:)) +0.76;                  % servers queue for each application service rate (5,0.8)-----(105,1.6)
+        P_cpu1(i,j,:)=P_min1(i,j,:) + (50*10^(-4)).*((Freq1(i,j,:)-5).^2);     % CPU power of each virtual machine among each j-server pag 480
+    end
+end
+
+i=0;
+j=0;
+F3= [0, 5,50,70,90,105];    %frequecny range for every VM allocated onto the j-server
+temp3 = zeros(N,M,length(F3));
+P_cpu3 = zeros(N,M,length(F3));                                            % power consuption for each VM onto each j server
+P_min3 = 0.*ones(N,M,length(F3));                                          %minimum power for the considered VM allocated onto the j-server
+P_max3 = 60.*ones(N,M,length(F3));                                          %maximum power for the considered VM allocated onto the j-server
+mu3 = zeros(N,M,length(F3))  ;
+Freq3 = zeros(N,M,length(F3));
+for i = 1:N
+    for j = 1:M
+        Freq3(i,j,:)= F3(:);
+    end
+end
+
+for i=1:N
+    for j=1:M
+        mu3(i,j,2:1:length(F3)) = (8*10^(-3).*F3(2:1:length(F3)))+0.76; % servers queue for each application service rate (5,0.8)-----(105,1.6)
+        mu3(i,j,1) = 0;
+        P_cpu3(i,j,2:1:length(F3))=P_min3(i,j,2:1:length(F3)) + (50*10^(-4)).*((Freq3(i,j,2:1:length(F3))-(5)).^2);  % CPU power of each virtual machine among each j-server pag 480
+        P_cpu3(i,j,1)=0;
+        
+    end
+end
+F2= [0, 105];    %frequecny range for every VM allocated onto the j-server (STATIC server)
+P_cpu2 = zeros(N,M,length(F2));
+P_min2 = 0.*ones(N,M,length(F2));                                          %minimum power for the considered VM allocated onto the j-server
+P_max2 = 60.*ones(N,M,length(F2));                                          %maximum power for the considered VM allocated onto the j-server
+mu2 = zeros(N,M,length(F2))  ;
+%temp2 = zeros(N,M,length(F2));
+Freq2 = zeros(N,M,length(F2));
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%(STATIC server)
+for i=1:N
+    for j=1:M
+        mu2(i,j,2) = (8*10^(-3).*F2(2))+0.76;                                         % servers queue for each application service rate (5,0.8)-----(105,1.6)
+        mu2(i,j,1) = 0;
+        P_cpu2(i,j,2)=P_min2(i,j,length(F2)) + (50*10^(-4)).*((Freq2(i,j,length(F2))-(5)).^2);  % CPU power of each virtual machine among each j-server pag 480
+        P_cpu2(i,j,1)=0;
+        
+    end
+end
+
+i=0;
+j=0;
+UU=zeros(N,M,TT);
+UU1=zeros(N,M,TT);
+B = [1:1:TT/T];
+L_off=zeros(1,length(B));
+MM1=zeros(1,length(B));
+MM2=zeros(1,length(B));
+MM3=zeros(1,length(B));
+bb=0;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%main body code
+for t = 1 : TT
+    if (mod(t,T)~= 0)
+        UU=zeros(N,M,TT);
+        for jtest=1:M
+            if (a(jtest)==1)
+                UU(:,jtest,t)=U(:,jtest,t);
+            else
+                UU(:,jtest,t)=nan;
+            end
+        end
+        %if (t>1)
+        %UU(~UU)=nan;
+        %end
+        for i= 1 : N
+            
+            %
+            %j
+            t
+            if(W(i,t) > V.*alpha(i))
+                R(i,t) = 0;
+                
+            else
+                R(i,t) = A(i,t);
+            end
+            
+            %list U of active (ON) servers.
+            
+            
+            [U1, indexu1]=min(UU(i,:,t));% page 483 routing
+            if (W(i,t) > U1) || (isnan(U1))
+                K(i,indexu1,t) = W(i,t);
+            else
+                K(i,:,t)=0;
+            end
+            
+            UU(:,indexu1,t)=nan;
+            
+            %                 [U1, ind]=min(U(i,:,t));% page 483 routing
+            %                 if (W(i,t) > U1)
+            %                     for ikl=1:M
+            %                         for mmmm=1:N
+            %                             K(mmmm,ikl,t)=K(mmmm,ikl,t-1);
+            %                         end
+            %                     end
+            %                     K(i,ind,t) = W(i,t);
+            %
+            %                 else
+            %                     K(i,:,t)=0;
+            %                 end
+            
+            
+            %a(i,j) = (a(i,j) > 0.5); % garantee to set more than half to be -on
+            % fix number of active server, they are not M , they are
+            % obviously less
+            
+            %if sum(a(i,j)*K(i,j,t)<=W(i,t))
+            %if ((W(i,t)-sum(K(i,:,t)))>=0)
+            
+            % W(i,t+1) = W(i,t) - sum(a(i,j).*K(i,:,t)) + R(i,t);
+            W(i,t+1) = W(i,t) - (a*K(i,:,t)') + R(i,t);                %% Backlog Queue 1    (2) pag 481 consider only active server
+            % else
+            %    W(i,t+1)=R(i,t);
+            % end
+            
+        end % for N-application
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% after routing inside each server
+        for j= 1 : M
+            if (a(j)==1) && (a1(j)==0)                                      % for Dynamic ON server
+                [U_max1 , index_U_max1]=max(U(:,j,t));                   % 0=<index_U_max<=N
+                
+                for zzz=1:length(F1)
+                    temp1(index_U_max1,j,zzz) = U_max1.*(min(mu1(index_U_max1,j,zzz),U_max1)) - V.*beta.*(P_cpu1(index_U_max1,j,zzz));                  % Resource allocation pag 483
+                    
+                end
+                
+                [value1 , index1]=max(temp1(index_U_max1,j,:));            % 1=<index<=length(F)
+                
+                MU(index_U_max1,j,t) = min(mu1(index_U_max1,j,index1),U_max1);
+                P(j,t)= P_cpu1(index_U_max1,j,index1);
+                if (t==1)
+                    Switch(j,t)=k_e*(F1(index1))^2;
+                    Freqtemp(j,2)=F1(index1);
+                else
+                    Switch(j,t)=k_e*((F1(index1)-Freqtemp(j,t-1)))^2;
+                    Freqtemp(j,t)=F1(index1);
+                end
+                for i= 1 : N
+                    if (i==index_U_max1)
+                        U(index_U_max1,j,t+1) = max((U(index_U_max1,j,t) - MU(index_U_max1,j,t)),0) + K(index_U_max1,j,t);      %% Backlog Queue 2    (5) pag 481
+                    else
+                        U(i,j,t+1) = max(U(i,j,t),0) + K(i,j,t);           % Backlog Queue 2    (5) pag 481
+                    end
+                end
+                % U(index_U_max,j,t+1) = max(U(index_U_max,j,t) - MU(index_U_max,j,t),0) + a(i,j).*K(index_U_max,j,t);      %% Backlog Queue 2    (5) pag 481
+                
+   
+                
+       % for STATIC server % for STATIC server % for STATIC server % for STATIC server % for STATIC server % for STATIC server
+              
+                
+            elseif  (a(j)==1) && (a1(j)==1)                                  % for Static ON server
+                
+                [U_max2 , index_U_max2]=max(U(:,j,t));                  % 0=<index_U_max<=N
+                
+                MU(index_U_max2,j,t) = min(mu2(index_U_max2,j,length(F2)),U_max2);
+                %P(j,t)= P_cpu2(index_U_max2,j,length(F2));
+                P(j,t)= P_max2(index_U_max2,j,length(F2));
+                if (t==1)
+                    Switch(j,t)=k_e*(F2(length(F2)))^2;
+                    Freqtemp(j,2)=F2(length(F2));
+                else
+                    Switch(j,t)=k_e*((F2(length(F2))-Freqtemp(j,t-1)))^2;
+                    Freqtemp(j,t)=F2(length(F2));
+                end
+                for i= 1 : N
+                    if (i==index_U_max2)
+                        U(index_U_max2,j,t+1) = max((U(index_U_max2,j,t) - MU(index_U_max2,j,t)),0) + K(index_U_max2,j,t);      %% Backlog Queue 2    (5) pag 481
+                    else
+                        U(i,j,t+1) = max(U(i,j,t),0) + K(i,j,t);           % Backlog Queue 2    (5) pag 481
+                    end
+                end
+                
+            end
+        end                                                                % for each M-server
+        
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%check points
+    else
+        bb=bb+1;
+        UU1=zeros(N,M,TT);
+        a_temp = zeros(1,M); 
+        for jtest1=1:M
+            if (a(jtest1)==1)
+                UU1(:,jtest1,t)=U(:,jtest1,t);
+            else
+                UU1(:,jtest1,t)=nan;
+            end
+        end
+        %if (t>1)
+        %UU(~UU)=nan;
+        %end
+        for i= 1 : N
+            
+            if(W(i,t) > V.*alpha(i))   R(i,t) = 0;
+                
+            else
+                R(i,t) = A(i,t);
+            end
+            
+            %list U of active (ON) servers.
+            
+            [U2, indexu2]=min(UU1(i,:,t));% page 483 routing
+            
+            %[U2, indexu2]=min(U(i,:,t));                                   % page 483 routing
+            if (W(i,t) > U2)
+                K(i,indexu2,t) = a(indexu2)*W(i,t);
+            else
+                K(i,:,t)=0;
+            end
+            UU1(:,indexu2,t)=nan;
+            %a(i,j) = (a(i,j) > 0.5);                                      % garantee to set more than half to be -on
+            % fix number of active server, they are not M , they are
+            % obviously less
+            % if ((W(i,t)-sum(K(i,:,t)))>=0)
+            
+            % W(i,t+1) = W(i,t) - sum(a(i,j).*K(i,:,t)) + R(i,t);
+            W(i,t+1) = W(i,t) - (a*K(i,:,t)') + R(i,t);                %% Backlog Queue 1    (2) pag 481 consider only active server
+            % else
+            %W(i,t+1)=R(i,t);
+        end
+        
+        
+        for j= 1 : M
+            a_temp(j)=a(j);
+            
+             if (a1(j)==0)                                                  % for Dynamic server
+                 
+                 [U_max3, index_U_max3]=max(U(:,j,t));                           % 0=<index_U_max<=N
+                 
+                 for zzz=1:length(F3)
+                     temp3(index_U_max3,j,zzz) = U_max3.*(min(mu3(index_U_max3,j,zzz),U_max3)) - V.*beta.*(P_cpu3(index_U_max3,j,zzz));                  % Resource allocation pag 483
+                     
+                 end
+                 [value3, index3]=max(temp3(index_U_max3,j,:));                % 1=<index<=length(F)
+                 
+                 if (((min(mu3(index_U_max3,j,index3),U_max3))==0) && (P_cpu3(index_U_max3,j,index3)==0))
+                     cc=cc+1;
+                     a(j)=0;
+                     MU(index_U_max3,j,t) = 0;
+                     P(j,t)= 0;
+                     if (t==1)
+                         Switch(j,t)=k_e*(F3(index3))^2;
+                         Freqtemp(j,2)=F3(index3);
+                     else
+                         Switch(j,t)=k_e*(F3(index3)-Freqtemp(j,t-1))^2;
+                         Freqtemp(j,t)=F3(index3);
+                     end
+                 else
+                     a(j)=1;
+                     MU(index_U_max3,j,t) = min(mu3(index_U_max3,j,index3),U_max3);
+                     P(j,t)= P_cpu3(index_U_max3,j,index3);
+                     if (t==1)
+                         Switch(j,t)=k_e*(F3(index3))^2;
+                         Freqtemp(j,2)=F3(index3);
+                     else
+                         Switch(j,t)=k_e*(F3(index3)-Freqtemp(j,t-1))^2;
+                         Freqtemp(j,t)=F3(index3);
+                     end
+                 end
+            
+                 for i= 1 : N
+                     if (i==index_U_max3)
+                         U(index_U_max3,j,t+1) = max(U(index_U_max3,j,t) - MU(index_U_max3,j,t),0) + K(index_U_max3,j,t);    % Backlog Queue 2    (5) pag 481
+                     else
+                         U(i,j,t+1) = max(U(i,j,t),0) + K(i,j,t);           % Backlog Queue 2    (5) pag 481
+                     end
+                 end
+                 
+            % for STATIC server % for STATIC server % for STATIC server % for STATIC server % for STATIC server % for STATIC server
+            
+             elseif (a1(j)==1)                                             % for STATIC server
+                 
+                [U_max4 , index_U_max4]=max(U(:,j,t));                     % 0=<index_U_max<=N
+                MU(index_U_max4,j,t) = min(mu2(index_U_max4,j, length(F2)),U_max4);
+                %P(j,t)= P_cpu2(index_U_max4,j,length(F2));
+                P(j,t)= P_max2(index_U_max4,j,length(F2));
+                a(j)=1;                                                     % STATIC SERVER IS ALWAYS ON
+                if (t==1)
+                    Switch(j,t)=k_e*(F2(length(F2)))^2;
+                    Freqtemp(j,2)=F2(length(F2));
+                else
+                    Switch(j,t)=k_e*(F2(length(F2))-Freqtemp(j,t-1))^2;
+                    Freqtemp(j,t)=F2(length(F2));
+                end
+                for i= 1 : N
+                    if (i==index_U_max4)
+                        U(index_U_max4,j,t+1) = max(U(index_U_max4,j,t) - MU(index_U_max4,j,t),0) + K(index_U_max4,j,t);    % Backlog Queue 2    (5) pag 481
+                    else
+                        U(i,j,t+1) = max(U(i,j,t),0) + K(i,j,t);           % Backlog Queue 2    (5) pag 481
+                    end
+                end
+               
+             end  % end of for Dynamic server
+             
+            % U(index_U_max,j,t+1) = max(U(index_U_max,j,t) - MU(index_U_max,j,t),0) + a(i,j).*K(index_U_max,j,t);      %% Backlog Queue 2    (5) pag 481
+            % if
+        end                                                                % for each M-server
+        
+        
+        %*************************VM_MIGRATION******************
+        on_servers = zeros(N+1,M);                                                 % on-server in each different frame T
+        off_servers = zeros(N+1,M);                                                % off-server in each different frame T
+        sleeping_servers= zeros(N+1,M);
+        
+        for jj = 1 : M
+            for ii = 1 : N
+                if ((a_temp(jj)==0) && (a(jj)==1)) || (((a_temp(jj)==1) && (a(jj)==1)))
+                    on_servers(1,jj) = jj; %always ON servers + OFF--->> ON servers
+                    on_servers(ii+1,jj) =  U(ii,jj,t);
+                    %M1 = M1 + 1;
+                elseif((a_temp(jj)==1) && (a(jj)==0))
+                    off_servers(1,jj) = jj;
+                    off_servers(ii+1,jj) = U(ii,jj,t);
+                    %M2 = M2 + 1;
+                    
+                elseif ((a_temp(jj)==0) && (a(jj)==0))
+                    sleeping_servers(1,jj)=jj;  %the servers which are never ON, ALWAYS OFF
+                    sleeping_servers(ii+1,jj) =  U(ii,jj,t);
+                    %M3=M3+1;
+                end
+                
+            end
+            
+        end
+                
+        
+        
+%         on_servers = deletezero(on_servers);
+%        [x1, x2]=size(on_servers);
+%         i=0; j=0;
+%         for j=1:x2
+%             %for j=1:N
+%             if (on_servers(2:1:(N+1),j)==0)
+%               
+%                 if ((a_temp(j)==1) && (a(j)==0) && (a1(j)==0))
+%                     off_servers(1,j) = j;
+%                     off_servers(2:1:(N+1),j) = 0;
+%                 elseif ((a_temp(jj)==0) && (a(jj)==0) && (a1(j)==0))
+%                     sleeping_servers(1,j)=j;  %the servers which are never ON, ALWAYS OFF
+%                     sleeping_servers(2:1:(N+1),j) =  0;
+%                 end
+%             
+%             end
+%         end
+        on_servers = deletezero(on_servers);
+        on_servers = deletezero(on_servers);
+        off_servers= deletezero(off_servers);
+        sleeping_servers=deletezero(sleeping_servers);
+        [x1, x2]=size(on_servers);
+        M1=x2;
+        [y1, y2]=size(off_servers);
+        M2=y2;
+        [z1, z2]=size(sleeping_servers);
+        M3=z2;
+        
+        L_off(bb)=sum(sum(off_servers(2:N+1,:))) ;                                  %  the total migrated backlogs of all aplication in bits from the off servers
+        for jk = 1 : M2
+            for iii = 1 : N
+                
+                
+                [a_tempON, indexON] = min(on_servers(iii+1,:));
+                tempOnserver=off_servers(iii+1,jk);
+                on_servers(iii+1,indexON) = on_servers(iii+1,indexON)+tempOnserver;
+                off_servers(iii+1,jk)=0;
+                
+                
+                
+            end
+        end
+        
+        
+        a=zeros(1,M);
+        for dom=1:M1
+            if (on_servers(1,dom)>=1) && (a1(on_servers(1,dom))==0) % dynamic server
+                a(on_servers(1,dom))=1;
+                for i= 1 : N
+                    U(i,on_servers(1,dom),t+1)=on_servers(i+1,dom);
+                end
+            elseif (on_servers(1,dom)>=1) && (a1(on_servers(1,dom))==1) % static server
+                a(on_servers(1,dom))=1;
+                for i= 1 : N
+                    U(i,on_servers(1,dom),t+1)=on_servers(i+1,dom);
+                end
+            end
+        end
+        for dom=1:M2
+            a(off_servers(1,dom))=0;
+            for i= 1 : N
+                U(i,off_servers(1,dom),t+1)=0;
+            end
+        end
+                for dom=1:M3
+                   a(sleeping_servers(1,dom))=0;
+               end
+        
+        
+        MM1(bb)=M1;
+        MM2(bb)=M2;
+        MM3(bb)=M3;
+        M1=0;
+        M2=0;
+        M3=0;
+    end % t=nT
+    
+    
+end % biggggg for TT
+
+
+for ii= 1:N
+    r(ii) = mean(R(ii,:));
+    ww(ii) = mean(W(ii,:));                                           % average occupation for each applications before router
+    for jj = 1:M
+    e(jj) =   mean(P(jj,:));                                      %pag482 (7)
+    SW(jj)= mean (Switch(jj,:));
+    AU(ii,jj) = mean(U(ii,jj,:));                                     % average occupation of service rate for application i in sererver j in block 2
+    KU(ii,jj) = sum(K(ii,jj,:));                                     % average occupation of backlogs (in queue) of block 2 (queues in servers)
+    end
+    
+end
+
+KUU=0;
+
+    for i= 1:N
+        for j= 1:M
+            KUU=KU(i,j)+KUU;
+        end
+    end
+
+KUU=KUU/(M*N*TT);
+for i= 1:N
+Delay(i)=ww(i)/ r(i);  % delay takes for each application queue before routing
+
+end
+
+
+Avg_Delay1=mean(Delay(:)); % average delay of BLOCK 1 (before routing to the servers)
+
+
+
+for i= 1:N
+for j= 1:M
+%Delay2(i,j)=AU(i,j)./ KU(i,j);  % delay takes for application i in server j in block 2
+Delay2(i,j)=AU(i,j)./ KUU;  % delay takes for application i in server j in block 2
+end
+end
+
+
+
+for j= 1:M
+Avg_SDelay(j)=mean(Delay2(:,j)); % average delay takes for server j in block 2
+end
+
+
+Avg_Delay2=mean(Avg_SDelay(:));  % average dalay of BLOCK 2 (after routing to the servers and after servers )
+
+
+
+TOT_DELAY=Avg_Delay1+Avg_Delay2;  %average total delay of WHOLE SYSTEM
+UUTILITY = alpha(1).*sum(r(:)) - beta.*sum(e(:)); % UTILITY OF THE SYSTEM
+
+
+
+%AVG_UTILITY = mean(UUTILITY(:));   % total utility of the SYSTEM
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
+%for t= 1:TT-1
+% 
+% for ii= 1:N
+%     r(ii) = mean(R(ii,:));                                             % throughput 4 each ii
+%     ww(ii) = mean(W(ii,:));                                            % average occupation for each applications before router
+%     
+%     for jj = 1:M
+%         e(jj) = mean(P(jj,:));                                      %pag482 (7)
+%         AU(ii,jj) = mean(U(ii,jj,:));                                   % average occupation of backlogs applications of each server
+%         avg_MU(ii,jj)= mean(MU(ii,jj,:));
+%     end
+%     
+% end
+% %end
+% www=mean(ww(:));                                                           % average occpuation of all applications
+% for i = 1 : N
+%     AAU(i)=mean(AU(i,:));                                                       % average occupation of each backlogs application in the system
+%     avg_AMU(i)=mean(avg_MU(i,:));
+% end
+% 
+% for j = 1 : M
+%     SAU(j)=mean(AU(:,j));                                                       % average occupation of total backlogs applications in each  server j
+%     avg_SMU(jj)=mean(avg_MU(:,j));
+% end
+% 
+% TAU=mean(AAU(:));                                                          % average occupation for : server for : applications
+% Tavg_MU=mean(avg_AMU(:));
+% 
+% 
+% AS = www + TAU ;                                                           % total average occupations of the system
+% 
+% Avg_DELAY =  AS/mean(r(:));                                                % average delay of the system
+% 
+% AAS(:) = ww(:) + AAU(:) ;                                                  % total average occupations of the system for each application
+% 
+% Avg_ADELAY(:) = AAS(:)./r(:);                                              % average delay of the system for each application
+% 
+% Avg_SDELAY(:) = SAU(:)./avg_SMU(:);
+% 
+% UTILITY = alpha(1)*sum(r(:)) - beta*sum(e(:));
+% 
+% 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ICC2015_Sourcecode/Mu_opt_bisezione.m b/ICC2015_Sourcecode/Mu_opt_bisezione.m
new file mode 100644
index 0000000..199aacc
--- /dev/null
+++ b/ICC2015_Sourcecode/Mu_opt_bisezione.m
@@ -0,0 +1,65 @@
+%calcolo moltiplicatori con metodo bisezione
+
+function [mu,delta_mu]= Mu_opt_bisezione(alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot)
+
+
+%NB.
+%LA FUNZIONE DI CUI CALCOLARE LO ZERO č ASSUNTA MONOTONA CRESCENTE
+%CON VALORE IN ZERO NEGATIVO E ALL'INFINITO POSITIVO
+%SI ASSUME CHE VENGA CHIAMATA SOLO NEI CASI IN CUI LO ZERO ESISTE FINITO.
+%ALTRIMENTI VA IN LOOP!
+
+% definisco gli estremi in cui cercare 
+a_mu = 0;% per mu=0 si ha sum(L)<L_tot 
+%b_mu = 2.*10^3;  %<====  NB. SCEGLIERE CON ATTENZIONE IN BASE AI PARAMETRI DI SISTEMA!
+b_mu=max(((1./alpha_mu).*(f_max-alpha_zero.*f_zero))+2.*P_net./C_max); % <== per questo mu si ha f=f_max quindi sum(L)>L_tot
+%b_mu = 2.*10^0;
+
+
+toll = 10^-6;
+
+fa=delta_carico(a_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+fb=delta_carico(b_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+
+% verifico che la funzione abbia uno zero  
+while (fa.*fb) > 0 
+    b_mu=2.*b_mu;
+    fb=delta_carico(b_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+    %fprintf('%d\n',t)
+    error('estremi iniziali ricerca mu_opt errato')
+  
+end
+
+
+iterazioni = ceil(log2(b_mu-a_mu)-log2(toll));  
+%     fprintf('%d\n......iteraion',iterazioni);
+%     fprintf('%d\n......b_mu',b_mu);
+%     fprintf('%d\n......a_mu',a_mu);
+%     fprintf('%d\n......toll',toll);
+
+   for i = 1: iterazioni
+       c_mu=(a_mu+b_mu)/2;% punto medio
+       fc = delta_carico(c_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+       if abs(fc)<toll
+           break
+       end
+        if abs(b_mu-a_mu)< toll
+            break
+        end      
+%         tolf = toll.*(abs((fb-fa)./(b_mu-a_mu)));     %ELIMINATO - NEL CASO
+%                                                       DI GRADINO FUORVIANTE
+%         if abs(fc)<=tolf
+%             'Attenzione Probabile Gradino'
+%             i
+%             break
+%         end
+        if (fa.*fc)<0 %la soluzione č fra a e il punto medio
+            b_mu=c_mu;     %tengo la met sinistra dell'intervallo
+            fb = fc;
+        else         % altrimenti tengo la metŕ destra
+            a_mu=c_mu;
+            fa = fc;
+        end
+   end
+    mu=c_mu;
+    delta_mu=fc;
diff --git a/ICC2015_Sourcecode/X.mat b/ICC2015_Sourcecode/X.mat
new file mode 100644
index 0000000000000000000000000000000000000000..7ef5d3d6c698db0217767edf2f306a9221cfac39
GIT binary patch
literal 75859
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
N;(|Fk{s;JcAU(&P7jXap

literal 0
HcmV?d00001

diff --git a/ICC2015_Sourcecode/copyright notice.docx b/ICC2015_Sourcecode/copyright notice.docx
new file mode 100644
index 0000000000000000000000000000000000000000..784f337f42d8b9b1b48e5d0f96aff2ff41d5cf93
GIT binary patch
literal 15593
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
GSN{jt*BiwE

literal 0
HcmV?d00001

diff --git a/ICC2015_Sourcecode/deletezero.m b/ICC2015_Sourcecode/deletezero.m
new file mode 100644
index 0000000..fe70e1a
--- /dev/null
+++ b/ICC2015_Sourcecode/deletezero.m
@@ -0,0 +1,12 @@
+function C = deletezero(A)
+
+%delete columns of A containing all zero entries
+
+b = sum(abs(A));
+if (sum(b == 0) >= 1)
+    ind = find(b == 0,1,'first');
+    A(:,ind) = [];
+    C = deletezero(A);
+else
+    C = A;
+end
\ No newline at end of file
diff --git a/ICC2015_Sourcecode/delta_carico.m b/ICC2015_Sourcecode/delta_carico.m
new file mode 100644
index 0000000..632f943
--- /dev/null
+++ b/ICC2015_Sourcecode/delta_carico.m
@@ -0,0 +1,16 @@
+%FUNZIONE CHE DEFINISCE L'EQUAZIONE DA RISOLVERE PER IL CALCOLO DEL Mu
+%ottimo (equazione di carico su L_tot)
+
+
+
+
+function y=delta_carico(mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot)
+
+f_mu=max(mu-2.*P_net./C_max,0); 
+f_star=alpha_zero.*f_zero+alpha_mu.*f_mu;
+f_opt=max(0,min(f_star,f_max));
+
+canali_attivi=(f_mu>0); 
+L_opt=canali_attivi.*(f_opt.*Delta-L_b);
+y=sum(L_opt)-L_tot;  % N.B. PER MU=0 Y<O; PER MU-->INF Y>0  
+ 
\ No newline at end of file
diff --git a/ICC2015_Sourcecode/grafica_delta_carico.m b/ICC2015_Sourcecode/grafica_delta_carico.m
new file mode 100644
index 0000000..853884e
--- /dev/null
+++ b/ICC2015_Sourcecode/grafica_delta_carico.m
@@ -0,0 +1,6 @@
+function y=grafica_delta_carico(mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot)
+
+y=zeros(1,length(mu));
+for k=1:length(mu)
+    y(k)=delta_carico(mu(k),alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+end
\ No newline at end of file
diff --git a/ICC2015_Sourcecode/tracking3.m b/ICC2015_Sourcecode/tracking3.m
new file mode 100644
index 0000000..b43fa87
--- /dev/null
+++ b/ICC2015_Sourcecode/tracking3.m
@@ -0,0 +1,180 @@
+
+%VERSIONE DEL TRACKING CON PUNTO INIZIALE DI RICERCA PER MU.
+
+function [conv,iter,mu_opt,ni_opt,f_opt,L_opt,alpha_step_finale,V_step_finale,mu_vect]= tracking3(L_tot,L_b,alpha_zero,alpha_mu,chi,W,T_tot,Delta,f_zero,f_max,M,Th,mu_iniz,ni_iniz,f_iniz,L_iniz,alpha_step_iniz,V_step_iniz)
+
+
+
+epsilon_ni=0;  %<== N.B. shift numerico introdotto su ni;
+
+toll = 10^(-3);%10^(-2);
+num_iterazioni=100000;
+conv=0; %viene settato a 1 se il tracking arriva a convergenza.
+
+ni=zeros(num_iterazioni,M);
+ni(1,:)=ni_iniz;
+f=zeros(num_iterazioni,M);
+f(1,:)=f_iniz;
+L=zeros(num_iterazioni,M);
+L(1,:)=L_iniz;
+mu=zeros(num_iterazioni,1);
+mu(1)=mu_iniz; %<==  importante, inizializzazione del parametro mu.
+
+
+beta=0.04;%0.01;%0.7;%0.1;%10^(-3);%10^(-4);
+gamma=0.6;%0.4;
+alpha_step=beta.*ones(num_iterazioni,1);
+%alpha_step(1)=alpha_step_iniz;
+V_step=zeros(num_iterazioni,1);
+%V_step(1)=V_step_iniz;
+
+gap=zeros(num_iterazioni,1);
+
+
+for k=2:num_iterazioni
+    
+    gap(k-1)=sum(L(k-1,:))-L_tot;
+    if abs(gap(k-1)./L_tot)<toll   %errore relativo sotto la tolleranza
+        conv=1;
+        break
+    end
+    mu(k)=mu(k-1)-alpha_step(k-1).*gap(k-1);
+    mu(k)=max(0,mu(k));
+    
+    ni_star=mu(k)-2.*log(2).*(chi./W).*2.^(2.*L(k-1,:)./(W.*(T_tot-Delta)));
+    ni(k,:)=max(0,ni_star);
+    
+    f_star=alpha_zero.*f_zero+alpha_mu.*ni(k,:);
+    f(k,:)=max(0,min(f_star,f_max)); %N.B. --> NEL CASO GENERALE DI L_b>0 IL MAX VA FATTO RISPETTO A L_b/Delta, NON RISPETTO A 0.
+    
+    canali_attivi=ni(k,:)>epsilon_ni;  %<== N.B. shift numerico introdotto su ni;;
+    %L(k,:)=canali_attivi.*(f(k,:).*Delta-L_b)+(~canali_attivi).*max(0,(((T_tot-Delta).*W./2).*log(mu(k)./Th)./log(2)));
+    %L(k,:)=max(0,(((T_tot-Delta).*W./2).*log(mu(k)./Th)./log(2)));
+    L(k,:)=min((f(k,:).*Delta-L_b),max(0,(((T_tot-Delta).*W./2).*log(mu(k)./Th)./log(2))));
+    
+    
+    
+    
+    V_step(k)=(1-alpha_step(k-1)).*V_step(k-1)-gap(k-1);
+    alpha_step(k)=max(0,(min(beta,alpha_step(k-1)-gamma.*V_step(k-1).*gap(k-1))));
+    %alpha_step(k)=(min(beta,alpha_step(k-1)-gamma.*V_step(k-1).*gap(k-1)));
+    
+end
+
+
+
+%  V_step
+%  alpha_step
+% gap
+% mu
+% ni
+% f
+% L
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   GRAFICI
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   %%%%%%%%
+% 
+% figure(num_iterazioni+1)
+% plot(gap,'--o'),xlabel('iterazioni'),ylabel('gap');
+% 
+% figure(num_iterazioni+2)
+% plot(mu,'--o'),xlabel('iterazioni'),ylabel('mu');
+% 
+% figure(num_iterazioni+3)
+% plot(ni,'--o'),xlabel('iterazioni'),ylabel('ni');
+% 
+% figure(num_iterazioni+4)
+% plot(f,'--o'),xlabel('iterazioni'),ylabel('f');
+% 
+% figure(num_iterazioni+5)
+% plot(L,'--o'),xlabel('iterazioni'),ylabel('L');
+% 
+% figure(num_iterazioni+6)
+% plot(V_step,'--o'),xlabel('iterazioni'),ylabel('V_step');
+% 
+% figure(num_iterazioni+7)
+% plot(alpha_step,'--o'),xlabel('iterazioni'),ylabel('alpha_step');
+
+
+
+
+%  I VALORI SONO CORRETTI SOLTANTO SE CONV=1
+iter=k-1; %numero iterazioni per convergenza
+mu_opt=mu(k-1);
+mu_vect=mu(1:k-1);% < == N.B. Restituisce in uscita il vettoredi tracking
+ni_opt=ni(k-1,:);
+f_opt=f(k-1,:);
+L_opt=L(k-1,:);
+
+alpha_step_finale=alpha_step(k-1);
+V_step_finale=V_step(k-1);
+    
+    
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% 
+% 
+% 
+% 
+% %NB.
+% %LA FUNZIONE DI CUI CALCOLARE LO ZERO č ASSUNTA MONOTONA CRESCENTE
+% %CON VALORE IN ZERO NEGATIVO E ALL'INFINITO POSITIVO
+% %SI ASSUME CHE VENGA CHIAMATA SOLO NEI CASI IN CUI LO ZERO ESISTE FINITO.
+% %ALTRIMENTI VA IN LOOP!
+% 
+% % definisco gli estremi in cui cercare 
+% a_mu = 0;% per mu=0 si ha sum(L)<L_tot 
+% %b_mu = 2.*10^3;  %<====  NB. SCEGLIERE CON ATTENZIONE IN BASE AI PARAMETRI DI SISTEMA!
+% b_mu=max(((1./alpha_mu).*(f_max-alpha_zero.*f_zero))+2.*P_net./C_max); % <== per questo mu si ha f=f_max quindi sum(L)>L_tot
+% %b_mu = 2.*10^0;
+% 
+% 
+% toll = 10^-6;
+% 
+% fa=delta_carico(a_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+% fb=delta_carico(b_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+% 
+% % verifico che la funzione abbia uno zero  
+% while (fa.*fb) > 0 
+%     b_mu=2.*b_mu;
+%     fb=delta_carico(b_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+%     %fprintf('%d\n',t)
+%     error('estremi iniziali ricerca mu_opt errato')
+%   
+% end
+% 
+% 
+% iterazioni = ceil(log2(b_mu-a_mu)-log2(toll));  
+%     
+% 
+%    for i = 1: iterazioni
+%        c_mu=(a_mu+b_mu)/2;% punto medio
+%        fc = delta_carico(c_mu,alpha_zero,alpha_mu,P_net,C_max,f_zero,f_max,Delta,L_b,L_tot);
+%        if abs(fc)<toll
+%            break
+%        end
+%         if abs(b_mu-a_mu)< toll
+%             break
+%         end      
+% %         tolf = toll.*(abs((fb-fa)./(b_mu-a_mu)));     %ELIMINATO - NEL CASO
+% %                                                       DI GRADINO FUORVIANTE
+% %         if abs(fc)<=tolf
+% %             'Attenzione Probabile Gradino'
+% %             i
+% %             break
+% %         end
+%         if (fa.*fc)<0 %la soluzione č fra a e il punto medio
+%             b_mu=c_mu;     %tengo la met sinistra dell'intervallo
+%             fb = fc;
+%         else         % altrimenti tengo la metŕ destra
+%             a_mu=c_mu;
+%             fa = fc;
+%         end
+%    end
+%     mu=c_mu;
+%     delta_mu=fc;
diff --git a/ICC2015_Sourcecode/variabili.m b/ICC2015_Sourcecode/variabili.m
new file mode 100644
index 0000000..1e3b8aa
--- /dev/null
+++ b/ICC2015_Sourcecode/variabili.m
@@ -0,0 +1,10 @@
+clear all;
+close all;
+clc;
+X = rand(1,10000000);
+EPS = rand(1,10000000);
+DELTA_IP = rand(1,10000000);
+
+save('X');
+save('EPS');
+save('DELTA_IP');
\ No newline at end of file
-- 
GitLab