optimization_engine 0.4.0-alpha

A pure Rust framework for embedded nonconvex optimization. Ideal for robotics!
Documentation
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