MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   Matlab使用fminsearch优化多变量 (https://www.labfans.com/bbs/showthread.php?t=22318)

poster 2019-12-01 22:40

Matlab使用fminsearch优化多变量
 
我正在使用Matlab fminsearch来最小化带有两个变量的方程sum((interval-5).^2, 2)*factor间隔是一个包含5个值的向量。只能从1到30的步长为1的顺序选择它们。因子是0.1到0.9的值。

代码如下。我认为区间值是正确的,但因子值是错误的。

间隔值:[3 4 5 6 7]因子值:0.6最终输出:6

我认为因子值应为0.1,最终输出应为1作为全局最小值。

%% initialization of problem parameters minval = 1; maxval = 30; step = 1; count = 5; minFactor = 0.1; maxFactor = 0.9; %% the objective function fun = @(interval, factor) sum((interval-5).^2, 2)*factor; %% a function that generates an interval from its initial value getinterval = @(start) floor(start) + (0:(count-1)) * step; getfactor =@(start2) floor(start2 * 10)/10; %% a modified objective function that handles constraints objective = @(start, start2) f(start, fun, getinterval, minval, maxval, getfactor, minFactor, maxFactor); %% finding the interval that minimizes the objective function start = [(minval+maxval)/2 (minFactor+maxFactor)/2]; y = fminsearch(objective, start); bestvals = getinterval(y(1)); bestfactor = getfactor(y(2)); eval = fun(bestvals,bestfactor); disp(bestvals) disp(bestfactor) disp(eval) 该代码使用以下函数f 。

function y = f(start, fun, getinterval, minval, maxval, getfactor, minFactor, maxFactor) interval = getinterval(start(1)); factor = getfactor(start(2)); if (min(interval) < minval) || (max(interval) > maxval) || (factormaxFactor) y = Inf; else y = fun(interval, factor); end end 我按照亚当的建议尝试了GA函数。考虑到我的变量来自不同的范围和步骤,我将其更改为两个不同的集合。这是我的零钱。

step1 = 1; set1 = 1:step1:30; step2 = 0.1; set2 = 0.1:step2:0.9; % upper bound depends on how many integer used for mapping ub = zeros(1, nvar); ub(1) = length(set1); ub(2) = length(set2); 然后,我改变了目标函数

% objective function function y = f(x,set1, set2) % mapping xmap1 = set1(x(1)); xmap2 = set2(x(2)); y = (40 - xmap1)^xmap2; end 运行代码后,我想我会得到想要的答案。



[url=https://stackoverflow.com/q/59002429]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 19:44

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.