123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- function generate(){
- let rows =parseInt( document.getElementById("row").value);
- console.log(rows);
- let kof = parseInt(document.getElementById("kof").value);
- console.log(kof);
- let baz = parseInt(document.getElementById("baz").value);
- console.log(baz);
- let cols = 0;
- cols += kof;
- cols += baz;
- cols += 1;
- console.log(cols);
- var table = document.createElement('table');
-
- table.id ="kofi";
- table.style.width = '50px';
- 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="x";
- input.style.width='30px';
- 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 ="otrico";
- tabl.style.width = '50px';
- 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="-Коэффициент";
- input.style.width='120px';
- cell.appendChild(input);
- row.appendChild(cell);
- }
- tbod.appendChild(row);
- }
- tabl.appendChild(tbod);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('otric').appendChild(tabl);
- }
- function inputtable(){
- var table= document.getElementById('kofi');
- var rows =table.querySelectorAll('tr');
- var constraint=[];
- rows.forEach(function(row) {
- var rowData = [];
- var cellic = row.querySelectorAll('td input');
- cellic.forEach(function(cell) {
- rowData.push(parseInt(cell.value, 10));
- });
- constraint.push(rowData);
- });
- console.log(constraint);
- let constraints = Array.from(constraint);
- var table1 = document.getElementById('otrico');
- var cells = table1.querySelectorAll('td input');
- var pos=[];
- cells.forEach(function(cell){
- pos.push(parseInt(cell.value, 10));
- });
- console.log(pos);
- let objectiveFunctionCoefficients = Array.from(pos);
- let m =parseInt( document.getElementById("row").value); // Количество ограничений
- console.log(m);
- let kof = parseInt(document.getElementById("kof").value);
- console.log(kof);
- let baz = parseInt(document.getElementById("baz").value);
- console.log(baz);
- let cols = 0;
- cols += kof;
- cols += baz;
- cols += 1;
- let n = cols-1; // Количество переменных
- console.log(m);
- console.log(n);
- let table2 = []; // Создаем таблицу для симплекс метода
- for(let i = 0; i < m+1; i++){
- table2 [i] =[];
- for(let j=0; j<n+1; j++){
- table2 [i][j]=0;
- }
- }
- console.log(table2);
- // Заполняем таблицу с учетом ограничений и целевой функции
- for (let i = 0; i < m; i++) {
- for (let j = 0; j < n; j++) {
- table2[i][j] = constraints[i][j];
- }
- table2[i][n] = constraints[i][n]; // Значения правой части ограничений
- }
- for (let j = 0; j < n; j++) {
- table2[m][j] = objectiveFunctionCoefficients[j]; // Коэффициенты целевой функции
- }
- while (true) {
- // Находим входящий разрешающий столбец
- let pivotColumn = -1;
- for (let j = 0; j < n; j++) {
- let min = table2[m][0];
- if (table2[m][j] < 0) {
- if (min > table2[m][j]) {
- min = table2[m][j];
- pivotColumn = j;
- } else {
- pivotColumn = j;
- }
- }
- }
- if (pivotColumn == -1) { // Если все коэффициенты целевой функции неотрицательны, завершаем метод
- break;
- }
- // Находим исходящую строку по минимальному отношению
- let pivotRow = -1;
- let minRatio = Number.MAX_VALUE;
- for (let i = 0; i < m; i++) {
- if (table2[i][pivotColumn] > 0) {
- let ratio = table2[i][n] / table2[i][pivotColumn];
- if (ratio < minRatio) {
- minRatio = ratio;
- pivotRow = i;
- }
- }
- }
-
- let pivotElement = table2[pivotRow][pivotColumn];
- for (let j = 0; j < n + 1; j++) {
- table2[pivotRow][j] /= pivotElement; // Делим строку на опорный элемент
- }
- // Обновляем таблицу
- for (let i = 0; i < m + 1; i++) {
- if (i !== pivotRow) {
- let multiplier = table2[i][pivotColumn];
- for (let j = 0; j < n + 1; j++) {
- table2[i][j] -= multiplier * table2[pivotRow][j]; // Вычитаем из всех строк кроме опорной
- }
- }
- }
- }
- console.log("Решение симплекс-методом:");
- console.log("Значение целевой функции: " + table2[m][n]);
- document.getElementById("result").textContent = table2[m][n];
- 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 < m+1; i++) {
- var rowa = document.createElement('tr');
- for (var j = 0; j < n+1; j++) {
- var cell = document.createElement('td');
- cell.appendChild(document.createTextNode(table2[i][j]));
- rowa.appendChild(cell);
- }
- tbodyy.appendChild(rowa);
- }
- tablee.appendChild(tbodyy);
- // Добавляем таблицу в блок с id "tableContainer"
- document.getElementById('otvetik').appendChild(tablee);
- for (let i = 0; i < table2.length; i++) {
-
- console.log(table2[i].join(" \t "));
- }
- }
|