gpt4 book ai didi

algorithm - MATLAB 遗传算法优化返回高于边界的整数值并违反不等式约束。为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:18:26 25 4
gpt4 key购买 nike

我正在使用 MATLAB R2016a 遗传算法优化工具箱来优化 80 个整数值。我有这些限制:

x(80) > x(79) > x(78) > x(77) > x(76) ... x(5) > x(4) > x(3) > x(2) > x(1)

所有整数变量的范围都在 1 到 500 之间。我在 MATLAB 中使用了这段代码:

f = @(x)Cost_function(x, my_data);

num_of_var = 80;


for mx = 1:num_of_var-1
A(mx,:) = [zeros(1,mx-1),1,-1, zeros(1,num_of_var-mx-1)];
end

b = repmat(-3, [num_of_var-1,1]);

lb = ones([num_of_var-1,1]);

up = repmat(500,[num_of_var-1,1]);

options = optimoptions('ga');
options.Display = 'iter';
options.PopulationSize = 200;
options.UseParallel = 0;

IntCon = 1:1:num_of_var;
[x, fval, exitflag] = ga(f, num_of_var, A, b, [], [], lb, up,[] ,IntCon, options);

这段代码是否正确?在某些情况下,此代码返回高于边界的整数。例如,这是成本函数代码的第一次返回:

11  89  129 136 168 191 208 232 267 299 306 312 312 270 270 293 297 296 283 192 188 239 241 239 226 212 212 301 275 231 221 210 179 182 200 224 227 258 270 264 225 204 183 199 202 236 305 310 313 276 272 259 256 336 329 310 303 303 296 289 275 235 233 232 194 196 203 268 294 313 340 336 333 263 260 257 265 275 409 174964160

否则这个输出结构不满足我提到的约束。为什么?

最佳答案

  1. 为什么高于边界。

我认为您是在谈论结果中的最后一个数字:174964160。那是因为您使用了 num_of_var-1。而不是 num_of_var在计算lbup .

  1. 不满足不等式约束。

您可能需要进行更多迭代。否则你可以用不同的方式建模。而不是将变量 x 与 x(k) <= x(k+1) - 3 一起使用, 使用变量 dx(k)>=3表示x(k)之间的区别和 x(k+1) .

关于algorithm - MATLAB 遗传算法优化返回高于边界的整数值并违反不等式约束。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com