Skip to content

Commit 3df6983

Browse files
committed
Simple target image experimentation statistics
1 parent aeed7fd commit 3df6983

File tree

4,280 files changed

+89786
-1176811
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,280 files changed

+89786
-1176811
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ export_presets.cfg
1313
.mono/
1414
data_*/
1515
mono_crash.*.json
16+
.venv
62 KB
Loading
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[remap]
2+
3+
importer="texture"
4+
type="CompressedTexture2D"
5+
uid="uid://dise07avq6mnd"
6+
path="res://.godot/imported/mona_lisa_50_ind.png-70063c6cce41c9465c264f6e072cce1c.ctex"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://art/test/mona_lisa_50_ind.png"
14+
dest_files=["res://.godot/imported/mona_lisa_50_ind.png-70063c6cce41c9465c264f6e072cce1c.ctex"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/normal_map=0
23+
compress/channel_pack=0
24+
mipmaps/generate=false
25+
mipmaps/limit=-1
26+
roughness/mode=0
27+
roughness/src_normal=""
28+
process/fix_alpha_border=true
29+
process/premult_alpha=false
30+
process/normal_map_invert_y=false
31+
process/hdr_as_srgb=false
32+
process/hdr_clamp_exposure=false
33+
process/size_limit=0
34+
detect_3d/compress_to=1

code/genart/generation/individual_generator/genetic/genetic_individual_generator.gd

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ func _generate() -> Individual:
4545
population,
4646
population.size())
4747

48+
#genetic_params.mutation_factor = 1.0 - 0.5 * float(generation) / genetic_params.generation_count
49+
4850
for i in range(population.size()):
4951
var parent_a = mating_pool.pick_random()
5052
var parent_b = mating_pool.pick_random()
@@ -110,7 +112,9 @@ func _setup():
110112
_mutation_strategy = load("res://generation/individual_generator/genetic/mutation/random_mutation_strategy.gd").new()
111113
_:
112114
push_error("Mutation strategy not implemented")
113-
115+
116+
_mutation_strategy.set_params(genetic_params)
117+
114118
# Creates survivor selection strategy --------------------------------------
115119
match genetic_params.survivor_selection_strategy:
116120
SurvivorSelectionStrategy.Type.KEEP_CHILDREN:

code/genart/generation/individual_generator/genetic/genetic_individual_generator_params.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class_name GeneticIndividualGeneratorParams extends Resource
44
@export var population_size: int = 50
55
@export var fitness_calculator := FitnessCalculator.Type.MPA_RGB
66
@export var mutation_rate: float = 0.05
7+
@export var mutation_factor: float = 1.0
78

89
@export var selection_strategy := SelectionStrategy.Type.Ranking
910
@export var crossover_strategy := CrossoverStrategy.Type.ATTRIBUTE_SPECIFIC_BLEND_RANDOM

code/genart/generation/individual_generator/genetic/mutation/mutation_strategy_base.gd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,6 @@ enum Type
88

99
func mutate(individual: Individual) -> void:
1010
return
11+
12+
func set_params(params: GeneticIndividualGeneratorParams) -> void:
13+
pass
Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,29 @@
11
extends MutationStrategy
22

3+
var _genetic_params: GeneticIndividualGeneratorParams
34

45
func mutate(individual: Individual) -> void:
56

67
# Individual size is scaled by [-50%, 50%]
7-
individual.size.x *= randf_range(0.75, 1.5)
8-
individual.size.y *= randf_range(0.75, 1.5)
8+
9+
individual.size.x *= randf_range(1.0 - 0.25 * _genetic_params.mutation_factor, 1.0 + 0.5 * _genetic_params.mutation_factor) * _genetic_params.mutation_factor
10+
individual.size.y *= randf_range(1.0 - 0.25 * _genetic_params.mutation_factor, 1.0 + 0.5 * _genetic_params.mutation_factor) * _genetic_params.mutation_factor
911

