sever_resh.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  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 ="tarif";
  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 tabl = document.createElement('table');
  28. tabl.id ="potreb";
  29. tabl.style.width = '100px';
  30. tabl.style.border = '1px solid black';
  31. // Создаем тело таблицы
  32. var tbod = document.createElement('tbody');
  33. for (var i = 0; i < 1; 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. tbod.appendChild(row);
  44. }
  45. tabl.appendChild(tbod);
  46. // Добавляем таблицу в блок с id "tableContainer"
  47. document.getElementById('pred_gen').appendChild(tabl);
  48. var tabi = document.createElement('table');
  49. tabi.id ="postav";
  50. tabi.style.width = '100px';
  51. tabi.style.border = '1px solid black';
  52. // Создаем тело таблицы
  53. var tbo = document.createElement('tbody');
  54. for (var i = 0; i < 1; i++) {
  55. var ro = document.createElement('tr');
  56. for (var j = 0; j < cols; j++) {
  57. var cell = document.createElement('td');
  58. var input = document.createElement('input');
  59. input.type = "number";
  60. input.placeholder="склад";
  61. cell.appendChild(input);
  62. ro.appendChild(cell);
  63. }
  64. tbo.appendChild(ro);
  65. }
  66. tabi.appendChild(tbo);
  67. // Добавляем таблицу в блок с id "tableContainer"
  68. document.getElementById('table_postav').appendChild(tabi);
  69. }
  70. function inputtable(){
  71. var table1 = document.getElementById('postav');
  72. var cells = table1.querySelectorAll('td input');
  73. var pos=[];
  74. cells.forEach(function(cell){
  75. pos.push(parseInt(cell.value, 10));
  76. });
  77. console.log(pos);
  78. var table2 = document.getElementById('potreb');
  79. var celli = table2.querySelectorAll('td input');
  80. var pot=[];
  81. celli.forEach(function(cell){
  82. pot.push(parseInt(cell.value, 10));
  83. });
  84. console.log(pot);
  85. var table3 = document.getElementById('tarif');
  86. var rows =table3.querySelectorAll('tr');
  87. var tari=[];
  88. rows.forEach(function(row) {
  89. var rowData = []; // Создаем временный массив для хранения данных из текущей строки
  90. // Получаем все ячейки текущей строки
  91. var cellic = row.querySelectorAll('td input');
  92. // Проходимся по каждой ячейке и добавляем ее значение во временный массив
  93. cellic.forEach(function(cell) {
  94. rowData.push(parseInt(cell.value, 10)); // Преобразуем значение в число и добавляем его во временный массив
  95. });
  96. // Добавляем временный массив в основной двумерный массив
  97. tari.push(rowData);
  98. });
  99. let post = Array.from(pos);
  100. let potr = Array.from(pot);
  101. let tarif = Array.from(tari);
  102. console.log(tarif);
  103. let n=0;
  104. let m=0;
  105. for(let i = 0; i < post.length; i++){
  106. n++;
  107. }
  108. for(let i = 0; i < potr.length; i++){
  109. m++;
  110. }
  111. let tarif1= [];
  112. for(let i = 0; i < n; i++){
  113. tarif1[i] =[];
  114. for(let j=0; j<m; j++){
  115. tarif1[i][j]=0;
  116. }
  117. }
  118. let tarif11 = tarif.slice();
  119. let count =0;
  120. let cel =0;
  121. while (post.reduce((acc, val) => acc + val, 0) > 0 && potr.reduce((acc, val) => acc + val, 0) > 0) {
  122. let buffI = 0;
  123. let buffJ = 0;
  124. for (let i = 0; i < tarif.length; i++)
  125. {
  126. for (let j = 0; j < tarif[i].length; j++)
  127. {
  128. if(potr[j]> 0 && post[i]>0)
  129. {
  130. buffJ =j; buffI=i;
  131. }
  132. if (post[buffI] >= potr[buffJ])
  133. {
  134. tarif1[buffI][buffJ] = potr[buffJ];
  135. post[buffI] = post[buffI] - potr[buffJ];
  136. potr[buffJ] = 0;
  137. count++;
  138. }
  139. else if (post[buffI] < potr[buffJ] && post[buffI] !== 0)
  140. {
  141. potr[buffJ] = potr[buffJ] - post[buffI];
  142. tarif1[buffI][buffJ] = post[buffI];
  143. post[buffI] = 0;
  144. count++;
  145. }
  146. }
  147. }
  148. }
  149. for (let i = 0; i < tarif1.length; i++)
  150. {
  151. for (let j = 0; j < tarif1[i].length; j++)
  152. {
  153. if(tarif1[i][j]!==0){
  154. cel =cel+ tarif1[i][j]*tarif11[i][j];
  155. }
  156. }
  157. }
  158. console.log("Целевая функция = " + cel);
  159. console.log("Матрица совершенных поставок:");
  160. for (let i = 0; i < tarif1.length; i++) {
  161. console.log(tarif1[i].join(" \t "));
  162. }
  163. console.log();
  164. var tablee = document.createElement('table');
  165. tablee.id ="otvet";
  166. tablee.style.width = '100px';
  167. tablee.style.border = '1px solid black';
  168. // Создаем тело таблицы
  169. var tbodyy = document.createElement('tbody');
  170. for (var i = 0; i < n; i++) {
  171. var rowa = document.createElement('tr');
  172. for (var j = 0; j < m; j++) {
  173. var cell = document.createElement('td');
  174. cell.appendChild(document.createTextNode(tarif1[i][j]));
  175. rowa.appendChild(cell);
  176. }
  177. tbodyy.appendChild(rowa);
  178. }
  179. tablee.appendChild(tbodyy);
  180. // Добавляем таблицу в блок с id "tableContainer"
  181. document.getElementById('otvet').appendChild(tablee);
  182. document.getElementById("result").textContent = cel;
  183. }
  184. function handleFile() {
  185. const fileInput = document.getElementById('csvFileInput');
  186. const file = fileInput.files[0];
  187. const reader = new FileReader();
  188. reader.onload = function(event) {
  189. const content = event.target.result;
  190. processData(content);
  191. };
  192. reader.readAsText(file);
  193. }
  194. function processData(content) {
  195. const lines = content.split('\n');
  196. const header = lines[0].split(';');
  197. let postt = [];
  198. let pottr = [];
  199. let tarif = [];
  200. for (let i = 1; i < lines.length; i++) {
  201. if (lines[i].trim() !== '') {
  202. const values = lines[i].split(';').map(Number);
  203. if (i === 1) {
  204. postt.push(values);
  205. } else if (i === 2) {
  206. pottr.push(values);
  207. } else {
  208. tarif.push(values);
  209. }
  210. }
  211. }
  212. console.log('Первый числовой массив:', postt);
  213. console.log('Второй числовой массив:', pottr);
  214. console.log('Двумерный массив:', tarif);
  215. let n=0;
  216. let m=0;
  217. for(let i =0; i< postt.length;i++){
  218. let s=0;
  219. for(let j =0; j<postt[i].length;j++ ){
  220. s++;
  221. }
  222. n =s;
  223. }
  224. for(let i =0; i< pottr.length;i++){
  225. let ss=0;
  226. for(let j =0; j<pottr[i].length;j++ ){
  227. ss++;
  228. }
  229. m =ss;
  230. }
  231. console.log(n);
  232. console.log(m);
  233. let potr=[];
  234. for(let i =0; i< m;i++){
  235. potr[i]=pottr[0][i];
  236. }
  237. console.log(potr);
  238. let post=[];
  239. for(let i =0; i< n;i++){
  240. post[i]=postt[0][i];
  241. }
  242. let tarif1= [];
  243. for(let i = 0; i < n; i++){
  244. tarif1[i] =[];
  245. for(let j=0; j<m; j++){
  246. tarif1[i][j]=0;
  247. }
  248. }
  249. console.log(post);
  250. console.log(tarif1);
  251. let tar = tarif.slice();
  252. console.log(tar);
  253. let tarif11 = tarif.slice();
  254. let count =0;
  255. let cel =0;
  256. while (post.reduce((acc, val) => acc + val, 0) > 0 && potr.reduce((acc, val) => acc + val, 0) > 0) {
  257. let buffI = 0;
  258. let buffJ = 0;
  259. for (let i = 0; i < tarif.length; i++)
  260. {
  261. for (let j = 0; j < tarif[i].length; j++)
  262. {
  263. if(potr[j]> 0 && post[i]>0)
  264. {
  265. buffJ =j; buffI=i;
  266. }
  267. if (post[buffI] >= potr[buffJ])
  268. {
  269. tarif1[buffI][buffJ] = potr[buffJ];
  270. post[buffI] = post[buffI] - potr[buffJ];
  271. potr[buffJ] = 0;
  272. count++;
  273. }
  274. else if (post[buffI] < potr[buffJ] && post[buffI] !== 0)
  275. {
  276. potr[buffJ] = potr[buffJ] - post[buffI];
  277. tarif1[buffI][buffJ] = post[buffI];
  278. post[buffI] = 0;
  279. count++;
  280. }
  281. }
  282. }
  283. }
  284. for (let i = 0; i < tarif1.length; i++)
  285. {
  286. for (let j = 0; j < tarif1[i].length; j++)
  287. {
  288. if(tarif1[i][j]!==0){
  289. cel =cel+ tarif1[i][j]*tarif11[i][j];
  290. }
  291. }
  292. }
  293. console.log("Целевая функция = " + cel);
  294. console.log("Матрица совершенных поставок:");
  295. for (let i = 0; i < tarif1.length; i++) {
  296. console.log(tarif1[i].join(" \t "));
  297. }
  298. console.log();
  299. var tablee = document.createElement('table');
  300. tablee.id ="otvet";
  301. tablee.style.width = '100px';
  302. tablee.style.border = '1px solid black';
  303. // Создаем тело таблицы
  304. var tbodyy = document.createElement('tbody');
  305. for (var i = 0; i < n; i++) {
  306. var rowa = document.createElement('tr');
  307. for (var j = 0; j < m; j++) {
  308. var cell = document.createElement('td');
  309. cell.appendChild(document.createTextNode(tarif1[i][j]));
  310. rowa.appendChild(cell);
  311. }
  312. tbodyy.appendChild(rowa);
  313. }
  314. tablee.appendChild(tbodyy);
  315. // Добавляем таблицу в блок с id "tableContainer"
  316. document.getElementById('otvett').appendChild(tablee);
  317. document.getElementById("resultt").textContent = cel;
  318. }