function [ vio_greedy,ty_greedy,vio_Cp1] = ini16_greedy( ty_ini )
global A_read car_num B type_num
ty_greedy=zeros(size(A_read,1),car_num);
static_ratios=zeros(5,1);
% [static_ratios]=arrayfun(@(x)dot(A_read(:,2),A_read(:,x))/(min(mod(car_num,B(x-2,2)),B(x-2,1))+B(x-2,1)*floor(car_num/B(x-2,2))),3:size(A_read,2))
[static_ratios]=arrayfun(@(x)dot(A_read(:,2),A_read(:,x))/(B(x-2,1)*car_num/B(x-2,2)),3:size(A_read,2))
%% 第一辆车选择方法
ty_greedy(:,1)=A_read(:,1);
b=repmat(A_read(:,2)',type_num,1);
b(1:type_num+1:end) = b(1:type_num+1:end)-1;
%% 其它各辆车选择1
for i=1:type_num
Cp2=zeros(size(B,1),1);
for j=2:car_num
[~,idx]=find(b(i,:)>0);
[ vio_add_cell,Cp2_cell ] = arrayfun(@(x)vio_add_cons( nonzeros(ty_greedy(i,:))',idx(x),Cp2 ),1:size(idx,2),'uni',0); % 计算违约数最少时可选车型
vio_add = cell2mat(vio_add_cell);
[~,r] = find(vio_add == min(vio_add)); % r是指不违反比率约束的下标
if numel(r)>1
[avail_unused_filter]=arrayfun(@(x)avail_unused_filter_cons(nonzeros(ty_greedy(i,:))',idx(r(x)),b(i,:)),1:size(r,2)); %选任一个保证后面存在不违约的可能性
[~,r1]=find(avail_unused_filter==1);
if numel(r1)>1
[avail_after_filter]=arrayfun(@(x)avail_after_filter_cons(nonzeros(ty_greedy(i,:))',idx(r(r1(x))),b(i,:)),1:size(r1,2));
[~,r2]=find(avail_after_filter==1);
if numel(r2)>1
[ratios_add]=arrayfun(@(x)ratios_add_cons(idx(r(r1(r2(x)))),static_ratios),1:size(r2,2));
[~,r3]=find(ratios_add == max(ratios_add));
if numel(r3)>1
[ratios_remains]=arrayfun(@(x)ratios_remains_cons(idx(r(r1(r2(r3(x))))),b(i,:)),1:size(r3,2));
[~,r4]=find(ratios_remains == min(ratios_remains));
if numel(r4)>1
[ ratios_complex ] = arrayfun(@(x)ratios_complex_cons((nonzeros(ty_greedy(i,:)))',idx(r(r1(r2(r3(r4(x)))))),static_ratios,b(i,:)),1:size(r4,2));
[~,r5]=find(ratios_complex==max(ratios_complex),1);
idx_b=idx(r(r1(r2(r3(r4(r5))))));
else
idx_b=idx(r(r1(r2(r3(r4)))));
end
else
idx_b=idx(r(r1(r2(r3))));
end
elseif numel(r2)==1
idx_b=idx(r(r1(r2)));
else
[ ratios_complex ] = arrayfun(@(x)ratios_complex_cons((nonzeros(ty_greedy(i,:)))',idx(r(r1(x))),static_ratios,b(i,:)),1:size(r1,2));
[~,r1_1]=find(ratios_complex==max(ratios_complex),1);
idx_b=idx(r(r1(r1_1)));
end
elseif numel(r1)==1
idx_b=idx(r(r1));
else
[ ratios_complex ] = arrayfun(@(x)ratios_complex_cons((nonzeros(ty_greedy(i,:)))',idx(r(x)),static_ratios,b(i,:)),1:size(r,2));
[~,r_1]=find(ratios_complex==max(ratios_complex));
if numel(r_1)>1
factor=[2 1.5 3 2.5 5];
[sum_power]=arrayfun(@(x)dot(factor,A_read(idx(r(r_1(x))),3:end)),1:size(r_1,2));
[~,r_2]=find(sum_power==max(sum_power),1);
idx_b=idx(r(r_1(r_2)));
else
idx_b=idx(r(r_1));
end
end
else
idx_b=idx(r);
end
ty_greedy(i,j)=idx_b;
b(i,idx_b)=b(i,idx_b)-1;
[~,Cp2]=vio1_m(ty_greedy(i,1:j),Cp2);
end
[vio_greedy(i),~,~,vio_Cp1(i)]=vio_m(A_read(ty_greedy(i,:),3:end)',B)
[vio_stand(i)]=vio_add_standard(ty_greedy(i,:))
end
end