1012
# Position mutation is proportional to it's size
1113
individual.position.x += randf_range(
1214
-individual.size.x * 0.5,
1315
individual.size.x * 0.5
14-
)
16+
) * _genetic_params.mutation_factor
1517
individual.position.y += randf_range(
1618
-individual.size.y * 0.5,
17-
individual.size.x * 0.5
18-
)
19+
individual.size.y * 0.5
20+
) * _genetic_params.mutation_factor
21+
22+
individual.rotation = fmod(
23+
individual.rotation +
24+
randf_range(-PI * 0.5, PI * 0.5) *
25+
_genetic_params.mutation_factor, 2 * PI)
26+
1927

20-
individual.rotation += randf_range(-PI * 0.5, PI * 0.5)
28+
func set_params(params: GeneticIndividualGeneratorParams) -> void:
29+
_genetic_params = params

code/genart/generation/individual_generator/individual_generator.gd

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ func clear_source_texture():
7474
var _current_sampler_strategy : ColorSamplerStrategy.Type
7575

7676
func _setup():
77+
78+
if source_texture == null:
79+
clear_source_texture()
80+
7781
_individual_renderer.source_texture = source_texture
7882

7983
# Setup populator params ---------------------------------------------------
@@ -125,6 +129,9 @@ func _fix_individual_properties(individual: Individual):
125129
var aspect = float(individual.texture.get_height()) / individual.texture.get_width()
126130
individual.size.y = individual.size.x * aspect
127131

132+
individual.size.x = max(individual.size.x, 1.0)
133+
individual.size.y = max(individual.size.y, 1.0)
134+
128135
func _init() -> void:
129136
_subrect_color_sampler = load("res://generation/average_color_sampler/avg_subrect/average_color_subrect_sampler_compute.gd").new()
130137
_individual_renderer = load("res://generation/individual/individual_renderer.gd").new()

code/genart/generation/settings.tres

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@ fitness_calculator = 1
2121

2222
[sub_resource type="Resource" id="Resource_ixjp0"]
2323
script = ExtResource("6_web0x")
24-
elitisim_rate = 0.1
24+
elitisim_rate = 0.25
2525
tournament_size = 10
2626

2727
[sub_resource type="Resource" id="Resource_dnu0u"]
2828
script = ExtResource("5_4egqq")
29-
generation_count = 6
30-
population_size = 50
29+
generation_count = 20
30+
population_size = 150
3131
fitness_calculator = 1
3232
mutation_rate = 0.05
33+
mutation_factor = 1.0
3334
selection_strategy = 0
3435
crossover_strategy = 3
3536
mutation_strategy = 1
@@ -44,15 +45,15 @@ position_bound_max = Vector2i(640, 968)
4445
size_bound_min = Vector2i(8, 8)
4546
size_bound_max = Vector2i(968, 968)
4647

47-
[sub_resource type="Texture2D" id="Texture2D_tfdq7"]
48+
[sub_resource type="Texture2D" id="Texture2D_4i2tk"]
4849
resource_local_to_scene = false
4950
resource_name = ""
5051
script = ExtResource("8_v6ont")
5152

5253
[sub_resource type="Resource" id="Resource_w27th"]
5354
script = ExtResource("9_iepvh")
5455
populator_params = SubResource("Resource_2sdn3")
55-
target_texture = SubResource("Texture2D_tfdq7")
56+
target_texture = SubResource("Texture2D_4i2tk")
5657
color_sampler = 1
5758
clear_color_average = true
5859
keep_aspect_ratio = true
@@ -66,7 +67,7 @@ genetic_params = SubResource("Resource_dnu0u")
6667

6768
[sub_resource type="Resource" id="Resource_urrnu"]
6869
script = ExtResource("11_d1ait")
69-
individual_count = 100
70+
individual_count = 200
7071
execution_time = 10.0
7172
target_fitness = 0.9
7273

0 commit comments

Comments
 (0)