I think, I have solution for developers with this. For every ticket price add base ticket cost.
Tram ticket: base cost + distance
Train ticket: base cost (higher than tram base cost) + distance
Increase tram track maintenance cost.
For trams in this situation good strategy is short distance transport with many people.
For bus good choice is medium distance because bus track cost is low.
For trains good choice is large distance and high traffic (maintenance cost is high).