看板 MATLAB 關於我們 聯絡資訊
只提供想法 沒有實際驗證 主要用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)
ben2103gto:有稍微試了一下,結果迴圈數太多 跑出下述訊息 10/12 09:21
ben2103gto:Forloop index is too large Truncating to 2147483647 10/12 09:22
ben2103gto:有點杯具 10/12 09:23
kdjf:11^12~=3e12=3T, cpu如果有3G的速度,最少也要1k秒 10/12 11:27
kdjf:你的計算一次不會只有一個cpu cycle. 所以它就是這麼慢 10/12 11:28
ben2103gto:之前試過使用ga function 無法求出"最佳"解 10/12 13:49
ben2103gto:暴力法又花太多時間 有點不知該如何處理 QQ 10/12 13:50