❶ 怎麼用遺傳演算法工具箱調用神經網路來尋求最優解啊
把你之前訓練好的網路設置成一個全局變數ann,然後建立一個函數func,在func函數中調用這個訓練好的網路ann獲得輸出。最後,遺傳演算法調用func作為目標函數
❷ 用matlab優化工具箱自帶的遺傳演算法(只能找到近似最優解)時,往往重復計算很多次都不能得到最優解
要想得到較精確的最優解,可以通過設定Function tolerance的誤差值,Constrainttolerance的誤差值。
❸ 在matlab裡面GA遺傳演算法工具箱中怎麼找到多個局部最優解,我現在只能找到全局最優解
這個需要根據參數設置來進行的,參數設置合理就可以得到全局最優解,反之,可能得到局部最優解
❹ 在用matlab的優化工具箱中的linprog求解器或者其他求解器求最優值時,怎麼設置變數約束條件為整數
可以用分支定界法求解整數規劃問題,給你源碼:
function [x,fm] = IntProgFZ(f,A,b,Aeq,beq,lb,ub)
x = NaN;
fm = NaN;
NF_lb = zeros(size(lb));
NF_ub = zeros(size(ub));
NF_lb(:,1) = lb;
NF_ub(:,1) = ub;
F = inf;
while 1
sz = size(NF_lb);
k = sz(2);
opt = optimset('TolX',1e-9);
[xm,fv,exitflag] = linprog(f,A,b,Aeq,beq,NF_lb(:,1),NF_ub(:,1),[],opt);
if exitflag == -2
xm = NaN;
fv = NaN;
end
if xm == NaN
fv = inf;
end
if fv ~= inf
if fv < F
if max(abs(round(xm) - xm))<1.0e-7
F = fv;
x = xm;
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最優解!');
x = NaN;
fm = NaN;
return;
end
end
else
lb1 = NF_lb(:,1);
ub1 = NF_ub(:,1);
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
[bArr,index] = find(abs((xm - round(xm)))>=1.0e-7);
p = bArr(1);
new_lb = lb1;
new_ub = ub1;
new_lb(p) = max(floor(xm(p)) + 1,lb1(p));
new_ub(p) = min(floor(xm(p)),ub1(p));
NF_lb = [NF_lb new_lb lb1];
NF_ub = [NF_ub ub1 new_ub];
continue;
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最優解!');
x = NaN;
fm = NaN;
return;
end
end
end
else
tmpNF_lb = NF_lb(:,2:k);
tmpNF_ub = NF_ub(:,2:k);
NF_lb = tmpNF_lb;
NF_ub = tmpNF_ub;
if isempty(NF_lb) == 0
continue;
else
if x ~= NaN
fm = F;
return;
else
disp('不存在最優解!');
x = NaN;
fm = NaN;
return;
end
end
end
end
❺ 求高手用matlab的LMI工具箱 或者 YALMIP工具包 求下列矩陣不等式中η的最優解(最大值)。
和可惜不會啊
❻ 怎麼用遺傳演算法工具箱求多目標函數的最優解
可以用多個目標並列選擇法,將種群按照目標函數的個數進行劃分,分別進行適應度排序,選擇,然後將選出的子種群合並,再進行交叉、變異等操作。