123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- let post = [90,400,110];
- let potr = [140,300,160];
- let n =3;
- let m =3;
- let vir = m+n-1;
- let tarif = [
- [ 2, 5, 2],
- [ 4, 1, 5],
- [ 3, 6, 8]
- ];
- let tarif1= [
- [ 0, 0, 0],
- [ 0, 0, 0],
- [ 0, 0, 0]
- ];
- let sum1 =0;
- let sum2 =0;
- for(let i = 0; i < post.length; i++){
- sum1 = sum1+ post[i];
- }
- for(let i = 0; i < potr.length; i++){
- sum2 = sum2+ post[i];
- }
- if(sum1 == sum2){
- console.log("Задача закрытая");
- }
- else if(sum1 != sum2){
- console.log("Задача открытая");
- }
- let tarif11 = tarif.slice();
- let count =0;
- let cel =0;
- while (post.reduce((acc, val) => acc + val, 0) > 0 && potr.reduce((acc, val) => acc + val, 0) > 0) {
- let buffI = 0;
- let buffJ = 0;
- for (let i = 0; i < tarif.length; i++)
- {
- for (let j = 0; j < tarif[i].length; j++)
- {
- if(potr[j]> 0 && post[i]>0)
- {
- buffJ =j; buffI=i;
- }
- if (post[buffI] >= potr[buffJ])
- {
- tarif1[buffI][buffJ] = potr[buffJ];
- post[buffI] = post[buffI] - potr[buffJ];
- potr[buffJ] = 0;
- count++;
- }
- else if (post[buffI] < potr[buffJ] && post[buffI] !== 0)
- {
- potr[buffJ] = potr[buffJ] - post[buffI];
-
- tarif1[buffI][buffJ] = post[buffI];
- post[buffI] = 0;
-
- count++;
- }
- }
- }
- }
- for (let i = 0; i < tarif1.length; i++)
- {
- for (let j = 0; j < tarif1[i].length; j++)
- {
- if(tarif1[i][j]!==0){
- cel =cel+ tarif1[i][j]*tarif11[i][j];
- }
- }
- }
- if(count == vir){
- console.log("опорный план вырожденный");
- }
- else{
- console.log("опорный план невырожденный");
- }
- console.log("Целевая функция = " + cel);
- console.log("Матрица совершенных поставок:");
- for (let i = 0; i < tarif1.length; i++) {
- console.log(tarif1[i].join(" \t "));
- }
- console.log();
- 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);
- }
|