V>В какую сторону копать? В идеале стоимость пересылки между разными складами различная и конечная цель минимизировать стоимость все пересылок.
Что-то не договариваешь. Определи потери на складах от недостач по позициям, отнесенные к единице товара. Пока минимум же ясно виден сразу — ничего никому не посылать -> стоимость пересылки 0.
А так по недостаткам и избыткам формируй требуемые посылки от всех ко всем. Что бы ты ни делал, сложность будет порядка O(N^2 * L). L — число позиций товаров, N — количество складов, т.е. вполне себе реализуемо должно быть. При распределении избытков по конкретным складам с недостачами учитывай стоимость пересылки и потери от недостач.