我在Matlab中有这个函数,它应该通过改变两个无效值的初始设置值来找到最小值如何将fmin search函数设置为在尝试查找最小值时不尝试负值另外,如何设置fminsearch函数在试图找到最小值时执行的不同变体的数量因为目前它尝试了大约20种不同组合的两个残疾人,然后完成也许可以定义它改变每个值的数量我该怎么做?

            function Valueminimiser

            inValues = [50,50];

            minValuePossible = fminsearch(@minimiser, inValues);

                function result = minimiser(inValues)

                x=inValues(1);
                y=inValues(2);

                RunMode = 2;
                ValueOne = x;
                ValueTwo = y;

                [maxSCRAout] = main(RunMode,ValueOne,ValueTwo);
                result = minValuePossible;

              end

            end

最佳答案

如何将fmin search函数设置为在尝试查找最小值时不尝试负值?
在最小值函数的开头添加其值的约束如果满足此约束,则返回一个极大的函数值minimizer这将防止fminsearch考虑不符合您利益的数字:

function result = minimiser(inValues)
            if (sum(inValues < 0) > 1) % check if there is any negative number in input variable
                result = hugeValue;    % give a big value to the result
                return;                % return to fminsearch - do not execute the rest of the code
            end

            x=inValues(1);
            y=inValues(2);

            RunMode = 2;
            ValueOne = x;
            ValueTwo = y;

            [maxSCRAout] = main(RunMode,ValueOne,ValueTwo);
            result = minValuePossible;

另外,如何设置fminsearch函数在试图找到最小值时执行的不同变体的数量?
可以使用optimset函数定义fminsearch的选项优化集“Max FunVales”的参数是最大的评价数——注意到这个CUT甚至是你所约束的值,所以如果你关心AcCuCARY,那么设置“Telx”可能会更好。
options = optimset('MaxFunEvals',numberOfVariations);
minValuePossible = fminsearch(@minimiser, inValues,options);

10-04 14:38