[問題] fmincon副程式及迴圈使用問題已回收
恩...我又來了 問題還是沒有解決>"<
我想求存有非線性限制式下的最適解
目標函數為線性 限制式函數有非線性 也有線性
因為上次w大的解說 fmincon只能適用單變數
而我須求的變數總共有5個 2個為向量 3個為矩陣 因此我將此5個變數都弄在x矩陣裡
可是在跑的時候卻出現了問題 因為有好幾組資料下去跑 因此採用迴圈的形式
跑到最後一組後 此時求出來的整個x解應該是 [2*K+2+c , K] 這樣大小的矩陣
剛剛先寫成沒有迴圈的形式 結果是對的 但寫成迴圈 卻跑出錯誤
但不可能一個一個寫阿 >"< 可能是迴圈使用方式不對
想請大家幫我看一下... (恩 講好長= =)
--------------------------------------------------------------------------
我的資料總共有K組 利用迴圈後 可得到 [2*K+2+c , K] 的變數解 (不是目標函數)
==========================================================================
執行檔:
---- 資料及參數輸入 (略)----
for i=1:K
A=[X_vk_B(:,i),zeros(v,1),X_vk_B,zeros(v,K),zeros(v,c);
Y_rk_I(:,i),zeros(r,1),-Y_rk_I,zeros(r,K),zeros(r,c);
zeros(r,1),zeros(r,1),zeros(r,K),Y_minus_one,zeros(r,c);
zeros(m,1),Y_mk_F(:,i),zeros(m,K),-Y_mk_F,zeros(m,c)];
B=[X_vk_B(:,i);-Y_rk_I(:,i);Y_minus_one(:,i);-Y_mk_F(:,i)];
Aeq=[];
Beq=[];
lb=[0;0;zeros(K,1);zeros(K,1);repmat(0.1,[c,1])];
ub=[[];[];[];[];repmat(0.3,[c,1])];
x0=zeros(2*K+c+2,1);
[x(i,:),fval(i)]=fmincon(@myfun_DMN_DEA,x0,A,B,Aeq,Beq,lb,ub,@mynoncon_DMN_DEA)
end
===========================================================================
目標函數的m檔:myfun_DMN_DEA.m
function f=myfun_DMN_DEA(x)
--- 資料輸入(略)---
for i=1:K
wB=1/2;
wF=1/2;
f(i)=-wB*x(1,i)-wF*x(2,i);
end
===========================================================================
非線性限制式函數的m檔: mynoncon_DMN_DEA.m
function [ce ceq]=mynoncon_DMN_DEA(x)
for i=1:K
ce(2*i-1,:)=X_ck_BF*x(3:K+2,i).*x(2*K+3:2*K+2+c,i)-
(1-x(1,i))*X_ck_BF(:,i).*x(2*K+3:2*K+2+c,i);
ce(2*i,:)=X_ck_BF*x(K+3:2*K+2,i).*x(2*K+3:2*K+2+c,i)-
(1-x(2,i))*X_ck_BF(:,i).*(ones(c,1)-x(2*K+3:2*K+2+c,i));
ceq=[];
end
結果卻出現:
??Attempted to access x(1,2); index out of bounds because size(x)=[74,1].
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這應該是說我x維度的問題 他說我只有[74,1]的大小 但我卻要跑出x(1,2)
可是我就是想一個一個跑....
Error in ==> myfun_DMN_DEA at 17
f(i)=-wB*x(1,i)-wF*x(2,i);
Error in ==> fmincon at 540
initVals.f = feval(funfcn{3},X,varargin{:});
Error in ==> DMN_DEA at 39
[x(i,:),fval(i)]=fmincon(@myfun_DMN_DEA,x0,A,B,Aeq,Beq,lb,ub,@mynoncon_DMN_DEA);
Caused by:
Failure in initial user-supplied objective function evaluation.
FMINCON cannot continue.
恩 我用i=1去跑 沒有迴圈形式 答案是對的(不過非常慢 有點疑惑@"@)
但用迴圈就出現錯誤了....
請各位幫忙!!! 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.126.147.48
→
08/16 10:04, , 1F
08/16 10:04, 1F
推
08/16 13:20, , 2F
08/16 13:20, 2F
→
08/16 13:21, , 3F
08/16 13:21, 3F
→
08/16 13:22, , 4F
08/16 13:22, 4F
→
08/16 13:23, , 5F
08/16 13:23, 5F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):