From 8847d71936800edd6d0bb06073b22356a578ba07 Mon Sep 17 00:00:00 2001 From: Zastian Pretorius Date: Mon, 1 Aug 2022 00:34:14 +0100 Subject: [PATCH] tphase algo done --- Program.cs | 2 + chess.cs | 8 +- input.txt | 12 +- .../lpr381.csproj.CoreCompileInputs.cache | 2 +- obj/Debug/net6.0/lpr381.dll | Bin 12800 -> 16384 bytes obj/Debug/net6.0/lpr381.pdb | Bin 15912 -> 19240 bytes obj/Debug/net6.0/ref/lpr381.dll | Bin 6144 -> 6144 bytes twoPhaseSimplex.cs | 285 +++++++++++++++++- 8 files changed, 290 insertions(+), 19 deletions(-) diff --git a/Program.cs b/Program.cs index cc7f847..80a681e 100644 --- a/Program.cs +++ b/Program.cs @@ -7,6 +7,8 @@ class lpr381 //simplex.simplexAlgo(); twoPhaseSimplex twoPhaseSimplex = new twoPhaseSimplex(); twoPhaseSimplex.twoPhaseSimplexAlgo(); + //chesssolver chesssolver = new chesssolver(); + //chesssolver.chessAlgo(); } } diff --git a/chess.cs b/chess.cs index ebbd4c1..2f25a44 100644 --- a/chess.cs +++ b/chess.cs @@ -3,8 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Backtracking -{ + class chesssolver { static int N; @@ -51,9 +50,9 @@ namespace Backtracking } return false; } - static void Main(string[] args) + public void chessAlgo() { - Console.WriteLine("state size of chess table exp '4' if you wish to make blocks out do exp 4[1][2]"); + Console.WriteLine("state size of chess table example: 4"); N = Convert.ToInt32(Console.ReadLine()); int[,] board = new int[N, N]; if (!theBoardSolver(board, 0)) @@ -64,4 +63,3 @@ namespace Backtracking Console.ReadLine(); } } -} \ No newline at end of file diff --git a/input.txt b/input.txt index be3008a..8840b15 100644 --- a/input.txt +++ b/input.txt @@ -1,4 +1,8 @@ -max +60 +30 +20 -+8 +6 +1 <= 48 -+4 +2 +1.5 >= 20 -+2 +1.5 +0.5 = 8 \ No newline at end of file +max +1 +1 ++8 +4 <= 160 ++4 +4 <= 100 ++1 +0 <= 17 ++1 +0 >= 5 ++0 +1 >= 2 ++1 -1 >= 0 ++1 -4 <= 0 \ No newline at end of file diff --git a/obj/Debug/net6.0/lpr381.csproj.CoreCompileInputs.cache b/obj/Debug/net6.0/lpr381.csproj.CoreCompileInputs.cache index 5c08ff5..393397b 100644 --- a/obj/Debug/net6.0/lpr381.csproj.CoreCompileInputs.cache +++ b/obj/Debug/net6.0/lpr381.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -2378da97a7cf4743291d214cf9ba5b9a5bd52a98 +42cc27e0497d325b5a06d599f420fe32fe1e67ba diff --git a/obj/Debug/net6.0/lpr381.dll b/obj/Debug/net6.0/lpr381.dll index 08f62bfe39275c19fe282612a32fe6c329536769..c929f158aa5f3b2aa669c787cb5331b09184a4aa 100644 GIT binary patch literal 16384 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 HKnMT;iba-S literal 12800 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 diff --git a/obj/Debug/net6.0/lpr381.pdb b/obj/Debug/net6.0/lpr381.pdb index bbd0735031ef19bc656f1d1519f92d5469cd305b..c28b4163100ac8a16ff855c274a45a48f98ffabc 100644 GIT binary patch delta 5308 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 delta 2836 zcmZ26jd4ZI1e5v@b_NFJItB&}4hDt*Mg|7u;F6-uy!2uQ1_p)-P6h@R1_lP@&|rod zP6mbo5ZgV}(}jV7;SDDPgN+FTgR)ajei8!%L;cJz9U|An{rk*M>p5=zKQXy>+8Is; z2DWffCJs(61_nk31_mVt1_o{h1_n+B1_o&c1_l8J20jK41_lNh1_lNmkmSUJ+V$*E zS$hTshDZhm24)5Z1|bFp25kmL1``G*h6DyihD-(~hN%pU4D%V77%np~GTdcgV$fh@ zWUydlV(4IGWSGIo#BhO;k>LR&6UZYdn33U@8nOTr!$S=apPAv81~bEydTnNgDLTvy zY`V-0;kwKWdvuu@)byAcy7fScSQwV-voJg}U}1P_2;##qBZHm^BZH|4D+3b)BiOSH z3}Q?S3?M!$10#bI0|Uct1_+;nfsx?}0|SEul+Ve)$e_f?z;Fu8uV-T5VPIq^W@KQ9 z0EZP5125D-eozoGFf;H$`L4{M@MLBXWng4bXJBA3hRTaEFf!C5@x>V!89p&EFi1h= zB^VePEEyRXyrFzakOLVRz>eguXJBTKVqj$OVq{>@hboX}U}Tub$iSe(2(eIxfstV| zBLjmqR9=>Wk>M*N1H(=zUygy1;V&ZtLm!kc&%ns=fC&C4!GlJrsnL&+# zkwKe*f#C=!A%PUAg94F}fgu>2Fqj!M7#JD27#SG6pnOdRMg~bn1_n?Z@G>wnXh97O zWnf?c@j+;+sJAdx8@$GlMBqK93QUn3);O85kJ^85kJc zq4E|W4>2$>*n=WYh=G~Gl7W#yk%56h7plODfsp}ZIVih;N1| z14Aa1Z_B{Q@P&baA)JAML4<*s!4B$xBa9HfD^i*P$-BYQ3@G7%1l*Al4T$f7lxRSF zPozWx;(H;b8Bqpi25+c^$&3sPAiggHBZDvl1H%ah2;Yx^k>M=^B#J@u{tS!^-$3yX zier#K00ScfD>RP97?>FXp$492W?%sEgP}nf!T{liK!eZ+$`55=WY7Uy29XbAU}TuU zz`!60l@DiNWH`*gz%YXeA|JuP$iM{3IQCG1NCrlRTxJG_FmTpkVu*q|fD2qeq4GiH zz%>R?G54H-fq@B}9YN_Fl;gV?7#P?XY#A9C*cr0HIRX?8JYW%C29PWtSX>YsKJ^R? zx}c;9E-e`u=7Eg^8O_W9GMWWkSh6yJ9Kpum%)r3F0XBjQO!9z9J_dG11_pkRYZwF= z%)u!FM2awg@`D(d6bENsX>b`J!;s3rz#z-;9psC8a57_LFaldV4O{?&+`|Gkhzo2q zH-kGk=YkAnU{GTO*#u!j$fMwp;ARAc1Vp47ECOMl1+yiPWI>)`WY`F{s~+Tb7LbVy ztY9nI!6YY`Njzf8X&^hhmq|Dz`PBss3)%-n*U)C#@iVos?+m@?Nfpfg^R4x%bI6s+=lG2{8vZph zHF7laPv#JafN>%xX9zgJI6EhA5SYqnzS&JMS%rnM(SmWaxP>|6N~{ zGp;aWT;agD!iRB14C9L2$tji|(o75tjI6AT3>Iu0Yz%5l4D1YyOqEQG=}kh+n~z&6 zGKpi;$+((t@_*|@MwZEmHvbq|CnwkzvavBRFgDDbyvp5?n}bn=$%~0wj4_OTva($Y zBgfA;iGR#073p zFfx@hG6*tpure?(PcC;-5Kv>{kY>5}pG;#1SFffKr@>H4JUO3_=WGf|G>{At%bjAp$De7(p!`Zl=izu7Qjo(s}YPS3WSyVX~haTfK4^ z8-pZ+w>VgBLL?&tv#1Lj13yD74@g8HFHwjAVlEQ{*iIED4lxEDCI)3tATcs9mpg$} z$Mb;Nq`Z8Ite|MLV+>$yY-6iotYK_8$kyzGt diff --git a/obj/Debug/net6.0/ref/lpr381.dll b/obj/Debug/net6.0/ref/lpr381.dll index 90c4238f22b65333aa669fe394c6ffa150f2bcec..32e9914f7ddb5887d3d2f297fbb98a291fbd678a 100644 GIT binary patch delta 920 zcmZoLXfT-2!7??zW8TCb8OCE1SB5i|OlD+MXN~Y=V33)t$fPqllF^^-3?~BvgTrJ+ zF5%4w8SR+_mbd)7wY=?-%i2dL>vnaj&Dbo+@}7~2VZ~%dHeps4P6h_X$%;(olLOc^ zEYC1AFeukCFj%lKFrurn|SfY|P#o-Paw z3>zkIWYZVqVPIeY*$tB6Wnf^CpZt+cR&pZ~8^a$)5V?x+ZL1(;lz*cjxQLF6(95NSI(mtC{|E0ZMyBLgD?1ET=LC5DY)9ut_io)N@j0=q|m zp@)fq!IgoTft3N|s#FFDj~&c2V21D@?lJ`PSQ)s$av;)`ft`UH%!>xgu`_^tA;93x z%wWI(lH_AxRuo{c1slrFAi$u;@SI77L5)F*NrQon!G&3yfsNq-lOBkiY|f!vKZA*l zfsrA=0Tg6y5;K?_QFv}BJR~`WBs6_UrZB`X_@L-Rl9NEQuO5#v4S3{oaLYlh;AEJ= z#K<7X0J2b$VFnWygC>}5$S{LRfWZ<>Ix?t&IG$imAef8S!wd>*9tO6} zpG_j)@+fkHdByoTWvNAzZ}MEk$PAPB@LDh$O#aF%&n_b>03z%N#&6PDn7G|_+^0Ap9ETmS$7 delta 818 zcmZoLXfT-2!SasJaR0;}8OFMaE5jLeCNnasvkG`JFvv_+WYU=&$>`76vUw$AIFo=t zed?KCT+S|it_$-lJgyzxEXeYnk%=K;G9#NX>mCjU2FA&XOy-jV*fcC>Ff%YH*D)}# zurM$LfY`w$MVWc&#S9D#3?b|c3@i)`49cOw3=!-M3<4mwd#I-i0|P_G47>~s46>6yvdK!$W@2Ob!w4exF?2BTGwfz!U|?f7!8m)eI=j9&NL+x) zg^7)UlNm%VV*rurlXKZM>+dsJGB7eQGB7X-FkE7o4dyX{dFvTLJSMPv1Q=2o7#Lg` zm>F0ZK(3NvhVa2fI>$!4)jW&Hxe>U@(R9co>)!1sH4@7?c=X z8Q2;47}OXpGN~}AF-S3KFt9P`F>5ohF`Q!31Cf(mIh1vqnAjK?83G(Yfz&3^#N>#= zb3@@dPTt5NS&yy*RX)EunI`|>QJAd4dqIeS0X@A=X5q77 z)R}C{C(kY+D&)&3B(pi0Pmqx}#1mu$1m{g| ratio = ratioTest(table, pivotCol); + int pivotRow = findPivotRow(ratio); + table = pivotTable(table, pivotRow, pivotCol); + printTablePhaseOne(table, varCount); + isOptimal = isOptimalPhaseOne(table); + } + + table = dropCol(table, varCount); + isOptimal = isOptimalPhaseTwo(table); + printTablePhaseTwo(table, varCount); + while (!isOptimal) + { + int pivotCol = findPivotCol(table); + List ratio = ratioTest(table, pivotCol); + int pivotRow = findPivotRow(ratio); + table = pivotTable(table, pivotRow, pivotCol); + printTablePhaseTwo(table, varCount); + isOptimal = isOptimalPhaseTwo(table); + } + + + } - void printTable(List> table, int varCount) + void printTablePhaseOne(List> table, int varCount) { + int count = 1; string[] headers = new string[table[0].Count]; for (int i = 0; i < table[0].Count; i++) { @@ -56,10 +86,48 @@ class twoPhaseSimplex } else if (i < table[0].Count - 1) { - headers[i] = "e" + (i - varCount + 1); - headers[i+1] = "a" + (i - varCount + 1); - headers[i+2] = "s" + (i - varCount + 1); + headers[i] = "e" + (count); + headers[i+1] = "a" + (count); + headers[i+2] = "s" + (count); i = i + 2; + count++; + } + else + { + headers[i] = "rhs"; + } + } + var conTable = new ConsoleTable(headers); + foreach (List row in table) + { + // convert row to object array + object[] rowArray = new object[row.Count]; + for (int i = 0; i < row.Count; i++) + { + rowArray[i] = row[i]; + } + conTable.AddRow(rowArray); + } + conTable.Write(Format.Alternative); + + } + + void printTablePhaseTwo(List> table, int varCount) + { + int count = 1; + string[] headers = new string[table[0].Count]; + for (int i = 0; i < table[0].Count; i++) + { + if (i < varCount) + { + headers[i] = "x" + (i + 1); + } + else if (i < table[0].Count - 1) + { + headers[i] = "e" + (count); + headers[i+1] = "s" + (count); + i = i + 1; + count++; } else { @@ -94,21 +162,32 @@ class twoPhaseSimplex } newTable.Add(newRow); } + List rowsWithW = new List(); List signs = new List(); foreach (Constraints constraint in constraints) { signs.Add(constraint.sign); } + // ammount of values in newTable startring from newTable[1]) + int varCount = 0; + for (int i = 1; i < newTable.Count; i++) + { + varCount = varCount + newTable[i].Count; + } for (int i = 0; i < signs.Count ; i++) { table[0].Add(0); table[0].Add(0); table[0].Add(0); + int temp = (newTable[i+1].Count-1) * signs.Count; + + // add 3 0s to each row for every column in table - for (int j = 0; j < newTable[i+1].Count-1; j++) + for (int j = 0; j < signs.Count ; j++) { if (signs[i] == ">=") { + // make s = 1 if (i == j) { table[i+1].Add(0); @@ -124,11 +203,13 @@ class twoPhaseSimplex } else if (signs[i] == "<=") { + //make e and a = 1 if (i == j) { - table[i+1].Add(1); + table[i+1].Add(-1); table[i+1].Add(1); table[i+1].Add(0); + rowsWithW.Add(i+1); } else { @@ -139,11 +220,13 @@ class twoPhaseSimplex } else if (signs[i] == "=") { + // make a = 1 if (i == j) { table[i+1].Add(0); table[i+1].Add(1); table[i+1].Add(0); + rowsWithW.Add(i+1); } else { @@ -155,14 +238,198 @@ class twoPhaseSimplex } } table[0].Add(0); + // create list of floats called wRow size table[0].Count - 1 + List wRow = new List(); + for (int i = 0; i < table[0].Count; i++) + { + wRow.Add(0); + } + for (int i = 0; i < table[0].Count; i++) + { + // if i is in rowsWithW + if (rowsWithW.Contains(i)) + { + for (int j = 0; j < wRow.Count; j++) + { + wRow[j] = wRow[j] + (-table[i][j]); + } + } + } + //add wRow to the start of table + table.Insert(1, wRow); + // remove intex newTable.Count-1 from table and place it in the back of table - for (int i = 1; i < table.Count; i++) + for (int i = 2; i < table.Count; i++) { table[i].RemoveAt(newTable.Count-1); - table[i].Add(newTable[i][newTable.Count-1]); + table[i].Add(newTable[i-1][newTable[i-1].Count-1]); } + // remove the value of newTable.Count-1 from table[1] and place it in the back of table[1] + float lastValue = table[1][newTable.Count-1]; + table[1].RemoveAt(newTable.Count-1); + table[1].Add(lastValue); + + return table; } + static List> flipZ(List> table) + { + for (int i = 0; i < table[0].Count; i++) + { + if (table[0][i] > 0) + { + table[0][i] = -table[0][i]; + } + } + return table; + } + + static int findPivotCol(List> table) + { + float largest = 0; + int largestIndex = 0; + for (int i = 0; i < table[0].Count; i++) + { + if (table[0][i] < largest) + { + largest = table[0][i]; + largestIndex = i; + } + } + return largestIndex; + } + + static List ratioTest(List> table, int testCol) + { + List ratios = new List(); + for (int i = 1; i < table.Count; i++) + { + if (table[i][testCol] != 0) + { + ratios.Add(table[i][table[i].Count - 1] / table[i][testCol]); + } + else + { + ratios.Add(float.MaxValue); + } + } + return ratios; + } + static int findPivotRow(List ratios) + { + float smallest = float.MaxValue; + int smallestIndex = 0; + for (int i = 0; i < ratios.Count; i++) + { + if (ratios[i] < smallest && ratios[i] > 0.0) + { + smallest = ratios[i]; + smallestIndex = i; + } + } + return smallestIndex; + } + + static List> pivotTable(List> table, int pivotRow, int pivotCol) + { + //clone table in to newTable + List> newTable = new List>(); + foreach (List row in table) + { + List newRow = new List(); + for (int i = 0; i < row.Count; i++) + { + newRow.Add(row[i]); + } + newTable.Add(newRow); + } + var pivotPoint = newTable[pivotRow + 1][pivotCol]; + // divide pivot row by pivot point + for (int i = 0; i < newTable[pivotRow + 1].Count; i++) + { + newTable[pivotRow + 1][i] = newTable[pivotRow + 1][i] / pivotPoint; + } + // current possition-(pivot_row*new_table pivot_point) + for (int i = 0; i < newTable.Count; i++) + { + if (i != pivotRow + 1) + { + var currentPossition = newTable[i][pivotCol]; + for (int j = 0; j < newTable[i].Count; j++) + { + newTable[i][j] = newTable[i][j] - (currentPossition * newTable[pivotRow + 1][j]); + } + } + } + return newTable; + } + + //check if the table is optimal first phase + // table is optimal if all values in table[1] are positive + + + static bool isOptimalPhaseOne(List> table) + { + int wIndex = 0; + for (int i = 0; i < table[1].Count; i++) + { + if (table[1][i] < 0) + { + wIndex = i; + } + } + if (wIndex == 0) + { + return true; + } + else + { + return false; + } + } + + + static bool isOptimalPhaseTwo(List> table) + { + int wIndex = 0; + for (int i = 0; i < table[0].Count; i++) + { + if (table[0][i] < 0) + { + wIndex = i; + } + } + if (wIndex == 0) + { + return true; + } + else + { + return false; + } + } + + + //drop all a coloumn from the table and drop w row from the table + static List> dropCol(List> table, int varCount) + { + table.RemoveAt(1); + + + // for each row in table drop the varCount-1th element + for (int i = 0; i < table.Count; i++) + { + for (int j = varCount + 1; j < table[i].Count - 1; j+=3) + { + table[i].RemoveAt(j); + j = j - 1; + } + } + return table; + + } + + } \ No newline at end of file