Providing values for some or all decision variables and for one additional argument that I will describe below should be sufficient. It is fine to omit values for variables that have been added since the last solution (i.e., you do not need to guess values). Values for variables that have been dropped since the last solution should definitely
not be provided; CPLEX does not like references to variables not in the current model.
Given a partial, not necessarily feasible, starting solution, CPLEX can either ignore it or attempt to fix it (and then ignore it if repairs fail). This brings me to the (optional) effort argument. You did not specify an API, so I will describe it in terms of the Java API. You want to choose one of the overloads of IloCplex.addMIPStart() that includes the effort argument, which is an instance of IloCplex.MIPStartEffort. The default value (if omitted) gives CPLEX freedom to expend as much or as little effort repairing the MIP start as it deems appropriate. Since your starting solution is likely to be missing variables and may well be infeasible, I would suggest using the value IloCplex.MIPStartEffort.Repair, which as the name suggests tells CPLEX to try to repair the solution (if needed). There is a separate parameter (Java name IloCplex.Param.MIP.Limits.RepairTries) that is not an argument to addMIPStart and instead is set as other parameters are set. This governs how much work CPLEX does trying to fix the starting solution. The default is again to let CPLEX decide, but you can set it to a positive integer value to dictate the number of attempts. (What constitutes a reasonable number of attempts for you will no doubt be a matter of experimentation.)
------------------------------
Paul Rubin
Professor Emeritus
Michigan State University
------------------------------