min_element.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. let post = [90,400,110];
  2. let potr = [140,300,160];
  3. let n =3;
  4. let m =3;
  5. let vir = m+n-1;
  6. let tarif = [
  7. [ 2, 5, 2],
  8. [ 4, 1, 5],
  9. [ 3, 6, 8]
  10. ];
  11. let sum1 =0;
  12. let sum2 =0;
  13. for(let i = 0; i < post.length; i++){
  14. sum1 = sum1+ post[i];
  15. }
  16. for(let i = 0; i < potr.length; i++){
  17. sum2 = sum2+ post[i];
  18. }
  19. if(sum1 == sum2){
  20. console.log("Задача закрытая");
  21. }
  22. else if(sum1 != sum2){
  23. console.log("Задача открытая");
  24. }
  25. let tarif1 = tarif.slice();
  26. let tar = tarif.slice();
  27. let sum = 0;
  28. let count = 0;
  29. while (post.reduce((acc, val) => acc + val, 0) > 0 && potr.reduce((acc, val) => acc + val, 0) > 0) {
  30. let buffI = 0;
  31. let buffJ = 0;
  32. let min = 999999;
  33. for (let i = 0; i < tarif.length; i++) {
  34. for (let j = 0; j < tarif[i].length; j++) {
  35. if (tarif[i][j] < min) {
  36. if (potr[j] > 0 && post[i] > 0) {
  37. buffJ = j;
  38. buffI = i;
  39. min = tarif[i][j];
  40. }
  41. }
  42. }
  43. }
  44. if (post[buffI] >= potr[buffJ]) {
  45. tar[buffI][buffJ] = tarif[buffI][buffJ];
  46. tarif1[buffI][buffJ] = potr[buffJ];
  47. post[buffI] -= potr[buffJ];
  48. potr[buffJ] = 0;
  49. sum += tarif1[buffI][buffJ] * min;
  50. count++;
  51. } else if (post[buffI] < potr[buffJ] && post[buffI] !== 0) {
  52. tar[buffI][buffJ] = tarif[buffI][buffJ];
  53. potr[buffJ] -= post[buffI];
  54. tarif1[buffI][buffJ] = post[buffI];
  55. post[buffI] = 0;
  56. sum += tarif1[buffI][buffJ] * min;
  57. count++;
  58. }
  59. }
  60. if(count == vir){
  61. console.log("опорный план вырожденный");
  62. }
  63. else{
  64. console.log("опорный план невырожденный");
  65. }
  66. console.log("Целевая функция = " + sum);
  67. console.log("Матрица совершенных поставок:");
  68. for (let i = 0; i < tarif1.length; i++) {
  69. console.log(tarif1[i].join(" \t "));
  70. }
  71. console.log();
  72. console.log("Матрица используемых тарифов:");
  73. for (let i = 0; i < tar.length; i++) {
  74. console.log(tar[i].join(" \t "));
  75. }