Re: [問題] 非線性規劃 主副程式變數使用問題已回收
※ 引述《sindyddd ()》之銘言:
: 謝謝h大的解說
: 恩 剛好就在昨天 再仔細看一次fmincon的說明
: 我把x0可以是矩陣看錯了 我看成x XD
: 因此今天測試 將每做一次迴圈 都把x視為向量 再把每一次結果都存起來
: 一開始測試時 先用i=1 i=2 i=3(不做迴圈) 速度很慢 不過值正確
: 但現在我有好幾筆資料(假設K筆) 在副程式使用迴圈上還是會遇到問題
: 請問主副程式的迴圈關係是...(主副都有迴圈)
: 主程式 i=1時 副迴圈從i=1:K 跑完將結果傳回主程式 最後得到解答嗎?
: 可是我現在想要 主程式i=1時 副迴圈直接跑i=1就好
: 主程式i=2時 副迴圈直接跑i=2就好
: 用過global i 但是不對
: 也試過加入return 但也不對 只能在i=1時成立 i=2就出包了....
: 想請問要怎麼做?
: 謝謝大家!!
先謝謝 waveken 與 hilosi 版友的解答
這幾天一直在測試 昨天算是誤打誤撞 弄出來= =(不過有些值有點誤差)
但是還是不太懂他為什麼會這樣
原本副程式 迴圈形式的限制 讓我一直弄不出來
試過先寫出如何計算i的程式 但是寫不出來...
說是誤打誤撞是因為 偶然看到logical這個指令
原本寫法: 主程式和副程式 都是一般寫法(迴圈形式)
修改後:
主程式在迴圈前加入golbal i
副程式則為:
global i
ce=[(1-x(1))*X_ck_BF(:,logical(i)+i-1)]; (因版面限制 只寫上部分)
^^^^^^^^^^^^^^
查過logical(x)的函數 只要不是零的數它都傳回1 (是吧?!)
本來以為這樣執行 他會出現錯誤訊息 結果沒想到他居然一直在跑....
logical(i)可以執行可以理解
但是後面的i? 那代表這個情況 i並非沒有被定義的數了?
也因為這樣 讓我主程式跑i=1時 副程式也只跑i=1了
主程式跑i=2時 副程式也只跑i=2了
而且副程式不用寫成迴圈形式 ....
請問這樣寫是ok的嗎? 還是只是運氣好XD 因為有些值仍有誤差
不過總共34筆資料 跑到17筆 就掛掉了... 而且跑好久= =....
請問有沒有別種指令 一樣能最佳化限制式為非線性與線性的指令
但速度可以快一點的? 或者有其他方法?
謝謝大家!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.126.147.48
※ 編輯: sindyddd 來自: 140.126.147.48 (08/18 17:26)
→
08/18 21:21, , 1F
08/18 21:21, 1F
→
08/18 23:19, , 2F
08/18 23:19, 2F
→
08/18 23:20, , 3F
08/18 23:20, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):