| local cjson = require 'cjson' | |
| require 'optim' | |
| function rosenbrock(t) | |
| x, y = t[1], t[2] | |
| return (1 - x) ^ 2 + 100 * (y - x^2)^2 | |
| end | |
| function drosenbrock(t) | |
| x, y = t[1], t[2] | |
| return torch.DoubleTensor({-400 * x * (y - x^2) - 2 * (1 - x), 200 * x * (y - x^2)}) | |
| end | |
| local fd = io.open('tests.json', 'r') | |
| local tests = cjson.decode(fd:read('*a')) | |
| fd:close() | |
| for i, test in ipairs(tests) do | |
| print(test.algorithm) | |
| algorithm = optim[test.algorithm] | |
| for i, config in ipairs(test.config) do | |
| print('================================================================================') | |
| params = torch.DoubleTensor({1.5, 1.5}) | |
| for i = 1, 100 do | |
| function closure(x) | |
| return rosenbrock(x), drosenbrock(x) | |
| end | |
| algorithm(closure, params, config) | |
| print(string.format('%.8f\t%.8f', params[1], params[2])) | |
| end | |
| end | |
| end | |