Add layout bin.
This commit is contained in:
		
							parent
							
								
									e9377de01f
								
							
						
					
					
						commit
						b79d0dffb6
					
				
					 4 changed files with 331 additions and 58 deletions
				
			
		
							
								
								
									
										277
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										277
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							|  | @ -2,6 +2,15 @@ | |||
| # It is not intended for manual editing. | ||||
| version = 3 | ||||
| 
 | ||||
| [[package]] | ||||
| name = "addr2line" | ||||
| version = "0.24.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" | ||||
| dependencies = [ | ||||
|  "gimli", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "adler" | ||||
| version = "1.0.2" | ||||
|  | @ -147,6 +156,30 @@ dependencies = [ | |||
|  "arrayvec", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "backtrace" | ||||
| version = "0.3.74" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" | ||||
| dependencies = [ | ||||
|  "addr2line", | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "miniz_oxide 0.8.0", | ||||
|  "object", | ||||
|  "rustc-demangle", | ||||
|  "windows-targets 0.52.6", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "backtrace-ext" | ||||
| version = "0.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50" | ||||
| dependencies = [ | ||||
|  "backtrace", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "base64" | ||||
| version = "0.21.7" | ||||
|  | @ -165,6 +198,12 @@ version = "1.3.2" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bitflags" | ||||
| version = "2.6.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bitstream-io" | ||||
| version = "2.5.3" | ||||
|  | @ -240,8 +279,8 @@ version = "2.34.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
|  "textwrap", | ||||
|  "bitflags 1.3.2", | ||||
|  "textwrap 0.11.0", | ||||
|  "unicode-width", | ||||
| ] | ||||
| 
 | ||||
|  | @ -406,6 +445,16 @@ version = "1.0.1" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "errno" | ||||
| version = "0.3.9" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" | ||||
| dependencies = [ | ||||
|  "libc", | ||||
|  "windows-sys 0.52.0", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "exr" | ||||
| version = "1.72.0" | ||||
|  | @ -431,6 +480,7 @@ dependencies = [ | |||
|  "criterion", | ||||
|  "flate2", | ||||
|  "image", | ||||
|  "miette", | ||||
|  "rand", | ||||
|  "serde", | ||||
|  "serde_json", | ||||
|  | @ -487,6 +537,12 @@ dependencies = [ | |||
|  "weezl", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gimli" | ||||
| version = "0.31.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "half" | ||||
| version = "1.8.3" | ||||
|  | @ -584,6 +640,12 @@ dependencies = [ | |||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "is_ci" | ||||
| version = "1.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "is_terminal_polyfill" | ||||
| version = "1.70.1" | ||||
|  | @ -667,6 +729,12 @@ dependencies = [ | |||
|  "once_cell", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "linux-raw-sys" | ||||
| version = "0.4.14" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lock_api" | ||||
| version = "0.4.12" | ||||
|  | @ -707,6 +775,37 @@ version = "2.7.4" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "miette" | ||||
| version = "7.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1" | ||||
| dependencies = [ | ||||
|  "backtrace", | ||||
|  "backtrace-ext", | ||||
|  "cfg-if", | ||||
|  "miette-derive", | ||||
|  "owo-colors", | ||||
|  "supports-color", | ||||
|  "supports-hyperlinks", | ||||
|  "supports-unicode", | ||||
|  "terminal_size", | ||||
|  "textwrap 0.16.1", | ||||
|  "thiserror", | ||||
|  "unicode-width", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "miette-derive" | ||||
| version = "7.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "minimal-lexical" | ||||
| version = "0.2.1" | ||||
|  | @ -804,6 +903,15 @@ dependencies = [ | |||
|  "autocfg", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "object" | ||||
| version = "0.36.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" | ||||
| dependencies = [ | ||||
|  "memchr", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "once_cell" | ||||
| version = "1.19.0" | ||||
|  | @ -816,6 +924,12 @@ version = "11.1.4" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "owo-colors" | ||||
| version = "4.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "paste" | ||||
| version = "1.0.15" | ||||
|  | @ -862,7 +976,7 @@ version = "0.17.13" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
|  "bitflags 1.3.2", | ||||
|  "crc32fast", | ||||
|  "fdeflate", | ||||
|  "flate2", | ||||
|  | @ -1067,6 +1181,25 @@ dependencies = [ | |||
|  "bytemuck", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustc-demangle" | ||||
| version = "0.1.24" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustix" | ||||
| version = "0.38.37" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" | ||||
| dependencies = [ | ||||
|  "bitflags 2.6.0", | ||||
|  "errno", | ||||
|  "libc", | ||||
|  "linux-raw-sys", | ||||
|  "windows-sys 0.52.0", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ryu" | ||||
| version = "1.0.18" | ||||
|  | @ -1179,6 +1312,12 @@ version = "1.13.2" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "smawk" | ||||
| version = "0.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "spin" | ||||
| version = "0.9.8" | ||||
|  | @ -1194,6 +1333,27 @@ version = "0.11.1" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "supports-color" | ||||
| version = "3.0.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77" | ||||
| dependencies = [ | ||||
|  "is_ci", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "supports-hyperlinks" | ||||
| version = "3.0.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2c0a1e5168041f5f3ff68ff7d95dcb9c8749df29f6e7e89ada40dd4c9de404ee" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "supports-unicode" | ||||
| version = "3.0.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "syn" | ||||
| version = "2.0.77" | ||||
|  | @ -1233,6 +1393,16 @@ dependencies = [ | |||
|  "winapi-util", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "terminal_size" | ||||
| version = "0.3.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" | ||||
| dependencies = [ | ||||
|  "rustix", | ||||
|  "windows-sys 0.48.0", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "textwrap" | ||||
| version = "0.11.0" | ||||
|  | @ -1242,6 +1412,17 @@ dependencies = [ | |||
|  "unicode-width", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "textwrap" | ||||
| version = "0.16.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" | ||||
| dependencies = [ | ||||
|  "smawk", | ||||
|  "unicode-linebreak", | ||||
|  "unicode-width", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "thiserror" | ||||
| version = "1.0.63" | ||||
|  | @ -1323,6 +1504,12 @@ version = "1.0.13" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "unicode-linebreak" | ||||
| version = "0.1.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "unicode-width" | ||||
| version = "0.1.14" | ||||
|  | @ -1476,13 +1663,22 @@ version = "0.4.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-sys" | ||||
| version = "0.48.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" | ||||
| dependencies = [ | ||||
|  "windows-targets 0.48.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-sys" | ||||
| version = "0.52.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" | ||||
| dependencies = [ | ||||
|  "windows-targets", | ||||
|  "windows-targets 0.52.6", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -1491,7 +1687,22 @@ version = "0.59.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" | ||||
| dependencies = [ | ||||
|  "windows-targets", | ||||
|  "windows-targets 0.52.6", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-targets" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" | ||||
| dependencies = [ | ||||
|  "windows_aarch64_gnullvm 0.48.5", | ||||
|  "windows_aarch64_msvc 0.48.5", | ||||
|  "windows_i686_gnu 0.48.5", | ||||
|  "windows_i686_msvc 0.48.5", | ||||
|  "windows_x86_64_gnu 0.48.5", | ||||
|  "windows_x86_64_gnullvm 0.48.5", | ||||
|  "windows_x86_64_msvc 0.48.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -1500,28 +1711,46 @@ version = "0.52.6" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" | ||||
| dependencies = [ | ||||
|  "windows_aarch64_gnullvm", | ||||
|  "windows_aarch64_msvc", | ||||
|  "windows_i686_gnu", | ||||
|  "windows_aarch64_gnullvm 0.52.6", | ||||
|  "windows_aarch64_msvc 0.52.6", | ||||
|  "windows_i686_gnu 0.52.6", | ||||
|  "windows_i686_gnullvm", | ||||
|  "windows_i686_msvc", | ||||
|  "windows_x86_64_gnu", | ||||
|  "windows_x86_64_gnullvm", | ||||
|  "windows_x86_64_msvc", | ||||
|  "windows_i686_msvc 0.52.6", | ||||
|  "windows_x86_64_gnu 0.52.6", | ||||
|  "windows_x86_64_gnullvm 0.52.6", | ||||
|  "windows_x86_64_msvc 0.52.6", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_gnullvm" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_gnullvm" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_msvc" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_msvc" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnu" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnu" | ||||
| version = "0.52.6" | ||||
|  | @ -1534,24 +1763,48 @@ version = "0.52.6" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_msvc" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_msvc" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnu" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnu" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnullvm" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnullvm" | ||||
| version = "0.52.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_msvc" | ||||
| version = "0.48.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_msvc" | ||||
| version = "0.52.6" | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ base64 = "0.21.5" | |||
| clap = { version = "4.4.8", features = ["derive"] } | ||||
| flate2 = "1.0.28" | ||||
| image = "0.25.2" | ||||
| miette = { version = "7.2.0", features = ["fancy"] } | ||||
| rand = { version = "0.8.5", features = ["small_rng"] } | ||||
| serde = { version = "1.0.192", features = ["derive"] } | ||||
| serde_json = "1.0.108" | ||||
|  |  | |||
|  | @ -1,46 +0,0 @@ | |||
| use clap::Parser; | ||||
| use factorio_blueprint::{ | ||||
|     common::visualize::Visualize, | ||||
|     layout::{genetic_algorithm2, GeneticAlgorithm, PathLayout}, | ||||
| }; | ||||
| use rand::{rngs::SmallRng, SeedableRng}; | ||||
| 
 | ||||
| #[derive(Debug, Parser)] | ||||
| struct Args { | ||||
|     #[clap(default_value_t = 0)] | ||||
|     seed: u64, | ||||
| } | ||||
| 
 | ||||
| fn main() { | ||||
|     let args = Args::parse(); | ||||
| 
 | ||||
|     let file = std::fs::File::open("layout3.yml").unwrap(); | ||||
| 
 | ||||
|     let p = serde_yaml::from_reader(file).unwrap(); | ||||
| 
 | ||||
|     let mut rng = SmallRng::seed_from_u64(args.seed); | ||||
| 
 | ||||
|     dbg!(&p); | ||||
| 
 | ||||
|     // let mut g = GeneticAlgorithm::new(&p, 20, 2, 0, &mut rng);
 | ||||
| 
 | ||||
|     // for i in 0..100 {
 | ||||
|     //     println!("Generatrion {i}");
 | ||||
|     //     g.generation(&mut rng);
 | ||||
|     // }
 | ||||
| 
 | ||||
|     // g.output_population();
 | ||||
| 
 | ||||
|     let mut m: Option<PathLayout> = None; | ||||
|     for _ in 0..1 { | ||||
|         let g = genetic_algorithm2(&p, 10, 320, &mut rng); | ||||
| 
 | ||||
|         g.print_visualization(); | ||||
|         g.png_visualization("test.png"); | ||||
|         if m.as_ref().is_none_or(|m| g.score() < m.score()) { | ||||
|             m = Some(g); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     m.unwrap().print_visualization(); | ||||
| } | ||||
							
								
								
									
										65
									
								
								src/bin/layout.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/bin/layout.rs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,65 @@ | |||
| use clap::{Parser, Subcommand}; | ||||
| use factorio_blueprint::{ | ||||
|     common::visualize::Visualize, | ||||
|     layout::{genetic_algorithm2, GeneticAlgorithm, PathLayout}, | ||||
| }; | ||||
| use miette::{Context, IntoDiagnostic, Result}; | ||||
| use rand::{rngs::SmallRng, SeedableRng}; | ||||
| use std::path::PathBuf; | ||||
| 
 | ||||
| #[derive(Debug, Parser)] | ||||
| struct Args { | ||||
|     #[clap(short, long, default_value_t = 0)] | ||||
|     seed: u64, | ||||
| 
 | ||||
|     problem: PathBuf, | ||||
| 
 | ||||
|     #[command(subcommand)] | ||||
|     subcommand: Commands, | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Subcommand)] | ||||
| enum Commands { | ||||
|     V1, | ||||
|     V2, | ||||
| } | ||||
| 
 | ||||
| fn main() -> Result<()> { | ||||
|     let args = Args::parse(); | ||||
| 
 | ||||
|     let mut rng = SmallRng::seed_from_u64(args.seed); | ||||
|     let file = std::fs::File::open(args.problem) | ||||
|         .into_diagnostic() | ||||
|         .context("Failed to open problem file.")?; | ||||
|     let p = serde_yaml::from_reader(file) | ||||
|         .into_diagnostic() | ||||
|         .context("Failed to parse yaml.")?; | ||||
| 
 | ||||
|     match args.subcommand { | ||||
|         Commands::V1 => { | ||||
|             let mut g = GeneticAlgorithm::new(&p, 20, 2, 0, &mut rng); | ||||
| 
 | ||||
|             for i in 0..100 { | ||||
|                 println!("Generatrion {i}"); | ||||
|                 g.generation(&mut rng); | ||||
|             } | ||||
| 
 | ||||
|             g.output_population(); | ||||
|         } | ||||
|         Commands::V2 => { | ||||
|             let mut m: Option<PathLayout> = None; | ||||
|             for _ in 0..20 { | ||||
|                 let g = genetic_algorithm2(&p, 10, 320, &mut rng); | ||||
| 
 | ||||
|                 g.print_visualization(); | ||||
|                 if m.as_ref().is_none_or(|m| g.score() < m.score()) { | ||||
|                     m = Some(g); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             m.unwrap().print_visualization(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     Ok(()) | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue