資源簡(jiǎn)介
This function mmasub performs one MMA-iteration, aimed at
% solving the nonlinear programming problem:
%
% Minimize f_0(x) + a_0*z + sum( c_i*y_i + 0.5*d_i*(y_i)^2 )
% subject to f_i(x) - a_i*z - y_i <= 0, i = 1,...,m
% xmin_j <= x_j = 0, y_i >= 0, i = 1,...,m
%*** INPUT:
%
% m = The number of general constraints.
% n = The number of variables x_j.
% iter = Current iteration number ( =1 the first time mmasub is called).
% xval = Column vector with the current values of the variables x_j.
% xmin = Column vector with the lower bounds for the variables x_j.
% xmax = Column vector with the upper bounds for the variables x_j.
% xold1 = xval, one iteration ago (provided that iter>1).
% xold2 = xval, two iterations ago (provided that iter>2).
% f0val = The value of the objective function f_0 at xval.
% df0dx = Column vector with the derivatives of the objective function
% f_0 with respect to the variables x_j, calculated at xval.
% df0dx2 = Column vector with the non-mixed second derivatives of the
% objective function f_0 with respect to the variables x_j,
% calculated at xval. df0dx2(j) = the second derivative
% of f_0 with respect to x_j (twice).
% Important note: If second derivatives are not available,
% simply let df0dx2 = 0*df0dx.
% fval = Column vector with the values of the constraint functions f_i,
% calculated at xval.
% dfdx = (m x n)-matrix with the derivatives of the constraint functions
% f_i with respect to the variables x_j, calculated at xval.
% dfdx(i,j) = the derivative of f_i with respect to x_j.
% dfdx2 = (m x n)-matrix with the non-mixed second derivatives of the
% constraint functions f_i with respect to the variables x_j,
% calculated at xval. dfdx2(i,j) = the second derivative
% of f_i with respect to x_j (twice).
%
代碼片段和文件信息
function?[xmmaymmazmmalamxsietamuzetslowupp]?=?...
mmasub(mniterxvalxminxmaxxold1xold2?...
f0valdf0dxdf0dx2fvaldfdxdfdx2lowuppa0acd);
%
%????Written?in?May?1999?by
%????Krister?Svanberg?
%????Department?of?Mathematics
%????SE-10044?Stockholm?Sweden.
%
%????Modified?(“spdiags“?instead?of?“diag“)?April?2002
%
%
%????This?function?mmasub?performs?one?MMA-iteration?aimed?at
%????solving?the?nonlinear?programming?problem:
%?????????
%??????Minimize??f_0(x)?+?a_0*z?+?sum(?c_i*y_i?+?0.5*d_i*(y_i)^2?)
%????subject?to??f_i(x)?-?a_i*z?-?y_i?<=?0??i?=?1...m
%????????????????xmin_j?<=?x_j?<=?xmax_j????j?=?1...n
%????????????????z?>=?0???y_i?>=?0?????????i?=?1...m
%***?INPUT:
%
%???m????=?The?number?of?general?constraints.
%???n????=?The?number?of?variables?x_j.
%??iter??=?Current?iteration?number?(?=1?the?first?time?mmasub?is?called).
%??xval??=?Column?vector?with?the?current?values?of?the?variables?x_j.
%??xmin??=?Column?vector?with?the?lower?bounds?for?the?variables?x_j.
%??xmax??=?Column?vector?with?the?upper?bounds?for?the?variables?x_j.
%??xold1?=?xval?one?iteration?ago?(provided?that?iter>1).
%??xold2?=?xval?two?iterations?ago?(provided?that?iter>2).
%??f0val?=?The?value?of?the?objective?function?f_0?at?xval.
%??df0dx?=?Column?vector?with?the?derivatives?of?the?objective?function
%??????????f_0?with?respect?to?the?variables?x_j?calculated?at?xval.
%?df0dx2?=?Column?vector?with?the?non-mixed?second?derivatives?of?the
%??????????objective?function?f_0?with?respect?to?the?variables?x_j
%??????????calculated?at?xval.?df0dx2(j)?=?the?second?derivative
%??????????of?f_0?with?respect?to?x_j?(twice).
%??????????Important?note:?If?second?derivatives?are?not?available
%??????????simply?let?df0dx2?=?0*df0dx.
%??fval??=?Column?vector?with?the?values?of?the?constraint?functions?f_i
%??????????calculated?at?xval.
%??dfdx??=?(m?x?n)-matrix?with?the?derivatives?of?the?constraint?functions
%??????????f_i?with?respect?to?the?variables?x_j?calculated?at?xval.
%??????????dfdx(ij)?=?the?derivative?of?f_i?with?respect?to?x_j.
%??dfdx2?=?(m?x?n)-matrix?with?the?non-mixed?second?derivatives?of?the
%??????????constraint?functions?f_i?with?respect?to?the?variables?x_j
%??????????calculated?at?xval.?dfdx2(ij)?=?the?second?derivative
%??????????of?f_i?with?respect?to?x_j?(twice).
%??????????Important?note:?If?second?derivatives?are?not?available
%??????????simply?let?dfdx2?=?0*dfdx.
%??low???=?Column?vector?with?the?lower?asymptotes?from?the?previous
%??????????iteration?(provided?that?iter>1).
%??upp???=?Column?vector?with?the?upper?asymptotes?from?the?previous
%??????????iteration?(provided?that?iter>1).
%??a0????=?The?constants?a_0?in?the?term?a_0*z.
%??a?????=?Column?vector?with?the?constants?a_i?in?the?terms?a_i*z.
%??c?????=?Column?vector?with?the?constants?c_i?in?the?terms?c_i*y_i.
%??d?????=?Column?vector?with?the?constants?d_i?in?the?terms?0.5*d
評(píng)論
共有 條評(píng)論