我是新來matlab,道歉,如果這個問題很愚蠢。我用fmincon
函數以導出矩陣(X),這將下面目標函數受試者最大化到非負性約束的元件,並且:Matlab fmincon不屈服全球最大/最小
其中
在我用來做這個的代碼中使用了fmincon
作爲客觀賦值nction是非線性的:
function optim = optim(m,n)
A= ones(1,m*n);
b = 100;
z = zeros(m,n);
in = inf(m,n);
X = ones(m,n);
[x, bestval] = fmincon(@myfun2,X,A,b,[],[],z,in,[])
function f = myfun2(x)
Alpha = 5;
%kappa = 5;
zeta = 5;
beta = 0.90909;
delta = 0.4;
gamma = 0.4;
pf = 1;
pw = 1;
for i= 1:m
f=0;
sum(i)=0;
for j=1:n
sum(i) = sum(i) +((beta^(i-1))*(-1)*(zeta)*(((Alpha*pf.*((x(i,j)).^delta))-
(pw.*x(i,j)))^gamma));
end
f = f+sum(i)
end
end
end
當代碼被用於5x5矩陣運行(的Optim(5,5)),將所得溶液 X =
1.5439 1.5439 1.5439 1.5439 1.5439
1.5439 1.5439 1.5439 1.5439 1.5439
1.5439 1.5439 1.5439 1.5439 1.5439
1.5439 1.5439 1.5439 1.5439 1.5439
3.1748 3.1748 3.1748 3.1748 3.1748
bestval =
-31.8780
但是,這不是一個全球最低 - 爲邊界條件,在全球最低指定我們將不得不(對第1行):
等了每一行。此外,我們將不得不爲每列:
第一列等等。所得到的矩陣不滿足這些條件。我已經看過堆棧溢出中的相關問題以及文檔,並且我沒有想到如何獲得更好的結果。代碼有問題嗎?代碼是否可以調整以獲得更好的結果?
我可以讓邊際條件成爲停止條件嗎?我該如何去做。或者我能否以某種方式使用雅可比行爲?任何幫助,將不勝感激。謝謝。
如果你有一個非凸函數最小化問題,那麼你就不能保證像'fmincon'基於梯度的求解器將返回全局最優解。相反,您可能會獲得本地最佳解決方案。 – josliber 2014-09-13 02:15:26