TerraME / calibration

A TerraME package with calibration functionalities.
GNU General Public License v3.0
1 stars 4 forks source link

saveCSV does not work in certain cases of selected strategy #168

Open agojunior opened 8 years ago

agojunior commented 8 years ago

useful code: basic test saveCSV = function(unitTest) MyModel = Model{ x = Choice{-100, -1, 0, 1, 2, 100}, finalTime = 1, init = function(self) self.timer = Timer{ Event{action = function() self.value = x end} } end }

m = MultipleRuns{
     model = MyModel,
     parameters = {scenario = {x = 2}},
     repetition = 3,
 }

-- Saves MultipleRuns results:
m:saveCSV("myCSVFile", ";")

end,

multipleruns.lua --- Save the results of MultipleRuns to a CSV file. -- Each line represents the values in a different simulation. -- The columns are each of the parameters passed to MultipleRuns -- and the return values of all additional functions and parameters in the output table. -- @arg name The name of the CSV file. -- @arg separator The chosen separator to be used in the CSV file. -- @usage -- import("calibration") -- MyModel = Model{ -- x = Choice{-100, -1, 0, 1, 2, 100}, -- finalTime = 1, -- init = function(self) -- self.timer = Timer{ -- Event{action = function() -- self.value = x -- end} -- } -- end -- }

-- m = MultipleRuns{
--      model = MyModel,
--      parameters = {scenario = {x = 2}},
--      repetition = 3,
--  }
--
-- -- Saves MultipleRuns results:
-- m:saveCSV("myCSVFile", ";")
saveCSV = function(self, name, separator)
    mandatoryArgument(2, "string", separator)
    mandatoryArgument(1, "string", name)
    local CSVTable = {}

    forEachOrderedElement(self, function(idx, att, typ)
        if typ == "table" and idx ~= "parameters" then
            local counter = 0
            print(idx)
            print(type(att))
            forEachOrderedElement(att, function(_, att2, _)
                counter = counter + 1
                if CSVTable[counter] == nil then
                    CSVTable[counter] = {}
                end

                CSVTable[counter][idx] = att2
            end)
        end
    end)
    print(vardump(CSVTable))
    local csvFile = File(name..".csv")
    csvFile:write(CSVTable, separator)
end

}

agojunior commented 8 years ago

fix this and create a new error test

agojunior commented 8 years ago

fix this and create a new error test