My Laptop (running Ubuntu 15.04) receives the signal of two access points with the same SSID. For some reason it always picks the one with ~45% signal quality (-79 dBm) over the one with ~70% (-55 dBm). Is there a way to force a switch to the other one?
Intra-ESS roaming (i.e. roaming between access points with the same SSID) is typically performed at the WiFi driver/chipset firmware level. It is unlikely your Operating System is having any input into the decision making process.
Inter-ESS roaming (roaming between APs with different SSIDs) is done at the supplicant level, and this is when your OS/supplicant will have a say in who to connect to.
So you need to look at your WiFi card and driver, and check that you are using the most up to date one, and that there are no known issues.
Also, as pointed out by others, with signal strength, the lower the number the better. Chipsets I have worked on usually initiate intra-ESS roaming when the signal strength hits about -80dBm but this will vary between manufacturer.
You could always try walking around with your laptop and watching the signal strength as it drops to see when roaming is triggered.
Ubuntu does not choose the strongest connection, it takes the last one you have used. You can use apt-get install wifi-radar to install this software and set preferences for ssids.
For some reason it always picks the one with ~45% signal quality over the one with ~70%.
Are you reading the numbers correctly? It is common to show the Signal strength and not a percentage (%).
That would then be -45dBm and -70dBm readings, where the first is the stongest.
Have you got an Android phone?
Try this: https://play.google.com/store/apps/details?id=com.farproc.wifi.analyzer&hl=en
... it is free (slight add-banner at bottom)
and allows some layman analysis based on the figures and graphs it shows.