Re: [問題]for迴圈問題

看板MATLAB作者 (橋)時間11年前 (2012/10/11 17:21), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串3/4 (看更多)
只提供想法 沒有實際驗證 主要用11進位的概念操作 b=[11:-1:0]; c=11.^b; //(11^11 11^10 ......11^0) for k = 0 : 11^12-1 d=floor(k./c); a=mod(d,11)+1; // (11進位完成 為 1~11的數字) result=fun_A(a); end 至於這樣會比 12層 for迴圈快多少 我就不知道了 ※ 引述《ben2103gto (不要調查我)》之銘言: : 小弟新手,問到蠢問題 請勿見怪。 : 採用方法: Brute Force,以下提供問題碼 : for i=1:11 : for j=1:11 : for k=1:11 : . : a=[i j k l m n o p q r s t]; : . result=fun_A(a); : . : end : end : end : 打出這麼笨的問題碼,請原諒。 : 假使總共有12個變數,每個變數有一到十一的可能(1 2 3...11) : 每次產生一種組合就會跑出一個結果值, : 目的就是要取得什麼組合下會有最大的result值。 : 想請問這種巢狀迴圈有沒有更聰明的寫法,不然要跑超久 = =冏 : 感謝大家耐心看完此問題,在煩請大家給我點意見。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.71.216.251 ※ 編輯: bridge23 來自: 210.71.216.251 (10/11 17:22) ※ 編輯: bridge23 來自: 210.71.216.251 (10/11 17:23) ※ 編輯: bridge23 來自: 210.71.216.251 (10/11 17:24)

10/12 09:21, , 1F
有稍微試了一下,結果迴圈數太多 跑出下述訊息
10/12 09:21, 1F

10/12 09:22, , 2F
Forloop index is too large Truncating to 2147483647
10/12 09:22, 2F

10/12 09:23, , 3F
有點杯具
10/12 09:23, 3F

10/12 11:27, , 4F
11^12~=3e12=3T, cpu如果有3G的速度,最少也要1k秒
10/12 11:27, 4F

10/12 11:28, , 5F
你的計算一次不會只有一個cpu cycle. 所以它就是這麼慢
10/12 11:28, 5F

10/12 13:49, , 6F
之前試過使用ga function 無法求出"最佳"解
10/12 13:49, 6F

10/12 13:50, , 7F
暴力法又花太多時間 有點不知該如何處理 QQ
10/12 13:50, 7F
文章代碼(AID): #1GTe-7pJ (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1GTe-7pJ (MATLAB)