Imposing constraint on gradient coefficients in NonLinear optimization

조회 수: 1 (최근 30일)
Jonathan
Jonathan 2014년 4월 17일
댓글: Sean de Wolski 2014년 4월 18일
I'm trying to solve a non linear 6 dimensional optimization problem, using a gradient which I calculate (6 dimensional).
I would like to influence the gradient coefficients in such a way that Coeff(1) == Coeff(2) == Coeff(3) and Coeff(4)==Coeff(5)==Coeff(6)
Is this possible?
Thanks! Jonathan

답변 (1개)

Alan Weiss
Alan Weiss 2014년 4월 18일
I suppose that you could try to minimize the sum of the squares of the differences between various coefficients:
(Coeff(1) - Coeff(2))^2 + (Coeff(1) - Coeff(3))^2 + (Coeff(4) - Coeff(5))^2 + (Coeff(4) - Coeff(6))^2
You might want to use lsqnonlin and have your vector be (coeff(1) - coeff(2), coeff(1) - coeff(3), ...)
Alan Weiss
MATLAB mathematical toolbox documentation
  댓글 수: 2
Jonathan
Jonathan 2014년 4월 18일
Thanks for the answer, but that wasn't quite what I was asking. I will try rephrasing.
I am trying to solve an optimization problem, minimizing a scalar energy functional, which is a function of 6 parameters - 3 translation parameters and 3 rotation parameters.
I'm trying to feed the 6 dimensional calculated gradient into a gradient based optimization algorithm.
The constrain I want to impose is that in each iteration, all translation gradients have the same step size, and all rotation gradients have a second step size.
If t is the translation vector, r the rotation vector, at iteration i the propagation will be:
[t(1, i), t(2, i), t(3, i), r(1, i), r(2, i), r(3, i)] = [t(1, i-1), t(2, i-1), t(3, i-1), r(1, i-1), r(2, i-1), r(3, i-1)] - [a, a, a, b, b, b].*[grad(1), grad(2), grad(3), grad(4), grad(5), grad(6)]
Is this possible? Thanks Jonathan
Sean de Wolski
Sean de Wolski 2014년 4월 18일
Why do you want that additional constraint? You might be able to get it by bounding with DiffMinChange and DiffMaxChange in the options:

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Systems of Nonlinear Equations에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by