Let's suppose the movement should traverse the distance as fast as possible. It will accelerate for the first part, then reverse the signs and decelerate for the second part. While in progress you want it moving as fast as possible (either because it hits the speed limit, or because it reaches the midway point before hitting the speed limit). To hit the highest speed, you accelerate as hard as possible (again, subject to the acceleration limit). To accelerate as fast as possible, you apply the max jerk for as long as possible (subject to etc etc).
The wikipedia page for Jerk shows how to compute the distance traveled, as a cubic function of time, with the jerk as a parameter. I would start by plugging in your values, assuming max jerk, to see what happens. If that travels the distance without exceeding your max acceleration or velocity, you have the easy solution. If instead it hits a limit, it's still a piecewise solution, just with more than two pieces.
Apply max jerk to accelerate as hard as you can. If it's going to hit the speed limit first, you need to reduce the acceleration to become zero just as it hits the speed limit, so apply negative jerk as late as possible. If it's going to hit the acceleration limit first, just stop jerking when you get there. Then keep an eye on the speed as before.
In all cases, the maximum jerk is applied for as long as possible, as early/late as possible.
As an aside, it's perfectly plausible for a real system to accelerate harder than it can decelerate. Electrical power accelerating the system imparts a bunch of kinetic energy. Unless the controller has regenerative braking, the only place for the K.E. to go is to become heat dissipated in the motor windings or brake, and we hate that smoke. Similarly, pushing the system to be as fast as possible ignores other considerations such as wear, noise, or vibration.