I think what you are missing is the time required to perform this movement between points.
You have specified the start locations, and the end locations. As well, a start velocity (in a specified direction) and the end point velocity, and a direction for that.
The problem is, we don't know how long it will take to move between the two locations. I might set it up like this:
vel0 = 100*[cosd(45), sind(45)];
velT = 150*[cosd(0), sind(0)];
We have everything set up now, but we don't know how long it will take to move between the two locations. And that is the problem, as the acceleration profile needed will depend on that final time.
First, I'll write the initial value problem.
xytraject = dsolve(Ex,Ey,x(0) == xy0(1),y(0) == xy0(2),dx(0) == vel0(1),dy(0) == vel0(2))
xytraject =
y: (ay1*t^3)/6 + (ay0*t^2)/2 + 50*2^(1/2)*t + 1000
x: (ax1*t^3)/6 + (ax0*t^2)/2 + 50*2^(1/2)*t + 1000
Again, I don't know the acceleration parameters, at least not yet. But the issue is, we cannot decide them, UNTIL we know the time at which the particle is supposed to end up at that point. For example, suppose we knew the final time is 20 units? Or 10 units of time? Or 100? Each of those choices would impact the trajectory. Now I'll put in the end point.
ExT = subs(xytraject.x,Tfinal) == xyT(1)
ExT =

EyT = subs(xytraject.y,Tfinal) == xyT(2);
VxT = subs(diff(xytraject.x,t),Tfinal)==velT(1);
VyT = subs(diff(xytraject.y,t),Tfinal)==velT(2);
accelprofile = solve([ExT,EyT,VxT,VyT],[ax0 ax1 ay0 ay1])
accelprofile =
ax0: -(100*(3*Tfinal + 2*2^(1/2)*Tfinal - 120))/Tfinal^2
ax1: (300*(3*Tfinal + 2^(1/2)*Tfinal - 80))/Tfinal^3
ay0: -(200*(2^(1/2)*Tfinal - 30))/Tfinal^2
ay1: (300*(2^(1/2)*Tfinal - 40))/Tfinal^3
That is the necessary acceleration profile, assuming the acceleration MUST be linear over the time from 0 to Tfinal. Now we can choose some time, and see what happens.
accel20 = subs(accelprofile,Tfinal,20)
accel20 =
ax0: 15 - 10*2^(1/2)
ax1: (3*2^(1/2))/4 - 3/4
ay0: 15 - 10*2^(1/2)
ay1: (3*2^(1/2))/4 - 3/2
So that describes the acceleration trajectory necessary, assuming a purely linear acceleration between points. Plug it back into the trajectory we established...
xytraject20 = subs(xytraject,accel20)
xytraject20 =
y: 50*2^(1/2)*t + (t^3*((3*2^(1/2))/4 - 3/2))/6 - (t^2*(10*2^(1/2) - 15))/2 + 1000
x: 50*2^(1/2)*t + (t^3*((3*2^(1/2))/4 - 3/4))/6 - (t^2*(10*2^(1/2) - 15))/2 + 1000
fplot(xytraject20.x,xytraject20.y,[0,20],'b')
plot([xy0(1),xyT(1)],[xy0(2),xyT(2)],'rx')
As you can see, the result is a smooth curve between the two locations. Had I chosen some different time, I would have a totally different trajectory.
accel30 = subs(accelprofile,Tfinal,30);
xytraject30 = subs(xytraject,accel30)
xytraject50 =
y: 50*2^(1/2)*t + (t^3*(2^(1/2)/3 - 4/9))/6 - (t^2*((20*2^(1/2))/3 - 20/3))/2 + 1000
x: 50*2^(1/2)*t + (t^3*(2^(1/2)/3 + 1/9))/6 - (t^2*((20*2^(1/2))/3 - 10/3))/2 + 1000
fplot(xytraject30.x,xytraject30.y,[0,30],'g')
With a little thought, I could have made all of this into a function, where you need do nothing more than pass it the final time.
Your final question was what is the "simplest" trajectory that can be achieved. For that, I think you need to define the word simplest, as without mathematical definition the question has no meaning. It might be the flattest possible trajectory, or something like that. Now we might decide to solve for the final time needed that minimizes an integral of the squared second derivative of those trajectories, or something like that.