mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	[yul-phaser] Base class for fitness metrics
This commit is contained in:
		
							parent
							
								
									357c936243
								
							
						
					
					
						commit
						096129fbc4
					
				| @ -151,6 +151,7 @@ set(yul_phaser_sources | ||||
|     # My current workaround is just to include its source files here but this introduces | ||||
|     # unnecessary duplication. Create a library or find a way to reuse the list in both places. | ||||
|     ../tools/yulPhaser/Chromosome.cpp | ||||
|     ../tools/yulPhaser/FitnessMetrics.cpp | ||||
|     ../tools/yulPhaser/Population.cpp | ||||
|     ../tools/yulPhaser/Program.cpp | ||||
|     ../tools/yulPhaser/SimulationRNG.cpp | ||||
|  | ||||
| @ -17,6 +17,8 @@ add_executable(yul-phaser | ||||
| 	yulPhaser/main.cpp | ||||
| 	yulPhaser/Population.h | ||||
| 	yulPhaser/Population.cpp | ||||
| 	yulPhaser/FitnessMetrics.h | ||||
| 	yulPhaser/FitnessMetrics.cpp | ||||
| 	yulPhaser/Chromosome.h | ||||
| 	yulPhaser/Chromosome.cpp | ||||
| 	yulPhaser/Program.h | ||||
|  | ||||
							
								
								
									
										18
									
								
								tools/yulPhaser/FitnessMetrics.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								tools/yulPhaser/FitnessMetrics.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| /*
 | ||||
| 	This file is part of solidity. | ||||
| 
 | ||||
| 	solidity is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU General Public License as published by | ||||
| 	the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 
 | ||||
| 	solidity is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU General Public License for more details. | ||||
| 
 | ||||
| 	You should have received a copy of the GNU General Public License | ||||
| 	along with solidity.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| 
 | ||||
| #include <tools/yulPhaser/FitnessMetrics.h> | ||||
							
								
								
									
										48
									
								
								tools/yulPhaser/FitnessMetrics.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								tools/yulPhaser/FitnessMetrics.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | ||||
| /*
 | ||||
| 	This file is part of solidity. | ||||
| 
 | ||||
| 	solidity is free software: you can redistribute it and/or modify | ||||
| 	it under the terms of the GNU General Public License as published by | ||||
| 	the Free Software Foundation, either version 3 of the License, or | ||||
| 	(at your option) any later version. | ||||
| 
 | ||||
| 	solidity is distributed in the hope that it will be useful, | ||||
| 	but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| 	GNU General Public License for more details. | ||||
| 
 | ||||
| 	You should have received a copy of the GNU General Public License | ||||
| 	along with solidity.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| /**
 | ||||
|  * Contains an abstract base class representing a fitness metric and its concrete implementations. | ||||
|  */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <tools/yulPhaser/Chromosome.h> | ||||
| 
 | ||||
| #include <cstddef> | ||||
| 
 | ||||
| namespace solidity::phaser | ||||
| { | ||||
| 
 | ||||
| /**
 | ||||
|  * Abstract base class for fitness metrics. | ||||
|  * | ||||
|  * The main feature is the @a evaluate() method that can tell how good a given chromosome is. | ||||
|  * The lower the value, the better the fitness is. The result should be deterministic and depend | ||||
|  * only on the chromosome and metric's state (which is constant). | ||||
|  */ | ||||
| class FitnessMetric | ||||
| { | ||||
| public: | ||||
| 	FitnessMetric() = default; | ||||
| 	FitnessMetric(FitnessMetric const&) = delete; | ||||
| 	FitnessMetric& operator=(FitnessMetric const&) = delete; | ||||
| 	virtual ~FitnessMetric() = default; | ||||
| 
 | ||||
| 	virtual size_t evaluate(Chromosome const& _chromosome) const = 0; | ||||
| }; | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user