看板 MATLAB 關於我們 聯絡資訊
我的主程式可以求得我空間節點分布關係的矩陣 接著求出這個矩陣的次小特徵值 然後這個主程式的變量為一個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://www.ptt.cc/bbs/MATLAB/M.1540906049.A.802.html
sunev: 沒有constaint 幹嘛不用fminunc ? 10/30 22:40
sunev: x0給太爛,導致x0變一點點目標無變化,做不下去 10/30 22:45
asiabanana: 其實是有限制式的 想先試試看沒有限制是跑不跑得出來 10/31 00:36
asiabanana: 我明天會試試看另一個函式! 10/31 00:36
profyang: 你的X的每個分量值差很多嗎?之前試過把它normalize到一 10/31 17:41
profyang: 個比較接近的範圍就解決了 給你參考而已 我也不確定 10/31 17:42
asiabanana: 我現在的問題是他每步迭代的值太小 所以跳不出變化 10/31 23:02
asiabanana: 除非我的初值設得十分接近 不然完全跑不動 10/31 23:02
asiabanana: 現在再想有沒有方法可以調整他的stepsize 10/31 23:03
sunev: 你有自己算過stepsize要多大才合理嗎?我懷疑你的函數根本 11/01 14:04
sunev: 是類似step function 11/01 14:05
asiabanana: 我自己大概算過 我的stepsize大約是0.5~1 11/01 15:02
asiabanana: 但是command window裡每次迭代都是0.0001 變化太小 11/01 15:03
asiabanana: 如果可以讓我迭代次數達我自己設置的值應該就解決了 11/01 15:49
sunev: 如果你確定你的問題不是離散形的話,改x的scale大概是一個 11/02 08:49
sunev: 辦法,不然就是生出一個gradient 11/02 08:50
profyang: 我上面的意思就是改x的scale 例如把x全部除以一個合理的 11/02 22:18
profyang: 數 在稍微變動一下你的函數 出來結果一樣就好 11/02 22:19
profyang: 要不然就像上面說的自己寫gradient 用數值的grad也可以 11/02 22:19
profyang: 但一樣就是你去近似微分的dx的scale要合理 11/02 22:20
sherees: 有點久的文了 不知道原PO有沒有被回答到 11/19 11:33
sherees: 推測可能是起始落在 saddle point 求不出導數所以卡住 11/19 11:34
sherees: 可以先試試normalization(這部分你可能需要研究一下自 11/19 11:36
sherees: 定義函數在各個維度的scaling) 11/19 11:36
sherees: 另外就是起始值給noise 11/19 11:37