I used a 3-segment bezier curve with two hooks. I then took the middle hook and added 2 distance constraints – one for the beginning of the curve and one of the end. That way the middle of the bezier will always try to keep its distance from the 2 ends.
Here’s an example:
hose_example.blend (765.4 KB)
This is not a very good solution, there’s at least one better solution using a follow-path constraint, but I don’t fully understand how it works.
One problem I haven’t seen someone solve is twisting along the axis of the curve, since rotating a point on a bezier along its axis doesn’t do anything.
Hope this helps!