123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- function generate(){
- var rows = document.getElementById("row").value;
- console.log(rows);
- var cols = document.getElementById("col").value;
- console.log(cols);
-
- var table = document.createElement('table');
- table.id ="tarif";
- table.style.width = '100px';
- table.style.border = '1px solid black';
- // Создаем тело таблицы
- var tbody = document.createElement('tbody');
- for (var i = 0; i < rows; i++) {
- var row = document.createElement('tr');
- for (var j = 0; j < cols; j++) {
- var cell = document.createElement('td');
- var input = document.createElement('input');
- input.type = "number";
- input.placeholder="тариф";
- cell.appendChild(input);
- row.appendChild(cell);
- }
- tbody.appendChild(row);
- }
- table.appendChild(tbody);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('table_gen').appendChild(table);
- var tabl = document.createElement('table');
- tabl.id ="potreb";
- tabl.style.width = '100px';
- tabl.style.border = '1px solid black';
- // Создаем тело таблицы
- var tbod = document.createElement('tbody');
- for (var i = 0; i < 1; i++) {
- var row = document.createElement('tr');
- for (var j = 0; j < cols; j++) {
- var cell = document.createElement('td');
- var input = document.createElement('input');
- input.type = "number";
- input.placeholder="потребитель";
- cell.appendChild(input);
- row.appendChild(cell);
- }
- tbod.appendChild(row);
- }
- tabl.appendChild(tbod);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('pred_gen').appendChild(tabl);
- var tabi = document.createElement('table');
- tabi.id ="postav";
- tabi.style.width = '100px';
- tabi.style.border = '1px solid black';
- // Создаем тело таблицы
- var tbo = document.createElement('tbody');
- for (var i = 0; i < 1; i++) {
- var ro = document.createElement('tr');
- for (var j = 0; j < cols; j++) {
- var cell = document.createElement('td');
- var input = document.createElement('input');
- input.type = "number";
- input.placeholder="склад";
- cell.appendChild(input);
- ro.appendChild(cell);
- }
- tbo.appendChild(ro);
- }
- tabi.appendChild(tbo);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('table_postav').appendChild(tabi);
- }
- function inputtable(){
- var table1 = document.getElementById('postav');
- var cells = table1.querySelectorAll('td input');
- var pos=[];
- cells.forEach(function(cell){
- pos.push(parseInt(cell.value, 10));
- });
- console.log(pos);
- var table2 = document.getElementById('potreb');
- var celli = table2.querySelectorAll('td input');
- var pot=[];
- celli.forEach(function(cell){
- pot.push(parseInt(cell.value, 10));
- });
- console.log(pot);
- var table3 = document.getElementById('tarif');
- var rows =table3.querySelectorAll('tr');
- var tari=[];
-
-
- rows.forEach(function(row) {
- var rowData = []; // Создаем временный массив для хранения данных из текущей строки
- // Получаем все ячейки текущей строки
- var cellic = row.querySelectorAll('td input');
- // Проходимся по каждой ячейке и добавляем ее значение во временный массив
- cellic.forEach(function(cell) {
- rowData.push(parseInt(cell.value, 10)); // Преобразуем значение в число и добавляем его во временный массив
- });
- // Добавляем временный массив в основной двумерный массив
- tari.push(rowData);
- });
- let post = Array.from(pos);
- let potr = Array.from(pot);
- let tarif = Array.from(tari);
- console.log(tarif);
- let n=0;
- let m=0;
- for(let i = 0; i < post.length; i++){
- n++;
- }
- for(let i = 0; i < potr.length; i++){
- m++;
- }
- let tarif1= [];
- for(let i = 0; i < n; i++){
- tarif1[i] =[];
- for(let j=0; j<m; j++){
- tarif1[i][j]=0;
- }
- }
- let tar = tarif.slice();
- let sum = 0;
- let count = 0;
-
- while (post.reduce((acc, val) => acc + val, 0) > 0 && potr.reduce((acc, val) => acc + val, 0) > 0) {
- let buffI = 0;
- let buffJ = 0;
- let min = 999999;
-
- for (let i = 0; i < tarif.length; i++) {
- for (let j = 0; j < tarif[i].length; j++) {
- if (tarif[i][j] < min) {
- if (potr[j] > 0 && post[i] > 0) {
- buffJ = j;
- buffI = i;
- min = tarif[i][j];
- }
- }
- }
- }
-
- if (post[buffI] >= potr[buffJ]) {
- tar[buffI][buffJ] = tarif[buffI][buffJ];
- tarif1[buffI][buffJ] = potr[buffJ];
- post[buffI] -= potr[buffJ];
- potr[buffJ] = 0;
- sum += tarif1[buffI][buffJ] * min;
- count++;
- } else if (post[buffI] < potr[buffJ] && post[buffI] !== 0) {
- tar[buffI][buffJ] = tarif[buffI][buffJ];
- potr[buffJ] -= post[buffI];
- tarif1[buffI][buffJ] = post[buffI];
- post[buffI] = 0;
- sum += tarif1[buffI][buffJ] * min;
- count++;
- }
- }
- // if(count == vir){
- // console.log("опорный план вырожденный");
- // }
- // else{
- // console.log("опорный план невырожденный");
- // }
-
-
- console.log("Целевая функция = " + sum);
- console.log("Матрица совершенных поставок:");
- for (let i = 0; i < tarif1.length; i++) {
- console.log(tarif1[i].join(" \t "));
- }
-
-
- var tablee = document.createElement('table');
- tablee.id ="otvet";
- tablee.style.width = '100px';
- tablee.style.border = '1px solid black';
- // Создаем тело таблицы
- var tbodyy = document.createElement('tbody');
- for (var i = 0; i < n; i++) {
- var rowa = document.createElement('tr');
- for (var j = 0; j < m; j++) {
- var cell = document.createElement('td');
- cell.appendChild(document.createTextNode(tarif1[i][j]));
- rowa.appendChild(cell);
- }
- tbodyy.appendChild(rowa);
- }
- tablee.appendChild(tbodyy);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('otvet').appendChild(tablee);
- document.getElementById("result").textContent = sum;
- }
- function handleFile() {
- const fileInput = document.getElementById('csvFileInput');
- const file = fileInput.files[0];
- const reader = new FileReader();
-
- reader.onload = function(event) {
- const content = event.target.result;
- processData(content);
- };
-
- reader.readAsText(file);
- }
- function processData(content) {
- const lines = content.split('\n');
- const header = lines[0].split(';');
- let postt = [];
- let pottr = [];
- let tarif = [];
-
- for (let i = 1; i < lines.length; i++) {
- if (lines[i].trim() !== '') {
- const values = lines[i].split(';').map(Number);
- if (i === 1) {
- postt.push(values);
- } else if (i === 2) {
- pottr.push(values);
- } else {
- tarif.push(values);
- }
- }
- }
-
- console.log('Первый числовой массив:', postt);
- console.log('Второй числовой массив:', pottr);
- console.log('Двумерный массив:', tarif);
- let n=0;
- let m=0;
- for(let i =0; i< postt.length;i++){
- let s=0;
- for(let j =0; j<postt[i].length;j++ ){
- s++;
- }
- n =s;
- }
- for(let i =0; i< pottr.length;i++){
- let ss=0;
- for(let j =0; j<pottr[i].length;j++ ){
- ss++;
- }
- m =ss;
- }
-
- console.log(n);
- console.log(m);
- let potr=[];
- for(let i =0; i< m;i++){
- potr[i]=pottr[0][i];
- }
- console.log(potr);
- let post=[];
- for(let i =0; i< n;i++){
- post[i]=postt[0][i];
- }
- let tarif1= [];
- for(let i = 0; i < n; i++){
- tarif1[i] =[];
- for(let j=0; j<m; j++){
- tarif1[i][j]=0;
- }
- }
- console.log(post);
- console.log(tarif1);
- let tar = tarif.slice();
- console.log(tar);
- let sum = 0;
- let count = 0;
-
- while (post.reduce((acc, val) => acc + val, 0) > 0 && potr.reduce((acc, val) => acc + val, 0) > 0) {
- let buffI = 0;
- let buffJ = 0;
- let min = 999999;
-
- for (let i = 0; i < tarif.length; i++) {
- for (let j = 0; j < tarif[i].length; j++) {
- if (tarif[i][j] < min) {
- if (potr[j] > 0 && post[i] > 0) {
- buffJ = j;
- buffI = i;
- min = tarif[i][j];
- }
- }
- }
- }
-
- if (post[buffI] >= potr[buffJ]) {
- tar[buffI][buffJ] = tarif[buffI][buffJ];
- tarif1[buffI][buffJ] = potr[buffJ];
- post[buffI] -= potr[buffJ];
- potr[buffJ] = 0;
- sum += tarif1[buffI][buffJ] * min;
- count++;
- } else if (post[buffI] < potr[buffJ] && post[buffI] !== 0) {
- tar[buffI][buffJ] = tarif[buffI][buffJ];
- potr[buffJ] -= post[buffI];
- tarif1[buffI][buffJ] = post[buffI];
- post[buffI] = 0;
- sum += tarif1[buffI][buffJ] * min;
- count++;
- }
- }
- // if(count == vir){
- // console.log("опорный план вырожденный");
- // }
- // else{
- // console.log("опорный план невырожденный");
- // }
-
-
- console.log("Целевая функция = " + sum);
- console.log("Матрица совершенных поставок:");
- for (let i = 0; i < tarif1.length; i++) {
- console.log(tarif1[i].join(" \t "));
- }
-
-
- var tablee = document.createElement('table');
- tablee.id ="otvet";
- tablee.style.width = '100px';
- tablee.style.border = '1px solid black';
- // Создаем тело таблицы
- var tbodyy = document.createElement('tbody');
- for (var i = 0; i < n; i++) {
- var rowa = document.createElement('tr');
- for (var j = 0; j < m; j++) {
- var cell = document.createElement('td');
- cell.appendChild(document.createTextNode(tarif1[i][j]));
- rowa.appendChild(cell);
- }
- tbodyy.appendChild(rowa);
- }
- tablee.appendChild(tbodyy);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('otvett').appendChild(tablee);
- document.getElementById("resultt").textContent = sum;
- }
|