@gpcstargate and others interested:
I tried setting a strict rule of no poi repetition inside the same city, but the result is large empty lots with no pois, which is very ugly. For now the system will remain as it is. If you really want to avoid repetition I suggest small cities, small towns, small vllages, large grid size, and long poi list. These settings will reduce the chances of repetition.
Any expert programmer that has an idea for an algorithm, please share. Keep in mind that when picking a poi for a specific lot there are 5 requirements:
1) it must fit in the lot,
2) it must be a city poi if building a city, or a town poi if building a town,
3) it must be compatible with the zone(downtown,iindustrial...) of the city,
4) it must be compatible with the biome
5) it should avoid repetition
Got a suitable idea:
1) For a specific city create a list-of-poi-lists. At first the list-of-po-lists contains just one list with all pois available in it.
listofpois= [pois]
2) For each plot:
*) Cycle through the list-of-poi-lists until you have found a fitting POI:
for listnum in listofpois:
a) Find a suitable building for that place with the normal algorithm you use at the moment
(that algorithm must be able to report back if it can't find a suitable building)
poi= findsuitablepoi(listofpois[listnum])
c) if none is found, go to the next entry in the list of poi lists, otherwise remove the poi from the list it is in and move it to the next poi list in the list-of-poi-lists
if (poi != False):
if listnum = len(listofpois):
listofpois.append([])
listofpois[listnum+1].append(listofpois[listnum][poi])
del(listofpois[listnum][poi])
break
Practically it makes a priority list so that always the least-often placed poi suitable for a lot will be used. And it simply calls the algorithm used now, so it should be easy to plug in.
Changing the current algorithm (for example if counts for specific cities were added) would probably save on execution time and memory usage, but to know how to change that algorithm you first would need to know how it works currently
I get this error when I run the program (from the console, not working through my GUI):
[28155] Error loading Python lib '/tmp/_MEIDc1As9/libpython3.8.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/_MEIDc1As9/libpython3.8.so.1.0)
So maybe it is a glibc issue instead?
There is a very small chance that you could replace /tmp/_M.../libpython3.8 with a logical link to your libpython3.6 library in /usr/lib/x86_64-linux-gnu and it just works. (When you replace, just move libpython3.8 away so you can reinstate it again it it doesn't work)
Other solutions I can see are
1) installing a newer python3.8 from backporting repositories and reoving libpython3.8 in tmp as well
2) installing a newer glibc from backporting repos
3) updating Mint