作者asiabanana (bananabrother)
看板MATLAB
標題[討論] fmincon求最佳解問題
時間Tue Oct 30 21:27:26 2018
我的主程式可以求得我空間節點分布關係的矩陣
接著求出這個矩陣的次小特徵值
然後這個主程式的變量為一個X的座標向量
現在想要用fmincon的工具求出我X的擺放位置
來使我的次小特徵值可以達到最大
我的主程式如下
clc
clear all
A=[];
b=[];
x0=[0;0;0]
X = fmincon(@myfun,x0,A,b)
然後這是myfun的內容
f=myfun(X)
.
.
.
.
輸入X會得出一個L矩陣
[V,Eig]=eig(L);
f=-Eig(2,2); %這個為我想要讓他得到最大值的解 因要求最大解所以有加負號
end
雖然可以成功執行
但是找出來的X值都會是我設定的x0
Command Window內沒有看到他去做迭代的過程
直接顯示
Optimization completed because at the initial point, the objective function
is non-decreasing
in feasible directions to within the default value of the optimality
tolerance, and
constraints are satisfied to within the default value of the constraint
tolerance.
麻煩懂這個工具的高手拯救一下了!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.92.20
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1540906049.A.802.html
1F:推 sunev: 沒有constaint 幹嘛不用fminunc ? 10/30 22:40
2F:推 sunev: x0給太爛,導致x0變一點點目標無變化,做不下去 10/30 22:45
3F:→ asiabanana: 其實是有限制式的 想先試試看沒有限制是跑不跑得出來 10/31 00:36
4F:→ asiabanana: 我明天會試試看另一個函式! 10/31 00:36
5F:推 profyang: 你的X的每個分量值差很多嗎?之前試過把它normalize到一 10/31 17:41
6F:→ profyang: 個比較接近的範圍就解決了 給你參考而已 我也不確定 10/31 17:42
7F:→ asiabanana: 我現在的問題是他每步迭代的值太小 所以跳不出變化 10/31 23:02
8F:→ asiabanana: 除非我的初值設得十分接近 不然完全跑不動 10/31 23:02
9F:→ asiabanana: 現在再想有沒有方法可以調整他的stepsize 10/31 23:03
10F:推 sunev: 你有自己算過stepsize要多大才合理嗎?我懷疑你的函數根本 11/01 14:04
11F:→ sunev: 是類似step function 11/01 14:05
12F:→ asiabanana: 我自己大概算過 我的stepsize大約是0.5~1 11/01 15:02
13F:→ asiabanana: 但是command window裡每次迭代都是0.0001 變化太小 11/01 15:03
14F:→ asiabanana: 如果可以讓我迭代次數達我自己設置的值應該就解決了 11/01 15:49
15F:推 sunev: 如果你確定你的問題不是離散形的話,改x的scale大概是一個 11/02 08:49
16F:→ sunev: 辦法,不然就是生出一個gradient 11/02 08:50
17F:推 profyang: 我上面的意思就是改x的scale 例如把x全部除以一個合理的 11/02 22:18
18F:→ profyang: 數 在稍微變動一下你的函數 出來結果一樣就好 11/02 22:19
19F:→ profyang: 要不然就像上面說的自己寫gradient 用數值的grad也可以 11/02 22:19
20F:→ profyang: 但一樣就是你去近似微分的dx的scale要合理 11/02 22:20
21F:推 sherees: 有點久的文了 不知道原PO有沒有被回答到 11/19 11:33
22F:→ sherees: 推測可能是起始落在 saddle point 求不出導數所以卡住 11/19 11:34
23F:→ sherees: 可以先試試normalization(這部分你可能需要研究一下自 11/19 11:36
24F:→ sherees: 定義函數在各個維度的scaling) 11/19 11:36
25F:→ sherees: 另外就是起始值給noise 11/19 11:37