I am fairly new to optimization modelling but I am encountering a situation in which I supply initial values to my problem and then after I run my optimization those initial values change. This seems counter-intuitive to me though because if the initial values define the starting point of the problem, how then would these values be altered during the optimization process?
This leads me to my question regarding "warm starts". Unfortunately the book I am learning from does not mention what a warm start is, but from what I gather it seems to have something to do with regards to initial values being supplied to solvers. As well, when I Google some variant of what a warm start is, I get a lot of papers on all the various methods to implement them, but not really explaining what they are. If someone would be able to clarify what a warm-start is, and if it's related to my issue, that would be great.
There is a difference between an initial condition and initial values. Initial conditions in the context of differential equations fix the values of dynamic variables at the initial point. When you provide initial values for your variables you are essentially providing a guess of where you think the optimal point is. The optimizer is still free to move the variable values as it (hopefully) converges to the optimal solution (minimizes or maximizes the objective function while satisfying all constraints). A warm start usually means that you're using the optimal solution of a related/simplified optimization problem to provide the initial values (guess) for the problem you actually care about. The hope is that the problems are similar enough that the warm start will get you close to the optimal solution and make convergence easier. Providing a good initial guess is particularly important when solving nonlinear optimization problems or problems known to have many local minima.
Generally warm-start is a feasible solution for your problem and the nature of optimization problems is to evaluate feasible region(all the feasible solutions) to find the optimal solution which is not indeed the initial solution. AFAIK by providing a warm start to the solver you help the solver converge in less number of iterations.
In pyomo to use this feature set the values of variables in the instance and pass warmstart=True to the solve() method. Example(a problem with two variables with the pre-set amount of $1$ and $0$ for $y_0$ and $y_1$):