10-Jan-2022 17:45:20 pariomino_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino() analyzes polyominoes with +1/-1 parity assignment. GUROBI_SOLUTION_READ_TEST: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 GUROBI_SOLUTION_READ tries to extract a solution vector X returned by GUROBI for a particular polyomino tiling problem. gurobi_solution_read_demo(): MATLAB version. GUROBI solution file to be read is "reid_gurobi.sol" gurobi_solution_read: Extract information from GUROBI file "reid_gurobi.sol". The file contains 20 lines of information. The file contains 3 nonzero values. Unscrambled solution data: Col: 1 Row 1: 0 2: 0 3: 1 4: 0 5: 0 6: 0 7: 0 8: 0 9: 0 10: 0 11: 0 12: 1 13: 1 14: 0 15: 0 16: 0 17: 0 18: 0 19: 0 20: 0 Wrote the ASCII file "reid_gurobi.txt" gurobi_solution_read_demo(): Normal end of execution. gurobi_solution_read_demo(): MATLAB version. GUROBI solution file to be read is "pent5x6_gurobi.sol" gurobi_solution_read: Extract information from GUROBI file "pent5x6_gurobi.sol". The file contains 178 lines of information. The file contains 6 nonzero values. X array size adjusted to 176 Data is rather large, so will not be printed out. Wrote the ASCII file "pent5x6_gurobi.txt" gurobi_solution_read_demo(): Normal end of execution. gurobi_solution_read_demo(): MATLAB version. GUROBI solution file to be read is "pent18x30_gurobi.sol" gurobi_solution_read: Extract information from GUROBI file "pent18x30_gurobi.sol". The file contains 28457 lines of information. The file contains 108 nonzero values. X array size adjusted to 28456 Data is rather large, so will not be printed out. Wrote the ASCII file "pent18x30_gurobi.txt" gurobi_solution_read_demo(): Normal end of execution. GUROBI_SOLUTION_READ_TEST: Normal end of execution. i4mat_is_ternary_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 i4mat_is_ternary() is TRUE if an I4MAT only contains -1, 0, and +1 entries. Matrix: Col: 1 2 3 Row 1: 0 -1 0 2: 1 0 1 X is ternary Matrix: Col: 1 2 3 Row 1: 1 1 1 2: 1 1 1 X is ternary Matrix: Col: 1 2 3 Row 1: 0 1 0 2: -1 2 -1 X is NOT ternary. pariomino_area_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_area() returns the area of a pariomino. pariomino #1: WBWB Area is 4 pariomino #2: BW. .B. .WB Area is 5 pariomino #3: W.. BWB Area is 4 pariomino #4: ....B. W...WB B.BWB. W.W.W. BWBWB. Area is 16 pariomino_area_test(): Normal end of execution. pariomino_condense_test: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_condense() "cleans up" a matrix that represents a pariomino by eliminating initial and final: rows and columns of zeros. The initial (3,3) pariomino P: .BW BW. .B. The condensed (3,3) pariomino Q: .BW BW. .B. The initial (4,4) pariomino P: .... .WB. .BW. .... The condensed (2,2) pariomino Q: WB BW The initial (3,4) pariomino P: WB.B .... WB.B The condensed (3,4) pariomino Q: WB.B .... WB.B The initial (2,4) pariomino P: .... .... The condensed (0,0) pariomino Q: [ Null matrix ] pariomino_condense_test: Normal end of execution. pariomino_embed_list_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_embed_list() lists the offsets used to embed a fixed pariomino in a region. region R: .WBW WB.B BWBW W.WB pariomino P: .W .B BW P can be embedded in R in 2 ways Embedding number 1: .*BW W*.B **BW W.WB Embedding number 2: .WB* WB.* BW** W.WB pariomino_embed_list_test(): Normal end of execution. pariomino_embed_number_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_embed_number() reports the number of ways a fixed pariomino can be embedded in a region. Region R: .BWB BW.W WBWB B.BW Pariomino P: .B .W WB P can be embedded in R in 2 ways Pariomino P: .W .B BW P can be embedded in R in 1 ways pariomino_embed_number_test(): Normal end of execution. pariomino_equal_test MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_equal() determines if pariominoes are equal. The pariomino P1: W.WB BWB. .BW. The pariomino P2: W.WB BWB. .BW. The pariomino P3: W.WB. BWB.. .BW.. The pariomino P4: W.WB BWB. .BW. P1 == P1? true P1 == P2? false P1 == P3? false P1 == P4? true pariomino_equal_test Normal end of execution. pariomino_index_test MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_index() assigns an index to each nonzero entry of a pariomino. The pariomino P: W.WB BWB. .BW. PIN: Index vector for P: 1 0 2 3 4 5 6 0 0 7 8 0 pariomino_index_test Normal end of execution. pariomino_lp_write_test01: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_lp_write() writes an LP file associated with a binary programming problem for tiling a region with copies of a single pariomino. pariomino_lp_write created the LP file "reid.lp" pariomino_lp_write_test: Normal end of execution. pariomino_lp_write_test02: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_lp_write() writes an LP file associated with a binary programming problem for tiling a region with copies of several pariominoes. Region R: BWBW WBWB pariomino N: B pariomino O: WBW pariomino P: ..B WBW System matrix A and right hand side B: 1: 1 0 0 0 0 0 0 0 1 0 1 2: 0 0 0 0 1 0 0 1 0 1 1 3: 0 1 0 0 1 0 1 1 0 1 1 4: 0 0 0 0 1 0 0 1 0 1 1 5: 0 0 0 0 0 1 1 0 1 0 1 6: 0 0 1 0 0 1 1 1 1 0 1 7: 0 0 0 0 0 1 1 0 1 0 1 8: 0 0 0 1 0 0 0 0 0 1 1 9: 1 1 1 1 0 0 0 0 0 0 1 10: 0 0 0 0 1 1 0 0 0 0 1 11: 0 0 0 0 0 0 1 1 1 1 1 pariomino_lp_write created the LP file "2x4.lp" pariomino_lp_write_test02: Normal end of execution. pariomino_matrix_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_matrix() sets up the linear system associated with a pariomino tiling problem. Region R: WBWB BWBW pariomino N: B pariomino O: WBW pariomino P: ..B WBW System matrix A and right hand side B: 1: 0 0 0 0 1 0 0 1 0 1 1 2: 1 0 0 0 1 0 0 1 1 1 1 3: 0 0 0 0 1 0 0 1 0 1 1 4: 0 1 0 0 0 0 1 0 0 0 1 5: 0 0 1 0 0 0 0 1 0 0 1 6: 0 0 0 0 0 1 1 0 1 0 1 7: 0 0 0 1 0 1 1 0 1 1 1 8: 0 0 0 0 0 1 1 0 1 0 1 9: 1 1 1 1 0 0 0 0 0 0 1 10: 0 0 0 0 1 1 0 0 0 0 1 11: 0 0 0 0 0 0 1 1 1 1 1 Linear system saved in LP file:"2x4.lp" pariomino_matrix_test(): Normal end of execution. pariomino_matrix_reid_test: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_matrix_reid() sets up the linear system associated with the Reid pariomino tiling problem. System matrix A and right hand side B: 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 pariomino_matrix_reid_test: Normal end of execution. pariomino_parity_test MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_parity() returns the parity of a pariomino. pariomino #1: WBWB parity is 0 pariomino #2: BW. .B. .WB parity is -1 pariomino #3: W.. BWB parity is 0 pariomino #4: ....B. W...WB B.BWB. W.W.W. BWBWB. parity is 0 pariomino_parity_test Normal end of execution. pariomino_print_test MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_print() prints a pariomino. pariomino #1: WBWB pariomino #2: BW. .B. .WB pariomino #3: W.. BWB pariomino #4: ....B. W...WB B.BWB. W.W.W. BWBWB. pariomino_print_test Normal end of execution. pariomino_reverse_test MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_reverse() reverses the parity of the cells of a pariomino. pariomino: ....B. W...WB B.BWB. W.W.W. BWBWB. reverse parity pariomino: ....W. B...BW W.WBW. B.B.B. WBWBW. pariomino_reverse_test Normal end of execution. pariomino_tiling_plot_test: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_tiling_plot() plots tilings of a given region R, using a set of pariominoes P. pariomino_tiling_plot_test01 Given solutions for the 2x4 pariomino tiling problem, plot corresponding tilings. Region R: WBWB BWBW pariomino N: B pariomino O: WBW pariomino P: ..B WBW Saved plot as "twobyfour01.png" Saved plot as "twobyfour02.png" pariomino_tiling_plot_test02 Given 4 solutions for the 2x4 pariomino tiling problem, plot corresponding tilings. Region R: W... B... WBWB BWBW pariomino N: ..B WBW pariomino O: BWB pariomino P: .W WB Saved plot as "fourbyfour01.png" pariomino_tiling_plot_test: Normal end of execution. pariomino_tiling_print_test: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_tiling_print() prints tilings of a given region R, using a set of pariominoes P. pariomino_tiling_print_test01 Given solutions for the 2x4 pariomino tiling problem, print a representation of the tiling corresponding to each solution. Region R: WBWB BWBW pariomino N: B pariomino O: WBW pariomino P: ..B WBW 2x4 Tiling #1 Numeric Labels 2 2 2 3 1 3 3 3 2x4 Tiling #1 "Colors" 2 2 2 3 1 3 3 3 2x4 Tiling #2 Numeric Labels 3 3 3 1 3 2 2 2 2x4 Tiling #2 "Colors" 3 3 3 1 3 2 2 2 pariomino_tiling_print_test02 MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 Given 4 solutions for the 2x4 pariomino tiling problem, print corresponding tilings. Region R: W... B... WBWB BWBW pariomino N: ..B WBW pariomino O: BWB pariomino P: .W WB 4x4 Pariomino Tiling Numeric Labels 1 0 0 0 1 0 0 0 1 1 3 3 2 2 2 3 4x4 Pariomino Tiling "Colors" 1 0 0 0 1 0 0 0 1 1 3 3 2 2 2 3 pariomino_tiling_print_test: Normal end of execution. pariomino_tiling_solver_test: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_tiling_solver() sets up and solves the linear system associated with a pariomino tiling problem. pariomino_tiling_solver_test01: pariomino_tiling_solver solves a pariomino tiling problem for a 2x4 rectangle. Region R: BWBW WBWB pariomino N: B pariomino O: WBW pariomino P: ..B WBW 11x10 system matrix A and right hand side B: 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 2 binary solutions were found. Binary solution vectors x: 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 Check Loo residuals ||Ax-b||: All solutions had zero residual. Check Loo residuals ||Ax-b||: All solutions had zero residual. Translate each correct solution into a tiling: Tiling based on solution 1 Numeric Labels 3 2 2 2 3 3 3 1 Tiling based on solution 1 "Colors" 3 2 2 2 3 3 3 1 Tiling based on solution 2 Numeric Labels 1 3 3 3 2 2 2 3 Tiling based on solution 2 "Colors" 1 3 3 3 2 2 2 3 pariomino -N: W pariomino -O: BWB pariomino -P: ..W BWB 11x10 system matrix A and right hand side B: 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 2 binary solutions were found. Binary solution vectors x: 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 Check Loo residuals ||Ax-b||: All solutions had zero residual. Check Loo residuals ||Ax-b||: All solutions had zero residual. Translate each correct solution into a tiling: Tiling based on solution 1 Numeric Labels 2 2 2 3 1 3 3 3 Tiling based on solution 1 "Colors" 2 2 2 3 1 3 3 3 Tiling based on solution 2 Numeric Labels 3 3 3 1 3 2 2 2 Tiling based on solution 2 "Colors" 3 3 3 1 3 2 2 2 pariomino_tiling_solver_test02: pariomino_tiling_solver solves a pariomino tiling problem for a subset of a 4x4 rectangle. Region R: W... B... WBWB BWBW pariomino N: ..B WBW pariomino O: BWB pariomino P: .W WB 13x15 system matrix A and right hand side B: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 binary solutions were found. Binary solution vectors x: 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 Check Loo residuals ||Ax-b||: All solutions had zero residual. Check Loo residuals ||Ax-b||: All solutions had zero residual. Translate each correct solution into a tiling: Tiling based on solution 1 Numeric Labels 1 0 0 0 1 0 0 0 1 1 3 3 2 2 2 3 Tiling based on solution 1 "Colors" 1 0 0 0 1 0 0 0 1 1 3 3 2 2 2 3 pariomino_tiling_solver_test: Normal end of execution. pariomino_transform_test: MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_transform() transforms a pariomino. Generate all 8 combinations of rotation and reflection applied to a pariomino represented by a -1/0/+1 matrix. The given pariomino P: .BW BW. .B. P after 0 reflections and 0 rotations: .BW BW. .B. P after 0 reflections and 1 rotations: W.. BWB .B. P after 0 reflections and 2 rotations: .B. .WB WB. P after 0 reflections and 3 rotations: .B. BWB ..W P after 1 reflections and 0 rotations: WB. .WB .B. P after 1 reflections and 1 rotations: .B. BWB W.. P after 1 reflections and 2 rotations: .B. BW. .BW P after 1 reflections and 3 rotations: ..W BWB .B. pariomino_transform_test: Normal end of execution. pariomino_variants_test01 MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_variants() determines variants of an array of pariominoes. Region in which pariominoes must fit: 3x5 array of 1 pariominoes: pariomino #1 WBWBW BWBWB WBWBW Array of pariominoes to be analyzed: 3x5 array of 3 pariominoes: pariomino #1 WBWB pariomino #2 WB. .W. .BW pariomino #3 W.. BWB The pariominoes have 14 variants that fit the region Variant 1 of pariomino 1 WBWB Variant 2 of pariomino 1 BWBW Variant 3 of pariomino 2 WB. .W. .BW Variant 4 of pariomino 2 ..W BWB W.. Variant 5 of pariomino 2 .BW .W. WB. Variant 6 of pariomino 2 W.. BWB ..W Variant 7 of pariomino 3 W.. BWB Variant 8 of pariomino 3 .B .W WB Variant 9 of pariomino 3 BWB ..W Variant 10 of pariomino 3 BW W. B. Variant 11 of pariomino 3 ..W BWB Variant 12 of pariomino 3 WB .W .B Variant 13 of pariomino 3 BWB W.. Variant 14 of pariomino 3 B. W. BW pariomino_variants_test02 MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 pariomino_variants() determines variants of an array of pariominoes. Region in which pariominoes must fit: 2x4 array of 1 pariominoes: pariomino #1 WBWB BWBW Array of pariominoes to be analyzed: 2x4 array of 3 pariominoes: pariomino #1 B pariomino #2 WBW pariomino #3 ..B WBW The pariominoes have 6 variants that fit the region Variant 1 of pariomino 1 B Variant 2 of pariomino 2 WBW Variant 3 of pariomino 3 ..B WBW Variant 4 of pariomino 3 WBW B.. Variant 5 of pariomino 3 B.. WBW Variant 6 of pariomino 3 WBW ..B polyomino_charge_test(): MATLAB/Octave version 9.8.0.1380330 (R2020a) Update 2 polyomino_charge() charges the cells of a polyomino, creating a pariomino. polyomino: 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 resulting pariomino: ....W. B...BW W.WBW. B.B.B. WBWBW. polyomino_charge_test(): Normal end of execution. scip_solution_read_test(): scip_solution_read() extracts the solution vector X returned by SCIP for a particular polyomino tiling problem. scip_solution_read(): Extract solution information from an SCIP solution file. File contains 6 lines Number of nonzero entries in X is 4 Solution_data: 1 0 1 0 1 0 0 1 0 0 Wrote the ASCII file "reid_scip.txt" scip_solution_read_test(): Normal end of execution. pariomino_test(): Normal end of execution. 10-Jan-2022 17:45:34