Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 6.42 KB | None | 0 0
  1. Q=3;
  2. d = [
  3.     0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  4.     0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  5.     0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  6.     0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0;
  7.     0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0;
  8.     0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  9.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  10.     0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0;
  11.     0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0;
  12.     0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 3, 7, 7, 11, 0, 0, 0, 0, 0, 0;
  13.     0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  14.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 1, 0, 0, 0;
  15.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 0, 0;
  16.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 5, 5, 0, 0;
  17.     0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  18.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7;
  19.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7;
  20.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0;
  21.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3;
  22.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  23.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  24.  
  25. c=[
  26. 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  27. 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  28. 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  29. 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0;
  30. 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0;
  31. 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  32. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  33. 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 102, 10, 60, 0, 0, 0, 0, 0, 0, 0;
  34. 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0;
  35. 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 20, 70, 2, 11, 0, 0, 0, 0, 0, 0;
  36. 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  37. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 100, 0, 0, 0;
  38. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 17, 39, 31, 0, 0;
  39. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36, 35, 25, 0, 0;
  40. 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  41. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 71;
  42. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 57;
  43. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0;
  44. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 31;
  45. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  46. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  47.  
  48. t=[
  49.     0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  50.     0, 0, 0, 0, 10, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  51.     0, 0, 0, 0, 0, 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  52.     0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0;
  53.     0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0;
  54.     0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  55.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  56.     0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 132, 101, 160, 0, 0, 0, 0, 0, 0, 0;
  57.     0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0;
  58.     0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 120, 73, 172, 111, 0, 0, 0, 0, 0, 0;
  59.     0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  60.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 33, 123, 0, 0, 0;
  61.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 171, 319, 131, 0, 0;
  62.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 361, 315, 125, 0, 0;
  63.     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  64.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 711;
  65.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 157;
  66.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0;
  67.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 311;
  68.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  69.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  70. L=[15,15,15,15];%БЛЕЯРХЛНЯРЭ ОСМЙРЮ
  71. f=[2, 3, 4, 5];%ЯРНХЛНЯРЭ НРЙПШРХЪ
  72. [f_n,f_m]=size(f);
  73. csc=1;
  74. res=1;
  75. x=zeros(2*nm+f_m,1);
  76.  
  77. while sum(sum(res))>=0
  78. %start =
  79. [n, m]=size(d);
  80. nm=n*m;
  81. Aeq = zeros(n, nm);
  82. for i = 1:n
  83.     output = 0;
  84.     input = 0;
  85.  
  86.     for j1 = 1:n
  87.         if (d(i,j1) ~= 0)
  88.             output = 1;
  89.         end
  90.         if (d(j1, i) ~= 0)
  91.             input = 1;
  92.         end
  93.     end
  94.     for j = 1:m
  95.         if (input == 1 && output == 0)
  96.             continue;
  97.         end
  98.         if (output == 1)
  99.             if d(i, j) > 0
  100.                 Aeq(i, (i - 1)*n + j) = 1;
  101.             end
  102.             if (input == 1 && d(j, i) > 0)
  103.                 Aeq(i, ((j - 1)*n + i)) = -1;
  104.             end
  105.         end
  106.     end
  107. end
  108.  
  109. index=0;
  110. for j=1:size(d)
  111.         if sum(d(:,j))==0
  112.             index=index+1;
  113.         end
  114. end
  115. Aeq1=Aeq;
  116. Aeq=[Aeq,zeros(n,nm+f_m)];
  117. Aeq(1:index,:)=0;
  118. Aeq=[Aeq;sum(Aeq1(1:index,:)),zeros(1,nm+f_m)];
  119. %end =
  120.  
  121. %<=
  122. A_1=[-eye(nm),eye(nm),zeros(nm,f_m)];
  123. A_2=[eye(nm),-eye(nm).*reshape(d',1,[]),zeros(nm,f_m)];
  124. A_3=[Aeq1(1:index,:),zeros(index,nm),-eye(f_m).*L];
  125. A_4=[zeros(1,2*nm),ones(1,f_m)];
  126. A=[A_1;A_2;A_3;A_4];
  127. %end <=
  128.  
  129. b=[zeros(1,2*nm+f_m),Q];
  130. beq=[zeros(1,n),csc];
  131. ub=[reshape(d',1,[]),ones(1,nm+f_m)];
  132. lb=zeros(1,2*nm+f_m);
  133. intcon=1:2*nm+f_m;
  134. lk=ones(1,nm);
  135. lk1=sum(Aeq1(1:index,:));
  136. ff=[reshape(c',1,[]),reshape(t',1,[]),f];
  137. F=x(2*nm+1:2*nm+f_m,:);
  138.  
  139. [x, fval, exitflag,lambda]=intlinprog(ff,intcon,A,b,Aeq,beq,lb,ub);
  140. csc=csc+1;
  141. res = x(1:nm,1);
  142. res = reshape(res, n, []);
  143.  
  144. g = digraph;
  145. %res=d;
  146.  
  147. for i = 1:n
  148.     for j = 1:m
  149.         if not(res(i,j) == 0 )
  150.             g = addedge(g, j,i, res(i,j));
  151.         end
  152.     end
  153. end
  154.  
  155. h = plot(g,'Layout','layer','EdgeLabel',g.Edges.Weight,'LineWidth', 4,'ArrowSize', 12, 'MarkerSize', 14, 'LineStyle', ':', 'Marker','s');
  156. hs = struct(h);   %and ignore the warning message
  157.     for nhl = hs.NodeLabelHandles_
  158.         nhl.Font.Size = 25;
  159.     end
  160.     for nhl = hs.EdgeLabelHandles_
  161.         nhl.Font.Size = 20;
  162.     end
  163. end
  164. TCF=sum(F.*f')
  165. TC=sum(sum(c.*res))+sum(F.*f')
  166. Time=sum(sum(t.*res))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement