gusucode.com > 十大算法matlab程序说明 > 十大算法matlab程序说明/遗传退火法/constrValidate.m

    function options = constrValidate(A,L,U,IndEqcstr,IndIneqcstr,nonlcon,options,subtype,type)
%CONSTRVALIDATE validate parameters related to constraint GA
%   Private to GACONSTR

%   Copyright 2005 The MathWorks, Inc.
%   $Revision: 1.1.6.2.2.1 $  $Date: 2005/07/17 06:06:31 $

options.NonconFcn = [];
options.(['NonconFcn' 'Args']) = {};

% Check linear constraint satisfaction at stopping?
linconCheck = false;
% Create a structure to store linear constraint information
options.LinearConstr = struct('A',A,'L',L,'U',U,'IndEqcstr',IndEqcstr, ...
    'IndIneqcstr',IndIneqcstr,'type',subtype);
% Creation, mutation, and crossover functions for constrained GA
if ~strcmpi(subtype,'unconstrained')
    mutationFcn = func2str(options.MutationFcn);
    if any(strcmpi(mutationFcn,{'mutationuniform', 'mutationgaussian'}))
        msg = sprintf('''%s'' mutation function is for unconstrained minimization only;\n using @mutationadaptfeasible mutation function.',mutationFcn);
        msg = [msg,sprintf('\nSet @mutationadaptfeasible as MutationFcn options using GAOPTIMSET.\n')];
        warning('gads:CONSTRVALIDATE:constrainedMutation',msg);
        options.MutationFcn = @mutationadaptfeasible;
        % This must be a custom mutation function so we check linear
        % constraints at the end
    elseif ~strcmpi(mutationFcn,'mutationadaptfeasible')
        linconCheck = true;
    end
end
options.LinearConstr.linconCheck = linconCheck;

%-------------------------------------------------------------------------
% if it's a scalar fcn handle or a cellarray starting with a fcn handle and
% followed by something other than a fcn handle, return parts, else empty
function [handle,args] =  isFcn(x)
  handle = [];
  args = {};
%If x is a cell array with additional arguments, handle them
if iscell(x) && ~isempty(x)
    args = x(2:end);
    handle = x{1};
else
    args = {};
    handle = x;
end
%Only function_handle or inlines are allowed
if  ~(isa(handle,'inline') || isa(handle,'function_handle'))
    handle = [];
end