- Справка Scilab
- Optimization and Simulation
- Optimization base
- optimbase_cget
- optimbase_checkbounds
- optimbase_checkcostfun
- optimbase_checkx0
- optimbase_configure
- optimbase_destroy
- optimbase_function
- optimbase_get
- optimbase_hasbounds
- optimbase_hasconstraints
- optimbase_hasnlcons
- optimbase_histget
- optimbase_histset
- optimbase_incriter
- optimbase_isfeasible
- optimbase_isinbounds
- optimbase_isinnonlincons
- optimbase_log
- optimbase_new
- optimbase_outputcmd
- optimbase_outstruct
- overview
- optimbase_proj2bnds
- optimbase_set
- optimbase_stoplog
- optimbase_terminate
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
optimbase_outputcmd
Calls back user's output command.
Calling Sequence
stop = optimbase_outputcmd(opt, state, data)
Argument
- opt
The object of TOPTIM type (tlist).
- state
A 1-by-1 matrix of strings, the current state of the algorithm.
Available values are "init, "iter", "done".
- data
A data structure with type T_OPTDATA containing at least the following fields.
- x
The current optimum.
- fval
The current function value.
- iteration
The current iteration index.
- funccount
The number of function evaluations.
- stop
A 1-by-1 matrix of booleans.
stop
is %t if the optimization algorithm must be stopped.stop
is %f if the optimization algorithm must continue.
Description
The optimbase_outputcmd
function calls back user's output command.
The -outputcommand
option allwos to configure a command which is
called back at the start of the optimization, at each iteration and at the end of
the optimization.
It might happen that the output function requires additional arguments to be evaluated.
In this case, we can use the following feature. The outputcmd
argument
can also be the list (outf, a1, a2, ...)
. In this case outf
,
the first element in the list, must be a function and must have the header :
stop = outf(state, data, a1, a2, ....)
where the input arguments a1, a2, ...
are automatically appended at
the end of the calling sequence.
Example
function [f, index]=fun(x, index) f = 2*x - 4; endfunction function stop=myoutputcmd(state, data) iter = data.iteration if ( state == "init" ) then mprintf ( "=================================\n"); mprintf ( "Initialization\n"); elseif ( state == "done" ) then mprintf ( "=================================\n"); mprintf ( "End of Optimization\n"); end fc = data.funccount fval = data.fval x = data.x mprintf ( "Iter. #%3d, Feval #%3d, Fval = %.1e, x = %s \n" , .. iter, fc, fval, strcat(string(x)," ")); stop = %f endfunction a = -5; b = 5; x0 = (a+b)/2;; // Creates 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", 100); opt = optimbase_configure(opt, "-function", fun); opt = optimbase_configure(opt,"-outputcommand", myoutputcmd); function x=Dicho(opt, a, b) xk = optimbase_cget(opt, "-x0"); [opt, fx0,index] = optimbase_function (opt , xk , 4); opt = optimbase_set ( opt , "-fx0" , fx0 ); opt = optimbase_set ( opt , "-xopt" , x0 ); opt = optimbase_set ( opt , "-fopt" , fx0 ); // OutputCmd brutedata = optimbase_outstruct ( opt ); data = tlist(["T_OPTBDATA",... "x","fval","iteration","funccount"]); data.x = brutedata.x; data.fval = brutedata.fval; data.iteration = brutedata.iteration; data.funccount = brutedata.funccount; stop = optimbase_outputcmd (opt , "init" , data ); while optimbase_get(opt, "-iterations") <optimbase_cget(opt, "-maxiter") [opt, f,index] = optimbase_function(opt, xk, 4); [opt, g, index] = optimbase_function(opt, a, 4); if g*f <=0 then b = xk; else a = xk; end x = (a+b)/2; opt = optimbase_incriter(opt); opt = optimbase_set ( opt , "-xopt" , x ); opt = optimbase_set ( opt , "-fopt" , f ); temp = abs(x-xk); if temp < optimbase_cget(opt, "-tolxrelative") // OutputCmd brutedata = optimbase_outstruct ( opt ); data = tlist(["T_OPTBDATA",... "x","fval","iteration","funccount"]); data.x = brutedata.x; data.fval = brutedata.fval; data.iteration = brutedata.iteration; data.funccount = brutedata.funccount; stop = optimbase_outputcmd (opt , "done" , data ); break end xk = x; // OutputCmd brutedata = optimbase_outstruct ( opt ); data = tlist(["T_OPTBDATA",... "x","fval","iteration","funccount"]); data.x = brutedata.x; data.fval = brutedata.fval; data.iteration = brutedata.iteration; data.funccount = brutedata.funccount; stop = optimbase_outputcmd (opt , "iter" , data ); end endfunction x = Dicho(opt,a,b)
See Also
- optimbase_outstruct — Returns a data structure with type T_OPTDATA.
- optimbase_function — Calls cost function.
Report an issue | ||
<< optimbase_new | Optimization base | optimbase_outstruct >> |