Re: [討論] 關於fmincon限制式的問題(有附檔案連結)
※ 引述《Dora (小叮噹)》之銘言:
: 各位前輩大家好
: 我想請問一下關於fmincon的限制式寫法我有一些疑惑
: 我先說目前的問題是:我最佳化疊代的結果沒有依照我給的範圍去解
: 答案會超出限制式範圍
: 先附上檔案以方便前輩們幫忙
: https://dl.dropbox.com/u/43545062/sample.rar
: 我的題目是這樣的
: 限制式:
: 0 < x < 2.875
: 0 < D < 0.05
: D= 0.38 / ( -15.58+19.27 * X )
: 目標:
: 求 min T
: T= sqrt(D^2)
我跑的結果顯示
Maximum number of function evaluations exceeded;
increase OPTIONS.MaxFunEvals.
也就是函數呼叫的次數到達上限
這時候跳出來的答案並不是解
另外不等式的限制式其實比較不好處理
可以把這題看成雙變數
x(1)代表原本的x, x(2)代表D
x和D的範圍當作lower and upper bounds
x和D的關係當作等式限制
改寫如下
程式的寫法
主程式
===================================
close all; clear; format long;
options = optimset('Display','iter','Algorithm','active-set');
[xStr, f_xStr] = ...
fmincon(@objfun,[1;0.01],[],[],[],[],[0;0],[2.875;0.05],@confun,options)
===================================
限制式副程式
===================================
function [c, ceq] = confun(x)
c = [
];
ceq = [
0.38 / ( -15.58+19.27 * x(1) )-x(2)
];
===================================
目標副程式
===================================
function f = objfun(x)
D = x(2);
f=sqrt(D^2);
===================================
這樣會解出x=2.875時
D有最小值0.009542643688985
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.146.175
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):