我想解决的问题基于以下代码:
我的功能有很多变量,但基本上是相同的。我有一组需要在给定约束下优化的变量。一些变量必须是离散的。但是,它们只能取值0和1,我不必指定它们,如示例中所示。 (虽然我尝试了两种方法)
首先,我创建了上边界和下边界,分别创建了一个大小为1x193
的变量。
[lb,ub] = GWO_LUBGA(n_var,n_comp,C,n_comp);
然后我调出约束。由于我有离散值,我不能使用等式约束。因此,我使用此处提出的解决方法:
ObjCon = @(x) funconGA(x,C,ub,n_comp);
目标函数相同:
ObjFcn = @(x) CostFcnGA(x,C);
然后我把它传递给遗传算法:
[Pos,Best,~,GWO_cg_curve] = ga(ObjFcn,n_var,[],[],[],[],lb,ub,ObjCon,C.T*6+2:C.T*8+1,opts);
n_var = 193
和C.T=24
当我尝试编译时,收到以下错误:
使用ga时出错(第366行) 连接的矩阵的尺寸不一致。
第366行包含以下代码。不幸的是,gaminlp无法打开。
% Call appropriate single objective optimization solver
if ~isempty(intcon)
[x,fval,exitFlag,output,population,scores] = gaminlp(FitnessFcn,nvars, ...
Aineq,bineq,Aeq,beq,lb,ub,NonconFcn,intcon,options,output,Iterate);
输入随机值时,两个匿名函数都有效。造成这种错误的原因是什么?