classdef OpEnOptimizerBuilder < handle
%OPENOPTIMIZERBUILDER Summary of this class goes here
% Detailed explanation goes here
properties (Access = public)
build_name;
version;
build_mode;
license;
target;
optimization_engine_path;
icasadi_path;
build_path;
udp_interface;
communication_buffer_size;
authors;
solver;
sx_u;
sx_p;
cost;
constraints;
constraints_as_penalties;
end
methods
function o = OpEnOptimizerBuilder()
optimization_engine_root_path = matlab_open_root();
o.with_build_name('autogenerated_optimizer')...
.with_version('0.1.0')...
.with_build_mode('debug')...
.with_license('unspecified')...
.with_target_system('default')...
.with_build_path(fullfile(optimization_engine_root_path, 'build'))...
.with_local_udp_at_port(3498)...
.with_authors('P. Sopasakis <p.sopasakis@gmail.com>', ...
'E. Fresk <emil.fresk@gmail.com>')...
.with_lbfgs_memory(10)...
.with_max_iterations(500)...
.with_fpr_tolerance(1e-5);
o.optimization_engine_path = optimization_engine_root_path;
o.icasadi_path = fullfile(optimization_engine_root_path, 'icasadi');
o.communication_buffer_size = 256;
end
opEnOptimizer = build(o);
function o = with_build_name(o, build_name)
o.build_name = build_name;
end
function o = with_version(o, version)
o.version = version;
end
function o = with_build_mode(o, build_mode)
build_mode = lower(build_mode);
o.build_mode = build_mode;
end
function o = with_license(o, lic)
o.license = lic;
end
function o = with_target_system(o, target)
o.target = target;
end
function o = with_build_path(o, build_path)
o.build_path = build_path;
end
function o = with_local_udp_at_port(o, port)
o.udp_interface = struct('bind_address', '127.0.0.1', 'port', port);
end
function o = with_public_udp_at_port(o, port)
o.udp_interface = struct('bind_address', '0.0.0.0', 'port', port);
end
function o = with_bind_address(o, ip, port)
o.udp_interface = struct('bind_address', ip, 'port', port);
end
function o = with_authors(o, varargin)
o.authors = varargin;
end
function o = with_lbfgs_memory(o, lbfgs_mem)
o.solver.lbfgs_mem = lbfgs_mem;
end
function o = with_max_iterations(o, max_iters)
o.solver.max_iters = max_iters;
end
function o = with_fpr_tolerance(o, fpr_tol)
o.solver.tolerance = fpr_tol;
end
function o = with_constraints_as_penalties(o, constraints_as_penalties)
o.constraints_as_penalties = constraints_as_penalties;
end
function o = with_problem(o, u, p, cost, constraints)
o.sx_u = u;
o.sx_p = p;
o.cost = cost;
o.constraints = constraints;
end
end
end