I want to apply a condition of cell array allCells_array which contains matrices of 7×3 size.I want to check that if sum of each column of matrix is less than equal to 3 then do multiplication else go to next matrix in cell how to define this function and where to put END of IF in the given code?
for m=1:c2 for n=1:numel(allCells_array) *here to put IF STATEMENT* movement=(all_comb_of_routes{m})*allCells_array{n}; movement=movement>0; total_movement=sum((sum(movement,2))-1); count=count+1; total_all(count)=total_movement; endendcomplete code:%%///FOR ALL COMBINATIONS OF ROUTES(64X1806)
clear all;clc;tic;no_of_machines=7;no_of_cells=3;No_of_Parts = 6;%/// STEP 1: MAKING 64 COMBINATIONS OF ALL PARTS ROUTING
P1=[1 0 0 1 0 1 1;1 1 0 0 1 0 1];% AVAILABLE ROUTES FOR PART 1
P2=[0 1 1 1 0 0 1;1 0 1 0 1 1 0];% AVAILABLE ROUTES FOR PART
P3=[1 0 0 1 1 0 0;0 1 1 0 0 0 1];% //
P4=[1 0 0 0 1 0 1;0 1 0 1 0 1 0];%//
P5=[1 1 0 0 0 1 0;1 1 0 0 1 0 1];%//P6=[0 1 0 0 0 1 1;1 1 0 1 0 1 0];%//% GENERATING ALL POSSIBLE COMBINATIONS OF 12 ROUTES
P = [P1;P2;P3;P4;P5;P6];z = [size(P1,1) size(P2,1) size(P3,1) size(P4,1) size(P5,1) size(P6,1)];c = [0 cumsum(z(1:end-1))];a = allcomb(1:z(1),1:z(2),1:z(3),1:z(4),1:z(5),1:z(6));n = size(a,1);all_comb_of_routes = cell(1,n);for k=1:n all_comb_of_routes{k} = P(c+a(k,:),:);end%//STEP 2:GENERATING ALL CELLS COMBINATIONS FOR MACHINES
CELL = zeros(no_of_cells^no_of_machines,no_of_machines);t = 0;for k = 0:(no_of_cells^no_of_machines)-1 %k=(2187-1=2186)
s = dec2base(k,no_of_cells,no_of_machines); if length(unique(s))==no_of_cells t = t+1; CELL(t,:) = s-'0'+1; endendCELL = CELL(1:t,:);combination_array=num2cell(CELL,2);% all possible combinations
%//GENERATING MACHINE CELL MATRICES FROM ABOVE 1806 COMBINATIONS
[r1,c1]=size(combination_array);for l=1:r1 %(l)= 1806 (no.of combinations of machines and cells)
R=1:numel(combination_array{l}); Z = zeros(R(end),max(combination_array{l})); Z(sub2ind(size(Z),R,combination_array{l})) = 1; allCells_array{l}=Z; % machine cell matrix array of all combinations
end[r2,c2]=size(all_comb_of_routes);count=0;for m=1:c2 for n=1:numel(allCells_array) movement=(all_comb_of_routes{m})*allCells_array{n}; movement=movement>0; total_movement=sum((sum(movement,2))-1); count=count+1; total_all(count)=total_movement; endendminValue=min(total_all)[all_comb_of_routes(m) combination_array(n) allCells_array(n) minValue]toc;
Best Answer