[問題] 非線性規劃 主副程式變數使用問題已回收

看板MATLAB作者時間15年前 (2010/08/12 16:58), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/5 (看更多)
恩..試了好久 還是不行 只好上來求助 程式主要是在有限制條件下做非線性規劃的動作 這是執行檔: 檔名:DMN_DEA Measure.m clc; clear; ----資料輸入部分(略)--- ----以下是限制條件為線性---- for i=1:K A=[X_vk_B(:,i),zeros(v,1),zeros(v,c),X_vk_B,zeros(v,K); Y_rk_I(:,i),zeros(r,1),zeros(r,c),-Y_rk_I,zeros(r,K); zeros(r,1),zeros(r,1),zeros(r,c),zeros(r,K),Y_minus_one; zeros(m,1),Y_mk_F(:,i),zeros(m,c),zeros(m,K),-Y_mk_F]; B=[X_vk_B(:,i);-Y_rk_I(:,i);Y_minus_one(:,i);-Y_mk_F(:,i)]; Aeq=[]; Beq=[]; lb=[0;0; 0.1 ;zeros(K,1);zeros(K,1)]; ub=[[];[];0.3;[];[]]; x0=zeros(2+2*K+c,1); [result(i,:),fval(i)]=fmincon(@DMNDEA,x0,A,B,Aeq,Beq,lb,ub,@DMN_confun); end 2.目標函數的m檔 --檔名:DMNDEA.m function f=DMNDEA(bet_B, bet_d) wB=1/2; wF=1/2; f=-wB * bet_B- wF* bet_d; return end 3.非線性限制條件的m檔-- 檔名:DMN_confun.m function [nceq,ceq]=DMN_confun(bet_B,bet_d,u,z_B,z_F) ---中間(略)--- bet_B=zeros(1,1); bet_B(:,:)=NaN; bet_d=zeros(1,1); bet_d(:,:)=NaN; % Nonlinear inequality constraints nceq=[X_ck_BF.*u*z_B-(1-bet_B)*X_ck_BF(:,i).*u(:,i) X_ck_BF.*(ones(c,K)-u)*z_F-(1-bet_d)*(ones(c,1)-u(:,i)).*X_ck_BF(:,i)]; % Nonlinear equality constraints ceq= []; return end 問題1: 程式跑出來是這個訊息 Input argument "bet_d" is undefined. 可是我 bet_B 也是這樣寫 為什麼他只說有 bet_d 問題? (改過其他命名 也是一樣....) 問題2: bet_B, bet_d ,u ,z_B ,z_F 都是未知數 (且皆為矩陣形式) 那還要定義他們嗎? 那應該在哪個程式定義呢? 一開始定義NaN可以嗎? 因為他們都是矩陣形式 所以我在執行檔寫迴圈 那目標函數跟非線性限制式還要寫成迴圈形式嗎? (實在不太懂主副程式怎麼用>"<..) 不好意思 內文有點長 問題有點多 請各位幫忙 謝謝大家!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.126.147.48

08/12 17:21, , 1F
當你認真看 fmincon 就會發現 x 似乎是單一變數
08/12 17:21, 1F

08/12 17:22, , 2F
而由你的內文發現你要最佳化 bet_b bet_c
08/12 17:22, 2F

08/12 17:23, , 3F
試一下 fmincon(@DMNDEA,[bet_b0;bet_c0],A,B,......
08/12 17:23, 3F

08/12 17:24, , 4F
也就是 xo=[bet_b0;bet_c0] 其他地方自己改
08/12 17:24, 4F

08/12 17:25, , 5F
但注意 整個架構也會稍作變動,改不少地方 要動點頭腦 !
08/12 17:25, 5F

08/12 17:40, , 6F
所以fmincon只能求單一變數?那我有5個變數 且都是矩陣>"<
08/12 17:40, 6F

08/12 17:42, , 7F
看的例子是單一變數 當時想說是方便舉例 謝謝你 天阿>"<
08/12 17:42, 7F

08/12 17:46, , 8F
將題目說更清楚吧 或是整個問題po上來 !
08/12 17:46, 8F
文章代碼(AID): #1COxUsR0 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1COxUsR0 (MATLAB)