13-Jun-2022 18:43:29 t_puzzle_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 t_puzzle() analyzes four versions of the T tiling puzzle. object_elements_test(): object_elements() returns information about the triangular elements and nodes forming an object. # (X,Y) 1: (-1,3) 2: (-0.5,3.5) 3: (0,0) 4: (0,1) 5: (0,2) 6: (0,3) 7: (0,4) 8: (0.5,0.5) 9: (0.5,1.5) 10: (0.5,2.5) 11: (0.5,3.5) 12: (0.5,4.5) 13: (1,1) 14: (1,2) 15: (1,3) 16: (1,4) 17: (1,5) 18: (1.5,1.5) 19: (1.5,2.5) 20: (1.5,3.5) 21: (1.5,4.5) 22: (1.5,5.5) 23: (2,2) 24: (2,3) 25: (2,4) 26: (2,5) 27: (2,6) 28: (2.5,2.5) 29: (2.5,3.5) 30: (2.5,4.5) 31: (2.5,5.5) 32: (3,3) 33: (3,4) 34: (3,5) 35: (3,6) 36: (3.5,3.5) 37: (3.5,4.5) 38: (3.5,5.5) 39: (4,4) 40: (4,5) 41: (4,6) 42: (4.5,4.5) 43: (4.5,5.5) 44: (5,5) 45: (5,6) 46: (5.5,5.5) 47: (6,6) # Type (N1,N2,N3) 1: 1 (1,6,2) 2: 2 (6,7,2) 3: 3 (13,4,8) 4: 4 (4,3,8) 5: 1 (4,13,9) 6: 2 (13,14,9) 7: 3 (14,5,9) 8: 4 (5,4,9) 9: 1 (5,14,10) 10: 2 (14,15,10) 11: 3 (15,6,10) 12: 4 (6,5,10) 13: 1 (6,15,11) 14: 2 (15,16,11) 15: 3 (16,7,11) 16: 4 (7,6,11) 17: 1 (7,16,12) 18: 2 (16,17,12) 19: 3 (23,14,18) 20: 4 (14,13,18) 21: 1 (14,23,19) 22: 2 (23,24,19) 23: 3 (24,15,19) 24: 4 (15,14,19) 25: 1 (15,24,20) 26: 2 (24,25,20) 27: 3 (25,16,20) 28: 4 (16,15,20) 29: 1 (16,25,21) 30: 2 (25,26,21) 31: 3 (26,17,21) 32: 4 (17,16,21) 33: 1 (17,26,22) 34: 2 (26,27,22) 35: 3 (32,24,28) 36: 4 (24,23,28) 37: 1 (24,32,29) 38: 2 (32,33,29) 39: 3 (33,25,29) 40: 4 (25,24,29) 41: 1 (25,33,30) 42: 2 (33,34,30) 43: 3 (34,26,30) 44: 4 (26,25,30) 45: 1 (26,34,31) 46: 2 (34,35,31) 47: 3 (35,27,31) 48: 4 (27,26,31) 49: 3 (39,33,36) 50: 4 (33,32,36) 51: 1 (33,39,37) 52: 2 (39,40,37) 53: 3 (40,34,37) 54: 4 (34,33,37) 55: 1 (34,40,38) 56: 2 (40,41,38) 57: 3 (41,35,38) 58: 4 (35,34,38) 59: 3 (44,40,42) 60: 4 (40,39,42) 61: 1 (40,44,43) 62: 2 (44,45,43) 63: 3 (45,41,43) 64: 4 (41,40,43) 65: 3 (47,45,46) 66: 4 (45,44,46) object_elements_test(): Normal end of execution. rectangle_elements_test(): rectangle_elements() returns information about the triangular elements forming a rectangle. # Type (N1,N2,N3) 1: 1 (1,8,5) 2: 2 (8,9,5) 3: 3 (9,2,5) 4: 4 (2,1,5) 5: 1 (2,9,6) 6: 2 (9,10,6) 7: 3 (10,3,6) 8: 4 (3,2,6) 9: 1 (3,10,7) 10: 2 (10,11,7) 11: 3 (11,4,7) 12: 4 (4,3,7) 13: 1 (8,15,12) 14: 2 (15,16,12) 15: 3 (16,9,12) 16: 4 (9,8,12) 17: 1 (9,16,13) 18: 2 (16,17,13) 19: 3 (17,10,13) 20: 4 (10,9,13) 21: 1 (10,17,14) 22: 2 (17,18,14) 23: 3 (18,11,14) 24: 4 (11,10,14) 25: 1 (15,22,19) 26: 2 (22,23,19) 27: 3 (23,16,19) 28: 4 (16,15,19) 29: 1 (16,23,20) 30: 2 (23,24,20) 31: 3 (24,17,20) 32: 4 (17,16,20) 33: 1 (17,24,21) 34: 2 (24,25,21) 35: 3 (25,18,21) 36: 4 (18,17,21) 37: 1 (22,29,26) 38: 2 (29,30,26) 39: 3 (30,23,26) 40: 4 (23,22,26) 41: 1 (23,30,27) 42: 2 (30,31,27) 43: 3 (31,24,27) 44: 4 (24,23,27) 45: 1 (24,31,28) 46: 2 (31,32,28) 47: 3 (32,25,28) 48: 4 (25,24,28) rectangle_elements_test(): Normal end of execution. rectangle_nodes_test(): rectangle_nodes() returns coordinates of the nodes forming a rectangle. # (X,Y) 1: (0,0) 2: (0,1) 3: (0,2) 4: (0,3) 5: (0.5,0.5) 6: (0.5,1.5) 7: (0.5,2.5) 8: (1,0) 9: (1,1) 10: (1,2) 11: (1,3) 12: (1.5,0.5) 13: (1.5,1.5) 14: (1.5,2.5) 15: (2,0) 16: (2,1) 17: (2,2) 18: (2,3) 19: (2.5,0.5) 20: (2.5,1.5) 21: (2.5,2.5) 22: (3,0) 23: (3,1) 24: (3,2) 25: (3,3) 26: (3.5,0.5) 27: (3.5,1.5) 28: (3.5,2.5) 29: (4,0) 30: (4,1) 31: (4,2) 32: (4,3) rectangle_nodes_test(): Normal end of execution. t_configuration_test(): This is a simple program to illustrate how a tile configuration can be "good" (completely inside the grid) or "bad" (not completely inside the grid). label = 0x0 empty char array Graphics saved as "configuration_bad.png" label = 0x0 empty char array Graphics saved as "configuration_good.png" t_grid_word_test(): t_grid_word() returns the boundary word of a grid. "The T" boundary word: "AAACCCCCCCCCAAACCCEEEEEEEEEGGGAAAGGGGGGGGG" base point : [ 0, 0 ] "The Arrow" boundary word: "AAACCCCCCAAAADDDDDDFFFFFFAAAAAGGGGGG" base point : [ 0, 0 ] "The Rhombus" boundary word: "AAAAAAAAABBBBBBEEEEEEEEEFFFFFF" base point : [ 0, 0 ] "The Fat Arrow" boundary word: "AAAAAACCCAAADDDDDDFFFFFFAAAGGG" base point : [ 0, 0 ] t_grid_word_test(): Normal end of execution. t_gurobi_test(): Examine a t solution from gurobi(). gurobi_solution_read(): Extract information from GUROBI file "t_gurobi.sol". The file contains 219 lines of information. The file contains 4 nonzero values. X array size adjusted to 218 t_solution_plot(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 Plot a T-puzzle solution. Tile = 1, VAR = 15, Rotate = 2, reflect = 1, type = 1 pij = (3,0) Tile = 2, VAR = 22, Rotate = 2, reflect = 1, type = 2 pij = (3,6) Tile = 3, VAR = 61, Rotate = 2, reflect = 1, type = 2 pij = (6,9) Tile = 4, VAR = 114, Rotate = 1, reflect = 0, type = 1 pij = (-3,12) Graphics saved as "t_gurobi.png" t_solution_plot(): Normal end of execution. t_gurobi_test(): Normal end of execution. t_gurobi_test(): Examine a arrow solution from gurobi(). gurobi_solution_read(): Extract information from GUROBI file "arrow_gurobi.sol". The file contains 221 lines of information. The file contains 4 nonzero values. X array size adjusted to 220 t_solution_plot(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 Plot a T-puzzle solution. Tile = 1, VAR = 8, Rotate = 2, reflect = 1, type = 1 pij = (3,0) Tile = 2, VAR = 12, Rotate = 0, reflect = 1, type = 2 pij = (1,12) Tile = 3, VAR = 44, Rotate = 2, reflect = 0, type = 1 pij = (0,9) Tile = 4, VAR = 82, Rotate = 0, reflect = 0, type = 1 pij = (-2,9) Graphics saved as "arrow_gurobi.png" t_solution_plot(): Normal end of execution. t_gurobi_test(): Normal end of execution. t_gurobi_test(): Examine a rhombus solution from gurobi(). gurobi_solution_read(): Extract information from GUROBI file "rhombus_gurobi.sol". The file contains 281 lines of information. The file contains 4 nonzero values. X array size adjusted to 280 t_solution_plot(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 Plot a T-puzzle solution. Tile = 1, VAR = 5, Rotate = 3, reflect = 1, type = 1 pij = (9,3) Tile = 2, VAR = 14, Rotate = 0, reflect = 0, type = 1 pij = (9,0) Tile = 3, VAR = 30, Rotate = 0, reflect = 0, type = 1 pij = (6,3) Tile = 4, VAR = 262, Rotate = 3, reflect = 1, type = 1 pij = (6,6) Graphics saved as "rhombus_gurobi.png" t_solution_plot(): Normal end of execution. t_gurobi_test(): Normal end of execution. t_gurobi_test(): Examine a fatarrow solution from gurobi(). gurobi_solution_read(): Extract information from GUROBI file "fatarrow_gurobi.sol". The file contains 305 lines of information. The file contains 4 nonzero values. X array size adjusted to 304 t_solution_plot(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 Plot a T-puzzle solution. Tile = 1, VAR = 1, Rotate = 0, reflect = 0, type = 1 pij = (0,0) Tile = 2, VAR = 11, Rotate = 3, reflect = 0, type = 2 pij = (9,3) Tile = 3, VAR = 97, Rotate = 3, reflect = 0, type = 1 pij = (6,0) Tile = 4, VAR = 277, Rotate = 3, reflect = 1, type = 1 pij = (0,6) Graphics saved as "fatarrow_gurobi.png" t_solution_plot(): Normal end of execution. t_gurobi_test(): Normal end of execution. t_puzzle_lp(): Define the T puzzle and a set of tiles. Set up the linear system A*x=b for the tiling problem. Use sparse storage for the matrix A. Write that information to an LP file. Tile configuration counts: 1 20 2 2 3 56 4 70 linear programming system computed. matrix A1 has 216 rows, 148 columns, 5544 nonzeros matrix A2 has 4 rows, 148 columns, 148 nonzeros The lp file has been saved as "t.lp" t_puzzle_lp(): Normal end of execution. t_puzzle_lp(): Define the T puzzle and a set of tiles. Set up the linear system A*x=b for the tiling problem. Use sparse storage for the matrix A. Write that information to an LP file. Tile configuration counts: 1 11 2 2 3 59 4 74 linear programming system computed. matrix A1 has 216 rows, 146 columns, 4932 nonzeros matrix A2 has 4 rows, 146 columns, 146 nonzeros The lp file has been saved as "arrow.lp" t_puzzle_lp(): Normal end of execution. t_puzzle_lp(): Define the T puzzle and a set of tiles. Set up the linear system A*x=b for the tiling problem. Use sparse storage for the matrix A. Write that information to an LP file. Tile configuration counts: 1 8 2 12 3 84 4 88 linear programming system computed. matrix A1 has 216 rows, 192 columns, 6624 nonzeros matrix A2 has 4 rows, 192 columns, 192 nonzeros The lp file has been saved as "rhombus.lp" t_puzzle_lp(): Normal end of execution. t_puzzle_lp(): Define the T puzzle and a set of tiles. Set up the linear system A*x=b for the tiling problem. Use sparse storage for the matrix A. Write that information to an LP file. Tile configuration counts: 1 4 2 8 3 100 4 96 linear programming system computed. matrix A1 has 216 rows, 208 columns, 6816 nonzeros matrix A2 has 4 rows, 208 columns, 208 nonzeros The lp file has been saved as "fatarrow.lp" t_puzzle_lp(): Normal end of execution. t_tile_word_test(): t_tile_word() returns the boundary word of a tile. "T puzzle tile #1" boundary word: "AAACCCCCCCCCFFFGGGGGG" base point : [ 0, 0 ] "T puzzle tile #2" boundary word: "BBBBBBEEEEFFFAGGG" base point : [ 0, 0 ] "T puzzle tile #3" boundary word: "AABBBEEEEEGGG" base point : [ 0, 0 ] "T puzzle tile #4" boundary word: "AAACCCFFF" base point : [ 0, 0 ] t_tile_word_test(): Normal end of execution. word_plot_test(): word_plot() plots a polyabolo from its boundary word. Graphics saved as "word_plot_t.png" Graphics saved as "word_plot_arrow.png" Graphics saved as "word_plot_rhombus.png" Graphics saved as "word_plot_fatarrow.png" Graphics saved as "word_plot_tile1.png" Graphics saved as "word_plot_tile2.png" Graphics saved as "word_plot_tile3.png" Graphics saved as "word_plot_tile4.png" word_plot_test(): Normal end of execution. t_puzzle_test(): Normal end of execution. 13-Jun-2022 18:44:23