2013-10-25 35 views
0

我試圖建立fmincon與線性約束極小化問題的有效集方法,其中最小化目標函數@fun這樣Matlab:fmincon的語法與積極集方法和只有不等式約束?

enter image description here

但試驗發射奇數個錯誤在歷史上。

試驗1

[x,fval]=fmincon(@fun, Guess, A, b) 

試驗2

options = optimoptions('fmincon','Algorithm','active-set'); 
[x,fval]=fmincon(@fun, Guess, A, b, options) 
+0

什麼是** ** exampleRHR?你不要在任何地方定義它。 –

+0

您能否定義** DijIIii **功能? –

+1

@Masi無關緊要,DijIIii和其他目標函數的格式是由fmincon手冊確定的,函數可以是任何東西。在瞭解了本手冊的語法後,我能夠正常工作。需要使用user2816823指示的空佔位符。 – hhh

回答

2

您正在使用的算法錯誤的選項。 MATLAB會查看您​​提供的參數並使用使用這些參數的算法。它會引發警告,因爲不同的算法可能會有不同的結果(並且您不應該忽略這些結果)'trust-region-reflective'是fmincon的默認算法。從文檔:

「信任區域反射」需要你提供的梯度,和 只允許界限或線性等式約束,但不能同時使用。

爲您的來電fmincon文檔說:

X = fmincon(FUN,X0,A,B)開始於X0,並試圖找到一個最小化的功能 X的樂趣描述受線性不等式的影響 A * x≤b。 x0可以是標量,向量或矩陣。

你可能打算用

X = fmincon(FUN,X0,A,B,AEQ,BEQ)

在這裏您將有A = [],B = [],並且Aeq和beq是你以前A和B之前的任何東西(如果你想使用可信區域反射)。

您的第二次試驗沒有奏效,因爲您實際上正在呼叫x = fmincon(fun,x0,A,b,Aeq,beq)。您改爲嘗試傳遞選項結構。

This page explains how to set options

編輯:如果你想傳遞選項,你必須指定所有可選參數:

[x,fval] = fmincon(@DijIIii,x0, A , b,[], [], [], [],@nonlcon,options); 
+0

我編輯了我的答案。如果你有不平等約束,只需將選項更改爲活動集並將其傳遞給我寫的fmincon調用。 – user2816823