[p, q] = get_products(); % quantity sum over a day %plot(sum(q')); train_data = q( 1:28, :); real_data = q(29:42, :); pred_methods = [ struct('name', 'mean', 'func', @mean_pred ) struct('name', 'regress', 'func', @regress_pred ) struct('name', 'quad', 'func', @quad_regress_pred ) struct('name', 'log reg.', 'func', @log_regress_pred ) struct('name', 'sevenday', 'func', @sevenday_pred ) struct('name', 'random', 'func', @rand_pred ) struct('name', 'regress2', 'func', @regress_frequency_removal ) ]; num_methods = size(pred_methods, 1); pred_list = {}; for i = 1:num_methods pred_list{i} = pred_methods(i).func(p, train_data); end qerr = terr = zeros(1, num_methods); err = zeros(num_methods, size(real_data,2)); for i = 1:num_methods [qerr(i), terr(i), err(i, :)] = calc_error(pred_methods(i).name, real_data, pred_list{i}); end opt_data = opt_pred(real_data, pred_list); [qerr(num_methods+1), terr(num_methods+1), opt_err] = calc_error('optimize', real_data, opt_data); bar(qerr); bar(terr); [min_err, err_idx] = min(err); printf('global min. error: %d\n', sum(min_err)); printf('local min count:'); local_min_count=zeros(1, size(err, 1)); for i=1:size(err,1) local_min_count(i) = sum(sum(err_idx == i)); printf(' %d', local_min_count(i)); end printf('\n');