p align="left">(нашли минимальное значение функции) f := 28350 >[x11,x12,x13,x14,x15,x16,x17,x18,x19,x110];[x21,x22,x23,x24,x25,x26,x27,x28,x29,x210];[x31,x32,x33,x34,x35,x36,x37,x38,x39,x310];[x41,x42,x43,x44,x45,x46,x47,x48,x49,x410];[x51,x52,x53,x54,x55,x56,x57,x58,x59,x510]; [x61,x62,x63,x64,x65,x66,x67,x68,x69,x610]; [x71,x72,x73,x74,x75,x76,x77,x78,x79,x710]; [x81,x82,x83,x84,x85,x86,x87,x88,x89,x810]; [x91,x92,x93,x94,x95,x96,x97,x98,x99,x910]; [x101,x102,x103,x104,x105,x106,x107,x108,x109,x1010];f; [0, 0, 0, 0, 0, 0, 0, 0, 25, 0] [0, 0, 0, 0, 0, 0, 0, 0, 30, 0] [0, 10, 0, 0, 0, 0, 0, 0, 0, 25] [0, 0, 0, 0, 0, 0, 0, 40, 0, 0] [0, 0, 0, 0, 0, 0, 0, 0, 0, 45] [0, 0, 0, 0, 0, 0, 20, 20, 10, 0] [0, 0, 0, 0, 0, 20, 35, 0, 0, 0] [0, 0, 0, 25, 30, 5, 0, 0, 0, 0] [0, 15, 40, 10, 0, 0, 0, 0, 0, 0] [50, 20, 0, 0, 0, 0, 0, 0, 0, 0] 28350 Приложение 2 Листинг программы решения транспортной задачи в векторных координатах (Для двух матриц) > restart: > b:=[50,18,12,80,15,15]; b := [50, 18, 12, 80, 15, 15] > c:=[14,20,22,24,50,60]; c := [14, 20, 22, 24, 50, 60] (Решить первую транспортную задачу, найдя цену перевозки и план перевозки) >X:=Matrix(6,6,[[3,8,9,1,9,0],[3,4,5,0,9,6],[2,7,6,0,9,0],[9,1,9,4,7,2],[2,4,5,6,4,1],[1,4,5,7,8,7]]); X := Matrix(6,6,{(1, 1) = 3, (1, 2) = 8, (1, 3) = 9, (1, 4) = 1, (1, 5) = 9, (2, 1) = 3, (2, 2) = 4, (2, 3) = 5, (2, 5) = 9, (2, 6) = 6, (3, 1) = 2, (3, 2) = 7, (3, 3) = 6, (3, 5) = 9, (4, 1) = 9, (4, 2) = 1, (4, 3) = 9, (4, 4) = 4, (4, 5) = 7, (4, 6) = 2, (5, 1) = 2, (5, 2) = 4, (5, 3) = 5, (5, 4) = 6, (5, 5) = 4, (5, 6) = 1, (6, 1) = 1, (6, 2) = 4, (6, 3) = 5, (6, 4) = 7, (6, 5) = 8, (6, 6) = 7},datatype = anything,storage = rectangular,order = Fortran_order,shape = []) > proc(X,b,c) >f1x,x11,x12,x13,x14,x15,x16,x21,x22,x23,x24,x25,x26,x31,x32,x33,x34,x35,x36,x41,x42,x43,x44,x45,x46,x51,x52,x53,x54,x55,x56,x61,x62,x63,x64,x65,x66; Warning, premature end of input > with(simplex): Warning, the protected names maximize and minimize have been redefined and unprotected >minimize(X[1,1]*x11+X[1,2]*x12+X[1,3]*x13+X[1,4]*x14+X[1,5]*x15+X[1,6]*x16+X[2,1]*x21+X[2,2]*x22+X[2,3]*x23+X[2,4]*x24+X[2,5]*x25+X[2,6]*x26+X[3,1]*x31+X[3,2]*x32+X[3,3]*x33+X[3,4]*x34+X[3,5]*x35+X[3,6]*x36+X[4,1]*x41+X[4,2]*x42+X[4,3]*x43+X[4,4]*x44+X[4,5]*x45+X[4,6]*x46+X[5,1]*x51+X[5,2]*x52+X[5,3]*x53+X[5,4]*x54+X[5,5]*x55+X[5,6]*x56+X[6,1]*x61+X[6,2]*x62+X[6,3]*x63+X[6,4]*x64+X[6,5]*x65+X[6,6]*x66, {x11+x12+x13+x14+x15+x16=b[1],x21+x22+x23+x24+x25+x26=b[2], x31+x32+x33+x34+x35+x36=b[3],x41+x42+x43+x44+x45+x46=b[4], x51+x52+x53+x54+x55+x56=b[5], x61+x62+x63+x64+x65+x66=b[6], x11+x21+x31+x41+x51+x61=c[1], x12+x22+x32+x42+x52+x62=c[2], x13+x23+x33+x43+x53+x63=c[3], x14+x24+x34+x44+x54+x64=c[4],x15+x25+x35+x45+x55+x65=c[5],x16+x26+x36+x46+x56+x66=c[6]},NONNEGATIVE); {x11 = 0, x12 = 0, x13 = 0, x14 = 0, x15 = 0, x21 = 0, x22 = 0, x31 = 0, x32 = 0, x33 = 0, x36 = 0, x41 = 0, x51 = 0, x54 = 0, x55 = 0, x56 = 0, x64 = 0, x65 = 0, x66 = 0, x61 = 14, x16 = 50, x25 = 0, x26 = 0, x35 = 0, x43 = 0, x44 = 0, x52 = 0, x62 = 0, x34 = 12, x46 = 10, x24 = 12, x45 = 50, x63 = 1, x42 = 20, x23 = 6, x53 = 15} > assign(%); >f1x:=X[1,1]*x11+X[1,2]*x12+X[1,3]*x13+X[1,4]*x14+X[1,5]*x15+X[1,6]*x16+X[2,1]*x21+X[2,2]*x22+X[2,3]*x23+X[2,4]*x24+X[2,5]*x25+X[2,6]*x26+X[3,1]*x31+X[3,2]*x32+X[3,3]*x33+X[3,4]*x34+X[3,5]*x35+X[3,6]*x36+X[4,1]*x41+X[4,2]*x42+X[4,3]*x43+X[4,4]*x44+X[4,5]*x45+X[4,6]*x46+X[5,1]*x51+X[5,2]*x52+X[5,3]*x53+X[5,4]*x54+X[5,5]*x55+X[5,6]*x56+X[6,1]*x61+X[6,2]*x62+X[6,3]*x63+X[6,4]*x64+X[6,5]*x65+X[6,6]*x66; f1x := 514 >[x11,x12,x13,x14,x15,x16];[x21,x22,x23,x24,x25,x26];[x31,x32,x33,x34,x35,x36];[x41,x42,x43,x44,x45,x46];[x51,x52,x53,x54,x55,x56];[x61,x62,x63,x64,x65,x66];f1x; [0, 0, 0, 0, 0, 50] [0, 0, 6, 12, 0, 0] [0, 0, 0, 12, 0, 0] [0, 20, 0, 0, 50, 10] [0, 0, 15, 0, 0, 0] [14, 0, 1, 0, 0, 0] 514 (Решить вторую транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки) >Y:=Matrix(6,6,[[3/2,8/2,9/2,1/2,9/2,0/2],[3/2,4/2,5/2,0/2,9/2,6/2],[2/2,7/2,6/2,0/2,9/2,0/2],[9/2,1/2,9/2,4/2,7/2,2/2],[2/2,4/2,5/2,6/2,4/2,1/2],[1/2,4/2,5/2,7/2,8/2,7/2]]); Y := Matrix(6,6,{(1, 1) = 3/2, (1, 2) = 4, (1, 3) = 9/2, (1, 4) = 1/2, (1, 5) = 9/2, (2, 1) = 3/2, (2, 2) = 2, (2, 3) = 5/2, (2, 5) = 9/2, (2, 6) = 3, (3, 1) = 1, (3, 2) = 7/2, (3, 3) = 3, (3, 5) = 9/2, (4, 1) = 9/2, (4, 2) = 1/2, (4, 3) = 9/2, (4, 4) = 2, (4, 5) = 7/2, (4, 6) = 1, (5, 1) = 1, (5, 2) = 2, (5, 3) = 5/2, (5, 4) = 3, (5, 5) = 2, (5, 6) = 1/2, (6, 1) = 1/2, (6, 2) = 2, (6, 3) = 5/2, (6, 4) = 7/2, (6, 5) = 4, (6, 6) = 7/2},datatype = anything,storage = rectangular,order = Fortran_order,shape = []) > proc(Y,b,c) >f2y,y11,y12,y13,y14,y15,y16,y21,y22,y23,y24,y25,y26,y31,y32,y33,y34,y35,y36,y41,y42,y43,y44,y45,y46,y51,y52,y53,y54,y55,y56,y61,y62,y63,y64,y65,y66; Warning, premature end of input > with(simplex): >minimize(Y[1,1]*y11+Y[1,2]*y12+Y[1,3]*y13+Y[1,4]*y14+Y[1,5]*y15+Y[1,6]*y16+Y[2,1]*y21+Y[2,2]*y22+Y[2,3]*y23+Y[2,4]*y24+Y[2,5]*y25+Y[2,6]*y26+Y[3,1]*y31+Y[3,2]*y32+Y[3,3]*y33+Y[3,4]*y34+Y[3,5]*y35+Y[3,6]*y36+Y[4,1]*y41+Y[4,2]*y42+Y[4,3]*y43+Y[4,4]*y44+Y[4,5]*y45+Y[4,6]*y46+Y[5,1]*y51+Y[5,2]*y52+Y[5,3]*y53+Y[5,4]*y54+Y[5,5]*y55+Y[5,6]*y56+Y[6,1]*y61+Y[6,2]*y62+Y[6,3]*y63+Y[6,4]*y64+Y[6,5]*y65+Y[6,6]*y66, {y11+y12+y13+y14+y15+y16=b[1],y21+y22+y23+y24+y25+y26=b[2], y31+y32+y33+y34+y35+y36=b[3],y41+y42+y43+y44+y45+y46=b[4], y51+y52+y53+y54+y55+y56=b[5], y61+y62+y63+y64+y65+y66=b[6], y11+y21+y31+y41+y51+y61=c[1], y12+y22+y32+y42+y52+y62=c[2], y13+y23+y33+y43+y53+y63=c[3], y14+y24+y34+y44+y54+y64=c[4],y15+y25+y35+y45+y55+y65=c[5],y16+y26+y36+y46+y56+y66=c[6]},NONNEGATIVE); {y54 = 0, y55 = 0, y56 = 0, y64 = 0, y65 = 0, y66 = 0, y61 = 14, y16 = 50, y43 = 0, y44 = 0, y52 = 0, y62 = 0, y34 = 12, y46 = 10, y23 = 6, y63 = 1, y45 = 50, y42 = 20, y24 = 12, y53 = 15, y25 = 0, y26 = 0, y35 = 0, y14 = 0, y15 = 0, y21 = 0, y11 = 0, y12 = 0, y13 = 0, y22 = 0, y31 = 0, y32 = 0, y36 = 0, y41 = 0, y51 = 0, y33 = 0} > assign(%); >f2y:=Y[1,1]*y11+Y[1,2]*y12+Y[1,3]*y13+Y[1,4]*y14+Y[1,5]*y15+Y[1,6]*y16+Y[2,1]*y21+Y[2,2]*y22+Y[2,3]*y23+Y[2,4]*y24+Y[2,5]*y25+Y[2,6]*y26+Y[3,1]*y31+Y[3,2]*y32+Y[3,3]*y33+Y[3,4]*y34+Y[3,5]*y35+Y[3,6]*y36+Y[4,1]*y41+Y[4,2]*y42+Y[4,3]*y43+Y[4,4]*y44+Y[4,5]*y45+Y[4,6]*y46+Y[5,1]*y51+Y[5,2]*y52+Y[5,3]*y53+Y[5,4]*y54+Y[5,5]*y55+Y[5,6]*y56+Y[6,1]*y61+Y[6,2]*y62+Y[6,3]*y63+Y[6,4]*y64+Y[6,5]*y65+Y[6,6]*y66; f2y := 257 >[y11,y12,y13,y14,y15,y16];[y16,y21,y22,y23,y24,y25,y26];[y31,y32,y33,y34,y35,y36];[y41,y42,y43,y44,y45,y46];[y51,y52,y53,y54,y55,y56];[y61,y62,y63,y64,y65,y66];f2y; [0, 0, 0, 0, 0, 50] [50, 0, 0, 6, 12, 0, 0] [0, 0, 0, 12, 0, 0] [0, 20, 0, 0, 50, 10] [0, 0, 15, 0, 0, 0] [14, 0, 1, 0, 0, 0] 257 >f2x:=Y[1,1]*x11+Y[1,2]*x12+Y[1,3]*x13+Y[1,4]*x14+Y[1,5]*x15+Y[1,6]*x16+Y[2,1]*x21+Y[2,2]*x22+Y[2,3]*x23+Y[2,4]*x24+Y[2,5]*x25+Y[2,6]*x26+Y[3,1]*x31+Y[3,2]*x32+Y[3,3]*x33+Y[3,4]*x34+Y[3,5]*x35+Y[3,6]*x36+Y[4,1]*x41+Y[4,2]*x42+Y[4,3]*x43+Y[4,4]*x44+Y[4,5]*x45+Y[4,6]*x46+Y[5,1]*x51+Y[5,2]*x52+Y[5,3]*x53+Y[5,4]*x54+Y[5,5]*x55+Y[5,6]*x56+Y[6,1]*x61+Y[6,2]*x62+Y[6,3]*x63+Y[6,4]*x64+Y[6,5]*x65+Y[6,6]*x66; f2x := 257 >f1y:=X[1,1]*y11+X[1,2]*y12+X[1,3]*y13+X[1,4]*y14+X[1,5]*y15+X[1,6]*y16+X[2,1]*y21+X[2,2]*y22+X[2,3]*y23+X[2,4]*y24+X[2,5]*y25+X[2,6]*y26+X[3,1]*y31+X[3,2]*y32+X[3,3]*y33+X[3,4]*y34+X[3,5]*y35+X[3,6]*y36+X[4,1]*y41+X[4,2]*y42+X[4,3]*y43+X[4,4]*y44+X[4,5]*y45+X[4,6]*y46+X[5,1]*y51+X[5,2]*y52+X[5,3]*y53+X[5,4]*y54+X[5,5]*y55+X[5,6]*y56+X[6,1]*y61+X[6,2]*y62+X[6,3]*y63+X[6,4]*y64+X[6,5]*y65+X[6,6]*y66; f1y := 514 (Составляем матрицу М , где f1x - это план перевозки первой задачи, поставленный в функцию цели первой задачи; f2x - это план перевозки первой задачи поставленный, в функцию цели второй задачи; f1y - это план перевозки второй задачи, поставленный в функцию цели первой задачи; f2y - это план перевозки второй задачи, поставленный в функцию цели второй задачи) > M:=Matrix(2,2); M := Matrix(2,2,{},datatype = anything,storage = rectangular,order = Fortran_order,shape = []) > M[1,1]:=f1x/(f1x+f2x); M[1,1] := 2/3 > M[1,2]:=f2x/(f1x+f2x); M[1,2] := 1/3 > M[2,1]:=f1y/(f1y+f2y); M[2,1] := 2/3 > M[2,2]:=f2y/(f1y+f2y); M[2,2] := 1/3 > M; Matrix(2,2,{(1, 1) = 2/3, (1, 2) = 1/3, (2, 1) = 2/3, (2, 2) = 1/3},datatype = anything,storage = rectangular,order = Fortran_order,shape = []) > with(LinearAlgebra): (Матрицу M транспонируем. Полученную матрицу обозначаем A.) > A:=Transpose(M); A := Matrix(2,2,{(1, 2) = 2/3, (2, 1) = 1/3, (1, 1) = 2/3, (2, 2) = 1/3},datatype = anything,storage = rectangular,order = Fortran_order,shape = []) (Находим собственные значения и собственные векторы матрицы А) > AA:=Eigenvectors(A); AA := Vector[column](2,{(2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = []), Matrix(2,2,{(1, 1) = -1, (1, 2) = 2, (2, 1) = 1, (2, 2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = []) > L:=AA[1]; L := Vector[column](2,{(2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = []) > L1:=AA[2]; L1 := Matrix(2,2,{(1, 1) = -1, (1, 2) = 2, (2, 1) = 1, (2, 2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = []) (Берем один из столбцов матрицы собственных векторов, в зависимости конечно от собственных значений (если собственное значение равное единице стоит первым, то берем первый столбец, иначе второй ) и нормируем этот столбец) > if L[1]=1 then i:=L1[1,1]/(L1[1,1]+L1[2,1]) else L[2]=1 ;i:=L1[1,2]/(L1[1,2]+L1[2,2]) end if; 1 = 1 i := 2/3 > if L[1]=1 then j:=L1[2,1]/(L1[1,1]+L1[2,1]) else L[2]=1; j:=L1[2,2]/(L1[1,2]+L1[2,2]) end if; 1 = 1 j := 1/3 (Первую координату нормированного вектора умножаем на первую матрицу цен и складываем с второй матрицей цен умноженное на вторую координату полученного нормированного вектора. Получили новую матрицу цен) > Z:=i*X+j*Y; Z := Matrix(6,6,{(6, 3) = 25/6, (6, 4) = 35/6, (6, 5) = 20/3, (6, 6) = 35/6, (4, 3) = 15/2, (4, 4) = 10/3, (4, 5) = 35/6, (4, 6) = 5/3, (5, 1) = 5/3, (5, 2) = 10/3, (5, 3) = 25/6, (5, 4) = 5, (5, 5) = 10/3, (5, 6) = 5/6, (6, 1) = 5/6, (6, 2) = 10/3, (2, 1) = 5/2, (2, 2) = 10/3, (2, 3) = 25/6, (2, 5) = 15/2, (1, 5) = 15/2, (2, 6) = 5, (3, 1) = 5/3, (3, 2) = 35/6, (3, 3) = 5, (3, 5) = 15/2, (4, 1) = 15/2, (4, 2) = 5/6, (1, 1) = 5/2, (1, 2) = 20/3, (1, 3) = 15/2, (1, 4) = 5/6},datatype = anything,storage = rectangular,order = Fortran_order,shape = []) (Решаем новую транспортную задачу с таким же объемом поставок и потребностей, но с новыми ценами) > proc(Z,b,c) > f3z,z11,z12,z13,z14,z15,z16,z21,z22,z23,z24,z25,z26,z31,z32,z33,z34,z35,z36,z41,z42,z43,z44,z45,z46,z51,z52,z53,z54,z55,z56,z61,z62,z63,z64,z65,z66; > Warning, premature end of input > with(simplex): > minimize(Z[1,1]*z11+Z[1,2]*z12+Z[1,3]*z13+Z[1,4]*z14+Z[1,5]*z15+Z[1,6]*z16+Z[2,1]*z21+Z[2,2]*z22+Z[2,3]*z23+Z[2,4]*z24+Z[2,5]*z25+Z[2,6]*z26+Z[3,1]*z31+Z[3,2]*z32+Z[3,3]*z33+Z[3,4]*z34+Z[3,5]*z35+Z[3,6]*z36+Z[4,1]*z41+Z[4,2]*z42+Z[4,3]*z43+Z[4,4]*z44+Z[4,5]*z45+Z[4,6]*z46+Z[5,1]*z51+Z[5,2]*z52+Z[5,3]*z53+Z[5,4]*z54+Z[5,5]*z55+Z[5,6]*z56+Z[6,1]*z61+Z[6,2]*z62+Z[6,3]*z63+Z[6,4]*z64+Z[6,5]*z65+Z[6,6]*z66, {z11+z12+z13+z14+z15+z16=b[1],z21+z22+z23+z24+z25+z26=b[2], z31+z32+z33+z34+z35+z36=b[3],z41+z42+z43+z44+z45+z46=b[4], z51+z52+z53+z54+z55+z56=b[5], z61+z62+z63+z64+z65+z66=b[6], z11+z21+z31+z41+z51+z61=c[1], z12+z22+z32+z42+z52+z62=c[2], z13+z23+z33+z43+z53+z63=c[3], z14+z24+z34+z44+z54+z64=c[4],z15+z25+z35+z45+z55+z65=c[5],z16+z26+z36+z46+z56+z66=c[6]},NONNEGATIVE);
Страницы: 1, 2, 3, 4, 5, 6, 7
|