potencial_resh.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. function generate(){
  2. var rows = document.getElementById("row").value;
  3. console.log(rows);
  4. var cols = document.getElementById("col").value;
  5. console.log(cols);
  6. var table = document.createElement('table');
  7. table.id ="plan";
  8. table.style.width = '100px';
  9. table.style.border = '1px solid black';
  10. // Создаем тело таблицы
  11. var tbody = document.createElement('tbody');
  12. for (var i = 0; i < rows; i++) {
  13. var row = document.createElement('tr');
  14. for (var j = 0; j < cols; j++) {
  15. var cell = document.createElement('td');
  16. var input = document.createElement('input');
  17. input.type = "number";
  18. input.placeholder="поставка";
  19. cell.appendChild(input);
  20. row.appendChild(cell);
  21. }
  22. tbody.appendChild(row);
  23. }
  24. table.appendChild(tbody);
  25. // Добавляем таблицу в блок с id "tableContainer"
  26. document.getElementById('table_gen').appendChild(table);
  27. var table1 = document.createElement('table');
  28. table1.id ="tarif";
  29. table1.style.width = '100px';
  30. table1.style.border = '1px solid black';
  31. // Создаем тело таблицы
  32. var tbody1 = document.createElement('tbody');
  33. for (var i = 0; i < rows; i++) {
  34. var row = document.createElement('tr');
  35. for (var j = 0; j < cols; j++) {
  36. var cell = document.createElement('td');
  37. var input = document.createElement('input');
  38. input.type = "number";
  39. input.placeholder="тариф";
  40. cell.appendChild(input);
  41. row.appendChild(cell);
  42. }
  43. tbody1.appendChild(row);
  44. }
  45. table1.appendChild(tbody1);
  46. // Добавляем таблицу в блок с id "tableContainer"
  47. document.getElementById('table_tarif').appendChild(table1);
  48. }
  49. function inputtable(){
  50. var table = document.getElementById('plan');
  51. var rows =table.querySelectorAll('tr');
  52. var p=[];
  53. rows.forEach(function(row) {
  54. var rowData = [];
  55. var cellic = row.querySelectorAll('td input');
  56. cellic.forEach(function(cell) {
  57. rowData.push(parseInt(cell.value, 10));
  58. });
  59. p.push(rowData);
  60. });
  61. let op = Array.from(p);
  62. console.log(op);
  63. var table1 = document.getElementById('tarif');
  64. var rows =table1.querySelectorAll('tr');
  65. var t=[];
  66. rows.forEach(function(row) {
  67. var rowData = [];
  68. var cellic = row.querySelectorAll('td input');
  69. cellic.forEach(function(cell) {
  70. rowData.push(parseInt(cell.value, 10));
  71. });
  72. t.push(rowData);
  73. });
  74. let cost2 = Array.from(t);
  75. console.log(cost2);
  76. var roww = document.getElementById("row").value;
  77. let rowws = parseInt(roww)+1;
  78. console.log(rowws);
  79. var ccol = document.getElementById("col").value;
  80. let ccols = parseInt(ccol)+1;
  81. console.log(ccols);
  82. let cost =[];
  83. for(let i = 0; i < rowws; i++){
  84. cost [i] =[];
  85. for(let j=0; j<ccols; j++){
  86. if(i<rowws -1 && j <ccols -1){
  87. if(op[i][j]!==0){
  88. cost [i][j]= cost2[i][j];
  89. }
  90. else if(op[i][j]===0){
  91. cost [i][j]=0;
  92. }
  93. }
  94. else if(i == rowws-1){
  95. cost [i][j]=0;
  96. }
  97. else if(j == ccols-1){
  98. cost [i][j]=0;
  99. }
  100. }
  101. }
  102. console.log(cost);
  103. let ved_potencial=0;
  104. let posled1 = 0; // to find the last cell of the column
  105. let posled = 0;
  106. let svoboda = 0;
  107. for (let i = 0; i < cost2.length; i++) {
  108. for (let j = 0; j < cost2[0].length; j++) {
  109. if (op[i][j] !== 0) {
  110. cost2[i][j] = 0;
  111. svoboda++;
  112. }
  113. }
  114. }
  115. svoboda= svoboda- 1;
  116. for (let i = 0; i < cost.length; i++) {
  117. let lastCellRow = 0; // to find the last cell of the row
  118. for (let j = 0; j < cost[0].length; j++) {
  119. lastCellRow++;
  120. }
  121. posled = lastCellRow;
  122. posled1++;
  123. }
  124. let pot = [];
  125. for(let i=0; i< posled1+1; i++){
  126. pot[i]=[];
  127. for(let j=0; j< posled+1; j++){
  128. if (i === 0 && j === posled) {
  129. pot[i][j] = 0;
  130. ved_potencial = pot[i][j];
  131. } else {
  132. pot[i][j] = 0;
  133. }
  134. }
  135. }
  136. console.log(pot);
  137. let b = 0;
  138. while (b < posled1 + posled) {
  139. for (let i = 0; i < posled1 + 1; i++) {
  140. for (let j = 0; j < posled + 1; j++) {
  141. if (j < posled && i < posled1) {
  142. if (cost[i][j] !== 0) {
  143. let ii = 0;
  144. let jj = 0;
  145. if (cost[0][j] !== 0) {
  146. pot[posled1][j] = cost[i][j] - ved_potencial;
  147. ii = posled1;
  148. jj = j;
  149. cost[0][j] = 0;
  150. }
  151. if (pot[posled1][j] !== 0 && pot[i][posled] === 0 && i !== ved_potencial) {
  152. pot[i][posled] = cost[i][j] - pot[posled1][j];
  153. cost[0][j] = 0;
  154. }
  155. if (pot[posled1][j] === 0 && pot[i][posled] !== 0 && i !== ved_potencial) {
  156. pot[posled1][j] = cost[i][j] - pot[i][posled];
  157. cost[0][j] = 0;
  158. }
  159. }
  160. }
  161. }
  162. }
  163. b++;
  164. }
  165. console.log("Матрица потенциалов");
  166. console.log();
  167. for (let i = 0; i < posled1 + 1; i++) {
  168. for (let j = 0; j < posled + 1; j++) {
  169. console.log(pot[i][j] + " ");
  170. }
  171. console.log();
  172. }
  173. console.log("Оценка свободных ячеек: ");
  174. let kolvo_polosh = 0;
  175. for (let i = 0; i < posled1 + 1; i++) {
  176. for (let j = 0; j < posled + 1; j++) {
  177. if (j < posled && i < posled1) {
  178. if (cost2[i, j] !== 0) {
  179. let schet = (pot[posled1, j] + pot[i, posled]) - cost2[i, j];
  180. console.log("( " + pot[posled1, j] + " + " + pot[i, posled] + " ) -" + cost2[i, j] + " = " + schet);
  181. kolvo_polosh += optim(schet);
  182. }
  183. }
  184. }
  185. }
  186. if (kolvo_polosh === 0) {
  187. console.log("Опорный план оптимален");
  188. let str='Опорный план оптимален';
  189. document.getElementById("result").textContent += str;
  190. } else if (kolvo_polosh > 0) {
  191. console.log("Опорный план не оптимален");
  192. let str='Опорный план не оптимален';
  193. document.getElementById("result").textContent += str;
  194. console.log("Количество положительных чисел : " + kolvo_polosh);
  195. }
  196. var tablee = document.createElement('table');
  197. tablee.id ="otvet";
  198. tablee.style.width = '100px';
  199. tablee.style.border = '1px solid black';
  200. // Создаем тело таблицы
  201. var tbodyy = document.createElement('tbody');
  202. for (var i = 0; i < posled1 + 1; i++) {
  203. var rowa = document.createElement('tr');
  204. for (var j = 0; j <posled + 1 ; j++) {
  205. var cell = document.createElement('td');
  206. cell.appendChild(document.createTextNode(pot[i][j]));
  207. rowa.appendChild(cell);
  208. }
  209. tbodyy.appendChild(rowa);
  210. }
  211. tablee.appendChild(tbodyy);
  212. // Добавляем таблицу в блок с id "tableContainer"
  213. document.getElementById('otvetik').appendChild(tablee);
  214. }
  215. function optim(schet) {
  216. let n = schet;
  217. if (schet > 0) {
  218. return 1;
  219. } else {
  220. return 0;
  221. }
  222. }
  223. module.exports = optim;