There was not supposed to be an index on Sols in push!(stages[2].Sols[i], Sol(...)), it was supposed to be push!(stages[2].Sols, Sol(...depending on i...))
On Tuesday, May 5, 2015 at 11:59:27 AM UTC+2, Patrick Kofod Mogensen wrote: > > Dear Julians > > I am solving a model in a recursive manner (backwards induction/dynamic > programming). At each stage (I know how many), there is at least one > solution. If there was only one solution, I would probably do: > > type Sol > .... > variables characterizing a solution > .... > end > > and create a container solution = Sol[]. Starting from the last stage I > would solve the stage, and save the solution using push!(solution, > Sol(...)). This would give me the solutions from each stage in reverse > order (or the order in which they were solved) in 'solutions'. > > The thing is, sometimes there can be multiple solutions in a stage (I know > the upper bound though, say 5). So what I did was to create > > type Stage > Sols::Sol > end > > stages = Stage[] > sizehint!(stages, numberofstages) > push!(stages, Stage(Sol[])) > > When solving the last stage I simply do a push!(stages[1].Sols[i], > Sol(...)) for each solution found. Stepping back, I save solutions in the > second last period by > > push!(stages,Stage(Sol[])) > for i = 1:number_of_solutions > push(stages[2].Sols[i], Sol(...)) > end > > and move on to the third last stage. > > My question is, am I over-engineering this? In some way it works, but I > just feels like I am doing it in a stupid way. > > If you need me to clarify, please ask. > > Patrick >
