Advertisement
Guest User

i_separately

a guest
Jul 12th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.64 KB | None | 0 0
  1. bl = [40;60;70;100];
  2. A1 =[1,2,6,2;
  3.     2,6,9,4;
  4.     5,7,1,5;
  5.     4,8,9,8];
  6. price=[4,9,10.5,6.5];
  7. [k1,fval,exitflag]=intlinprog(-price,1:4,A1,bl,[],[],zeros(1,4),[]);
  8. k2=round(k1);
  9. bl-(sum((A1.*k2')'))'
  10. k2
  11. d = [0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  12.     0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  13.     0, 0, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  14.     0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0;
  15.     0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0;
  16.     0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  17.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  18.     0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0;
  19.     0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0;
  20.     0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 3, 7, 7, 11, 0, 0, 0, 0, 0, 0;
  21.     0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  22.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 1, 0, 0, 0;
  23.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 0, 0;
  24.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 5, 5, 0, 0;
  25.     0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  26.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7;
  27.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7;
  28.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0;
  29.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3;
  30.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  31.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  32.  
  33. c=[0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  34. 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  35. 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  36. 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0;
  37. 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0;
  38. 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  39. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  40. 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 102, 10, 60, 0, 0, 0, 0, 0, 0, 0;
  41. 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0;
  42. 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 20, 70, 2, 11, 0, 0, 0, 0, 0, 0;
  43. 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  44. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30, 100, 0, 0, 0;
  45. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 17, 39, 31, 0, 0;
  46. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 36, 35, 25, 0, 0;
  47. 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  48. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 71;
  49. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 57;
  50. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0;
  51. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 31;
  52. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
  53. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  54.  
  55. d1=reshape(d',1,[]);
  56. % СКОЛЬКО ВХОДИТ И ВЫХОДИТ
  57. b1 = k2;
  58. a = [10;5];
  59. [in_n, p] = size(a);
  60. [out_n, p] = size(b1);
  61. % Конец ВХОДИТ И ВЫХОДИТ
  62.  
  63.  
  64. % ЗАДАЕМ ОГРАНИЧЕНИЯ РАВЕНСТВ
  65. [n, m] = size(d);
  66. nm=n*m;
  67. Aeq = zeros(n, n*m);
  68.  
  69. for i = 1:n
  70.     for j = 1:m
  71.         if d(i, j) > 0
  72.             Aeq(i, (i - 1)*n + j) = 1;
  73.         end
  74.     end
  75.     for k = 1:n
  76.          if d(k, i) > 0
  77.             if (i <= n - max(size(a)))
  78.                 Aeq(i, (k - 1)*n + i) = -1;
  79.             else
  80.                 Aeq(i, (k - 1)*n + i) = 1;
  81.             end
  82.          end
  83.     end
  84. end
  85. % КОНЕЦ ОГРАНИЧЕНИЯ РАВЕНСТВ
  86.  
  87.  
  88.  
  89. %ТУТ МЫ ЗАДАЕМ ОГРАНИЧЕНИЯ <=
  90. A=[];
  91. %КОНЕЦ ЗАДАНИЯ ОГРАНИЧЕНИЙ
  92.  
  93. lb = zeros(1, 2*nm);
  94. ub = reshape(d',1,[]);
  95. intcon = 1:nm;
  96.  
  97. tmp = n - out_n - in_n;
  98. beq = ([b1;(zeros(1, tmp))';a])';
  99.  
  100. b = [];
  101.  
  102. k = c;
  103. ff = reshape(k',1,[]);
  104.  
  105. [x, fval] = intlinprog(ff,intcon,A,b,Aeq,beq, lb, ub);
  106.  
  107. res = reshape(x, n, []);
  108.  
  109. g = digraph;
  110.  
  111. for i = 1:n
  112.     for j = 1:n
  113.         if not(res(i,j) == 0 )
  114.             g = addedge(g, j, i, res(i,j));
  115.         end
  116.     end
  117. end
  118.  
  119. h = plot(g,'Layout','layered','EdgeLabel',g.Edges.Weight,'LineWidth', 4,'ArrowSize', 8, 'MarkerSize', 14, 'LineStyle', ':', 'Marker','s')
  120. hs = struct(h);   %and ignore the warning message
  121. for nhl = hs.NodeLabelHandles_
  122.   nhl.Font.Size = 20;
  123. end
  124. for nhl = hs.EdgeLabelHandles_
  125.   nhl.Font.Size = 25;
  126. end
  127.  
  128. zapasi=bl-(sum((A1.*k2')'))'
  129. k2
  130. TC=sum(sum(res.*c'))
  131. TR=price*k2
  132. Profit=TR-TC
  133. %plot(g,'Layout','force','EdgeLabel',g.Edges.Weight)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement