Yes, I agree, ML algorithm could not be my first choice in this case.
What about start with an heuristic algorithm, then start to swap in couple links ?
I mean you can just try to allocate just with minimum distance from client to warehouse, then start to swap every link with a near warehouse. You ought to build for every warehouse a list of n (5 ?) warehouse near, and swap the order with every warehouse then see if cost function minimize or not.
First think you must identify your cost function or you will have nothing to optimize.
I followed a MOCC from a crazy Australian man, but I learned a lot and had fun in between.