<< optimbase_outstruct Optimization base optimbase_proj2bnds >>

Scilab Help >> Optimization and Simulation > Optimization base > overview

overview

An overview of the Optimbase toolbox.

Purpose

The goal of this component is to provide a building block for optimization methods. The goal is to provide a building block for a large class of specialized optimization methods. This component manages

This toolboxes is designed with Oriented Object ideas in mind.

Features

The following is a list of features the Optimbase toolbox currently provides:

Description

This set of commands allows to manage an abstract optimization method. The goal is to provide a building block for a large class of specialized optimization methods. This component manages the number of variables, the minimum and maximum bounds, the number of non linear inequality constraints, the logging system, various termination criteria, the cost function, etc...

The optimization problem to solve is the following

min f(x)
l_i <= x_i <= h_i, i = 1,n
g_i(x) >= 0, i = 1,nbineq

where

n

number of variables

nbineq

number of inequality constraints

Example

In the following example, ones searches to solve f(x) = 0 thanks dichotomy method. An optimization object is created and configured (number of variables, initial point, maximum number of iterations, ...). The -verbose option is enabled so that messages are generated during the algorithm, are printed.

function [f, index]=fun(x, index)
    f = 2*x - 4;
endfunction

a = -5;
b = 5;
x0 = (a+b)/2;

// Creation of the object
opt = optimbase_new();

// Configures the object
opt = optimbase_configure(opt,"-numberofvariables",2);
opt = optimbase_configure(opt, "-x0", x0);
opt = optimbase_configure(opt, "-tolxrelative", 10*%eps);
opt = optimbase_configure(opt, "-maxiter", 30);
opt = optimbase_configure(opt, "-function", fun);
opt = optimbase_configure(opt,"-verbose",1);

function x=Dicho(opt, a, b)
    xk = optimbase_cget(opt, "-x0");
    [opt, fx0, index] = optimbase_function (opt , xk , 1);
    opt = optimbase_set ( opt , "-xopt" , xk );
    opt = optimbase_set ( opt , "-fopt" , fx0 );
    terminate = %f;
    while ~terminate
        [opt, f, index] = optimbase_function(opt, xk, 1);
        [opt, g, index] = optimbase_function(opt, a, 1);
        if g*f <= 0 then
            b = xk;
        else
            a = xk;
        end
        x = (a + b)/2;
        opt = optimbase_incriter(opt);
        [opt, terminate, status] = optimbase_terminate(opt, optimbase_get(opt, "-fopt"), f, xk, x);
        opt = optimbase_set ( opt , "-xopt" , x );
        opt = optimbase_set ( opt , "-fopt" , f );
        xk = x;
    end
endfunction

x = Dicho(opt,a,b)

Report an issue
<< optimbase_outstruct Optimization base optimbase_proj2bnds >>