Hi! I have a problem when I want to pass as an argument the parameters to implement the objective function in a different file from where I call the fmincon function:
If I don’t pass any parameters as arguments, I don’t have any problem.
Taking the example from the function description:
In this case, that the objective function does not need arguments, the operation is normal:
## Example for default optimization (Levenberg/Marquardt with
## BFGS), one non-linear equality constraint. Constrained optimum is
## at x = [0; 1].
pkg load optim
xin = [-2; 5];
options=optimset('MaxIter',10000,'TolFun',1e-8,'TolX',1e-8,'Display','off');
## a=1;
constraint_function = @ (x) - (x(1)^2 + 1 - x(2));
[x, funj, cvg, outp] = fmincon(@fun, xin, [], [], [], [], [], [], @ (x) {[], constraint_function(x)}{:},options)
But if I uncomment variable ‘a’ and pass it as argument to ‘fun1’ an error occurs. In Matlab it can be done without problems.
[x, funj, cvg, outp] = fmincon(@fun1, xin, [], [], [], [], [], [], @ (x) {[], constraint_function(x)}{:},options,a)
Files fun.m and fun1.m
function f = fun(x)
f = x(1)^2 + x(2)^2;
end
function f = fun1(x,a)
f = a** *(x(1)^2) + x(2)^2;
end
My system
- OS: Windows 10 (version 2019)
- Octave version: Version 6.1.0