123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- 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 ="plan";
- 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 table1 = document.createElement('table');
- table1.id ="tarif";
- table1.style.width = '100px';
- table1.style.border = '1px solid black';
- // Создаем тело таблицы
- var tbody1 = 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);
- }
- tbody1.appendChild(row);
- }
- table1.appendChild(tbody1);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('table_tarif').appendChild(table1);
- }
- function inputtable(){
- var table = document.getElementById('plan');
- var rows =table.querySelectorAll('tr');
- var p=[];
- rows.forEach(function(row) {
- var rowData = [];
- var cellic = row.querySelectorAll('td input');
- cellic.forEach(function(cell) {
- rowData.push(parseInt(cell.value, 10));
- });
- p.push(rowData);
- });
- let op = Array.from(p);
- console.log(op);
- var table1 = document.getElementById('tarif');
- var rows =table1.querySelectorAll('tr');
- var t=[];
- rows.forEach(function(row) {
- var rowData = [];
- var cellic = row.querySelectorAll('td input');
- cellic.forEach(function(cell) {
- rowData.push(parseInt(cell.value, 10));
- });
- t.push(rowData);
- });
- let cost2 = Array.from(t);
- console.log(cost2);
- var roww = document.getElementById("row").value;
- let rowws = parseInt(roww)+1;
- console.log(rowws);
- var ccol = document.getElementById("col").value;
- let ccols = parseInt(ccol)+1;
- console.log(ccols);
- let cost =[];
- for(let i = 0; i < rowws; i++){
- cost [i] =[];
- for(let j=0; j<ccols; j++){
- if(i<rowws -1 && j <ccols -1){
- if(op[i][j]!==0){
- cost [i][j]= cost2[i][j];
- }
- else if(op[i][j]===0){
- cost [i][j]=0;
- }
-
- }
- else if(i == rowws-1){
- cost [i][j]=0;
- }
- else if(j == ccols-1){
- cost [i][j]=0;
- }
- }
- }
- console.log(cost);
- let ved_potencial=0;
- let posled1 = 0; // to find the last cell of the column
- let posled = 0;
- let svoboda = 0;
-
- for (let i = 0; i < cost2.length; i++) {
- for (let j = 0; j < cost2[0].length; j++) {
- if (op[i][j] !== 0) {
- cost2[i][j] = 0;
- svoboda++;
- }
- }
- }
-
- svoboda= svoboda- 1;
-
- for (let i = 0; i < cost.length; i++) {
- let lastCellRow = 0; // to find the last cell of the row
- for (let j = 0; j < cost[0].length; j++) {
- lastCellRow++;
- }
- posled = lastCellRow;
- posled1++;
- }
-
- let pot = [];
- for(let i=0; i< posled1+1; i++){
- pot[i]=[];
- for(let j=0; j< posled+1; j++){
- if (i === 0 && j === posled) {
- pot[i][j] = 0;
-
- ved_potencial = pot[i][j];
- } else {
- pot[i][j] = 0;
- }
- }
- }
-
- console.log(pot);
-
-
- let b = 0;
- while (b < posled1 + posled) {
- for (let i = 0; i < posled1 + 1; i++) {
- for (let j = 0; j < posled + 1; j++) {
- if (j < posled && i < posled1) {
- if (cost[i][j] !== 0) {
- let ii = 0;
- let jj = 0;
- if (cost[0][j] !== 0) {
- pot[posled1][j] = cost[i][j] - ved_potencial;
- ii = posled1;
- jj = j;
- cost[0][j] = 0;
- }
- if (pot[posled1][j] !== 0 && pot[i][posled] === 0 && i !== ved_potencial) {
- pot[i][posled] = cost[i][j] - pot[posled1][j];
- cost[0][j] = 0;
- }
- if (pot[posled1][j] === 0 && pot[i][posled] !== 0 && i !== ved_potencial) {
- pot[posled1][j] = cost[i][j] - pot[i][posled];
- cost[0][j] = 0;
- }
- }
- }
- }
- }
- b++;
- }
-
- console.log("Матрица потенциалов");
- console.log();
- for (let i = 0; i < posled1 + 1; i++) {
- for (let j = 0; j < posled + 1; j++) {
- console.log(pot[i][j] + " ");
- }
- console.log();
- }
- console.log("Оценка свободных ячеек: ");
- let kolvo_polosh = 0;
- for (let i = 0; i < posled1 + 1; i++) {
- for (let j = 0; j < posled + 1; j++) {
- if (j < posled && i < posled1) {
- if (cost2[i, j] !== 0) {
- let schet = (pot[posled1, j] + pot[i, posled]) - cost2[i, j];
- console.log("( " + pot[posled1, j] + " + " + pot[i, posled] + " ) -" + cost2[i, j] + " = " + schet);
- kolvo_polosh += optim(schet);
- }
- }
- }
- }
- if (kolvo_polosh === 0) {
- console.log("Опорный план оптимален");
- let str='Опорный план оптимален';
- document.getElementById("result").textContent += str;
- } else if (kolvo_polosh > 0) {
- console.log("Опорный план не оптимален");
- let str='Опорный план не оптимален';
- document.getElementById("result").textContent += str;
- console.log("Количество положительных чисел : " + kolvo_polosh);
- }
- 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 < posled1 + 1; i++) {
- var rowa = document.createElement('tr');
- for (var j = 0; j <posled + 1 ; j++) {
- var cell = document.createElement('td');
- cell.appendChild(document.createTextNode(pot[i][j]));
- rowa.appendChild(cell);
- }
- tbodyy.appendChild(rowa);
- }
- tablee.appendChild(tbodyy);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('otvetik').appendChild(tablee);
- }
- function optim(schet) {
- let n = schet;
- if (schet > 0) {
- return 1;
- } else {
- return 0;
- }
- }
- module.exports = optim;
|