Matlab - 混合整数优化的遗传算法

时间:2017-07-03 00:25:43

标签: algorithm matlab anonymous-function genetic-algorithm

我想解决的问题基于以下代码:

JEE 6 tutorial

我的功能有很多变量,但基本上是相同的。我有一组需要在给定约束下优化的变量。一些变量必须是离散的。但是,它们只能取值0和1,我不必指定它们,如示例中所示。 (虽然我尝试了两种方法)

首先,我创建了上边界和下边界,分别创建了一个大小为1x193的变量。

[lb,ub] = GWO_LUBGA(n_var,n_comp,C,n_comp); 

然后我调出约束。由于我有离散值,我不能使用等式约束。因此,我使用此处提出的解决方法:

https://www.mathworks.com/help/gads/examples/solving-a-mixed-integer-engineering-design-problem-using-the-genetic-algorithm.html

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 = 193C.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);

输入随机值时,两个匿名函数都有效。造成这种错误的原因是什么?

0 个答案:

没有答案