гессиан для ограничения неравенства в fmincon - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь помочь fmincon сойтись быстрее, указав вектор градиента и матрицу Гессе. Я использую алгоритм внутренней точки, и я понимаю, что в таком случае я должен передать Hessian, используя вызов другой функции, которая назначена HessFcn моих OPTIOINS. У меня есть только ограничение неравенства (C). это в квадратичной форме.

gbee_r_i, p_in, nel, nhp - известные матрицы или переменные.

Я определяю ограничение следующим образом:

function [ c,ceq,DC,DCeq] = cond5( x,gbee_r_i,p_in,nel,nhp)


nn=0;
bb=0;
    for i=1:nel
        for j=1:nhp
            nn=nn+1;
            bb(nn,:)=1*x'*(gbee_r_i(:,:,j,i))'*p_in*gbee_r_i(:,:,j,i)*x;
            rr(:,nn)=(gbee_r_i(:,:,j,i))'*p_in*gbee_r_i(:,:,j,i)*x;
        end
    end
    DCeq=[];
    DC=rr;
    ceq=[];
c=bb;
end

Определите такие параметры:

     options = optimoptions(@fmincon,...
        'GradObj','on','GradConstr','on','Hessian','user-supplied',...
    HessFcn',@(x)hessinterior(x,lambda,gbee_r_i,p_in,nel,nhp),'Display',...
'iter','Algorithm','interior-point','maxFunEvals',20000000000000,'MaxIter',5000,'TolFun',1e-3);

`@ (х) hessinterior (х, лямбда, gbee_r_i, p_in, Nel, NHP)

является HessFcn и определено, как показано ниже.

function [ h ] = hessinterior(x,lambda,gbee_r_i,p_in,nel,nhp)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
nn=0;
h=0;
for i=1:nel
    for j=1:nhp
        nn=nn+1;
    h=h+lambda.ineqnonlin(nn)*(gbee_r_i(:,:,j,i))'*p_in*gbee_r_i(:,:,j,i);
    end
end
end

после запуска программы эта ошибка отображается

Ошибка при использовании @ (x) hessinterior (x, lambda, gbee_r_i, p_in, nel, nhp) Слишком много входных аргументов.

Ошибка в C: \ Program Files \ MATLAB \ R2013a \ toolbox \ optim \ optim \ private \ computeHessian.p> computeHessian (строка 36)

Ошибка в C: \ Program Files \ MATLAB \ R2013a \ toolbox \ optim \ optim \ барьер.p> барьер (строка 300)

Ошибка в fmincon (строка 900) [X, FVAL, EXITFLAG, OUTPUT, LAMBDA, GRAD, HESSIAN] = барьер (funfcn, X, A, B, Aeq, Beq, l, u, confcn, options.HessFcn, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...