2016-03-15 122 views
1

我有一個關於MATLAB函數gamultiobj函數獲取帕累託正題的問題。在MATLAB中優化目標函數

如何使用遺傳算法在線性約束最大化問題中轉換多個函數的最小化?

例如,而不是解決:

Min [2*x(1) - x(2) - exp(-x(1)); 
    x(1) + 2*x(2) - exp(-x(2))]; 

%with Bounds 
lb = [0;0]; 
ub = [1;1]; 

找到下面的最大值:

Max [2*x(1) - x(2) - exp(-x(1)); 
      -x(1) + 2*x(2) - exp(-x(2))]; 

%with Bounds 
lb = [0;0]; 
ub = [1;1]; 

回答

3

max(f(x))的解決方案是一樣的-min(-f(x))

Maximize and minimize

很簡單,自起只是最小化,可以使Matlab的改變你這樣的目標函數的每一個係數的符號最大化您的問題:

f = -[2*x(1) - x(2) - exp(-x(1)); 
    x(1) + 2*x(2) - exp(-x(2))]; 

你不需要改變你的上限和下限。

然後,一旦你運行該功能並獲得解決方案,請確保它們的符號也相反。這是必不可少的,否則你的解決方案將是錯誤的。

這種行爲也可以在用於解決線性規劃問題的函數linprogintlinprog中找到。

+0

謝謝你這個有用的把戲。這種behiavour也會出現在MATLAB函數fminimax中嗎? – user41037

+2

這是正確的。 'fminimax'也最小化,所以你需要應用這種相同的方法。 – codeaviator