我是從這裏給出的模板程序工作:GNU模擬退火
https://www.gnu.org/software/gsl/manual/html_node/Trivial-example.html
,因爲他們給它編譯和運行完美的程序,這是很好的。我想要做的就是推廣這種方法,以找到具有任意數量參數的函數的最小值。
一些粗略閱讀表明度量函數(M1)僅用於某些診斷和打印情況,因此可以或多或少地被忽略。剩下的就是適當地定義E1和S1。不幸的是,我對使用指針和void的知識並不完整,所以我試圖將配置'xp'升級爲參數數組,而不是單個double。
在我的天真嘗試從
double x = *((double *) xp);
移動到
double x = (*((double *) xp))[0];
在適當情況下,但顯然沒有奏效。我確定我錯過了一些愚蠢的東西,所以任何提示都會很好!我顯然會定義自己的E1輸出功能,它將採用這N個參數並返回一個數字。
感謝蘭德爾。就像你說的那樣,它是混亂的,而且不是非常靈活,你能推薦任何使它更容易搜索更高維參數空間的庫嗎? – zylatis 2015-04-15 11:41:43
確認,無法編輯評論。我發現這裏給出的ADA快速教程非常有用。大量的小提琴選項,但也有能力在自己的功能和界限中運用它,非常酷! http://www.quantcode.com/modules/mydownloads/singlefile.php?lid=504 – zylatis 2015-04-15 13:19:30
@zylatis,很高興你發現有用的東西。我認爲你是一個更靈活的圖書館是正確的。畢竟,它是您想要的模擬退火算法,而不是它所包裝的庫。作爲參考,您可以在Stack Exchange上編輯註釋,但只能在短時間內處理,例如5分鐘。 – 2015-04-15 18:45:46