Julia高性能科學計算 : 第2版
  • 推薦0
  • 收藏0
  • 瀏覽230

Julia高性能科學計算 : 第2版

Changhyun Kwon ( 權昌賢) (作者)  徐國棟 , 李琦 (譯者) 張春雨 (責任編輯)

  • 書  號: 978-7-121-38177-5
  • 出版日期:2020-05-01
  • 頁  數:240
  • 開  本:16(170*240)
  • 出版狀態:正在印刷
  • 原書名: Julia Programming for Operations Research
  • 原書號:9781798205471
  • 維護人:崔志偉
Julia 像C一樣快,像MATLAB 一樣方便,并且像Python 一樣通用。在Julia 開發者,特別是JuMP 包開發者的大力支持下,Julia 為運籌學及相關領域的高性能科學計算提供了一個強大的工具——JuMP。
本書對Julia 語法基礎及其標準庫、編程技巧、數值優化、優化求解、計算機科學計算都有所涉及,它可以作為計算機科學計算的入門圖書使用;本書作者是美國南佛羅里達大學副教授Changhyun Kwon,他為了方便學生的研究、學習寫下本書,所以本書也可以作為高校研究生和教師的有用的參考書。
寫這本書的主要動機是幫助作者自己。作為運籌學領域的教授,他的日?;顒影ń祵W優化模型、開發解決問題的算法、使用計算機編程語言實現這些算法、用數據進行實驗等等。涉及三種語言:人類語言、數學語言和計算機語言。他的學生團隊需要復習三種不同的語言,這就需要在三種語言之間進行“翻譯”。這本書是為了教他的研究小組如何翻譯而寫的,對于任何需要在類似情況下學習如何翻譯的人來說,這本書也是很有用的。Julia語言與C語言一樣快,與MATLAB一樣方便,與Python一樣通用,為數學優化問題提供了靈活的代數建模語言。在Julia開發人員的大力支持下,特別是JuMP-Julia for math programming package開發人員的大力支持下,Julia為從事運籌學及相關領域(如工業工程、管理科學、交通工程、經濟學和區域科學)的學生和專業人員提供了一個完美的工具。
徐國棟:浙江大學計算機專業碩士,目前主要從事與3D視覺相關的研究,Julia愛好者,Julia中文社區翻譯參與者。
李琦:生物信息資深從業者,星宇辰庚CEO。Julia骨灰粉,Julia中文社區翻譯參與者。
寫作本書的主要目的是“幫助我自己”。我是一位運籌學教授,每天都做著構建數學優化模型、開發解決問題的算法、用計算機編程語言執行這些算法、用數據做實驗等工作。這期間會用到人類語言、數學語言和計算機語言這3 種語言。我的學生和我需要在這3 種語言之間進行跳轉,我們需要在這3 種語言之間進行“翻譯”。
當有學生因這類“翻譯”任務向我求助時,我通常把自己之前的“翻譯”作為例子,或者查找網上可能有幫助的資源給他。如果學生的數學基礎不錯,有足夠的計算機編程經驗,對數學計算的工作原理理解得很好,那么他學起來就會比較容易,我每天的研究和教學任務也會進行得比較順利。
但不盡如人意的是,很多搞運籌學的研究生需要花很長時間去學習如何“翻譯”。寫作本書就是為了讓我能夠更好地幫助他們。
我既不是計算機科學家,也不是軟件工程師。所以,本書并沒有教授最好的“翻譯”方法,而是講解在運籌學和管理學的研究和開發工作中,如何完成一些常見的任務。這只是“一種翻譯”,并且很可能不是最好的“翻譯”。但閱讀本書后,讀者應該能夠學會用這樣或那樣的方式去搞定任務。
本書教些什么
本書不只是關于數值計算方法的教科書、Julia 編程綜合介紹書、數值優化的教科書、優化求解完全手冊,也不只是計算機科學和工程的入門書——本書對這些內容都有所涉及。
本書首先會講解如何安裝Julia 語言。然后講一些語法、Julia 的標準庫、Julia編程技巧、一些數值方法、優化模型、蒙特卡洛方法、算法和一些優化解決方案。
本書絕不是以上提到的各個領域的完整的教科書,也不該被單獨當作教科書來使用。在我看來,最好把本書與其他運籌學和管理學的主要教科書和參考書一起使用。本書的讀者需要熟悉或愿意從其他參考文獻中自學優化理論和算法。當然,我在書中提供了相關領域的我所知的最好的參考資料。
閱讀本書后,讀者就有了一些寫代碼的經驗,就應該能夠檢索和閱讀更多網上的技術文檔了。本書將幫助你邁出學習運籌學和管理學計算的第一步——這事實上是一本計算機入門圖書。
本書怎么用
本書無疑對研究生及他們的導師完成研究任務會有很大的幫助。低年級研究生可以把本書當作可選優化求解器和算法的輔導書,也可以當作學習指南。當研究生在學習各種課程時,本書將會是學習如何解決特定優化問題和實現算法的好起點。最后,本書也將會是他們做論文研究的有用參考書之一。
高年級研究生可以把本書作為參考文獻。例如,當需要為他們的問題執行拉格朗日松弛法時,他們可以參考本書的對應章節學習如何執行。
我同時還希望,本書可以作為運籌學、分析學、線性規劃、非線性規劃、數值優化、網絡優化、管理學及運輸工程的補充教科書。對運籌學專業和管理學專業來說,數值方法和計算機計算工具是必修的課程,老師可以根據自己的主要關注點,將本書作為初級或中級教科書。
高級程序員需注意
如果你已經熟悉計算機計算和至少一種計算機編程語言,我認為本書可能對你意義不大。網上有很多資源可以讓你學習Julia 語言并很容易地跟進最新進展。但如果你希望學得更快,遇到的問題更少,本書將對你有所幫助。
我在學Julia 之前有MATLAB 和Java 的編程經驗。學習Julia 并不難,相反,它令人激動又很有趣。我們只需要一些好的“借口”去學習和使用Julia。閱讀第1章可以了解這些“借口”。
參考資料說明
本書提供了大量的參考資料以方便讀者更好地了解書中提到的相關技術及工具。為了保證參考資料相關鏈接能夠實時更新,特將“參考資料”文檔放于博文視點官方網站,讀者可在http://www.mmzxjp.buzz/38177 頁面進行下載。
致謝
我誠摯地感謝Julia 開發者的辛勤努力。Julia 是一門美麗的語言,我非常喜歡。它完全改變了我每天的計算生活。我也很感激JuMP 和其他相關軟件包的開發者。自從有了JuMP,我不再需要去尋找更好的模型語言了。
Changhyun Kwon
于美國佛羅里達州 坦帕

目錄

第1 章 介紹和安裝 ······························································································· 1
1.1 什么是Julia 及為什么要使用Julia ······································································ 2
1.2 安裝Julia ··········································································································· 4
1.2.1 在Windows 系統上安裝Julia ························· ········································· 4
1.2.2 在macOS 系統上安裝Julia ······································································ 9
1.2.3 運行Julia 腳本 ···························································································· 13
1.2.4 安裝Gurobi·································································································· 13
1.2.5 安裝CPLEX ································································································ 15
1.3 安裝IJulia·············································································································· 17
1.4 包管理 ················································································································· 20
1.5 幫助 ····················································································································· 22
第2 章 簡單線性規劃·································································································· 24
2.1 線性規劃問題 ······································································································· 25
2.2 寫線性規劃問題的其他方式 ·················································································· 29
2.3 寫線性規劃問題的另一種方式 ··············································································· 31
2.4 混合整數線性規劃問題 ························································································· 32
第3 章 Julia 語言基礎 ······························································································· 35
3.1 向量、矩陣和數組 ································································································ 35
3.2 元組 ····················································································································· 40
3.3 索引和范圍 ··········································································································· 42
3.4 打印信息 ··············································································································· 45
3.5 集合、字典和循環 ································································································· 47
3.6 函數 ······················································································································ 50
3.7 變量的作用域 ········································································································ 52
3.8 隨機數生成 ············································································································ 55
3.9 文件讀/寫 ·············································································································· 59
3.10 繪圖 ···················································································································· 63
3.10.1 PyPlot 包····································································································· 64
3.10.2 在PyPlot 中避免使用第三方字體································································· 68
第4 章 數值方法選講··································································································· 70
4.1 曲線擬合 ··············································································································· 70
4.2 數值微分 ··············································································································· 75
4.3 數值積分 ··············································································································· 78
4.4 自動微分 ··············································································································· 80
第5 章 單純形法 ········································································································· 84
5.1 單純形法簡介 ········································································································ 84
5.2 查詢所有基本可行解 ······························································································ 87
5.3 使用JuMP 包 ········································································································· 93
5.4 表格式的樞軸旋轉 ·································································································· 93
5.5 單純形法的實現 ······································································································ 95
5.5.1 initialize(c,A,b) ································································································ 97
5.5.2 is_optimal(tableau) ··························································································· 99
5.5.3 pivoting!(tableau) ···························································································· 100
5.5.4 創建模型 ····································································································· 104
5.6 后面的步驟 ··········································································································· 110
第6 章 網絡優化問題··································································································· 111
6.1 最小費用網絡流問題 ····························································································· 111
6.2 運輸問題 ··············································································································· 121
6.3 最短路徑問題 ········································································································ 127
6.4 實現Dijkstra 算法 ·································································································· 132
第7 章 內點法 ············································································································ 138
7.1 仿射尺度算法 ········································································································ 138
7.2 原路徑跟蹤算法 ···································································································· 144
7.3 評述 ······················································································································ 149
第8 章 非線性優化問題 ······························································································ 151
8.1 無約束優化 ··········································································································· 151
8.1.1 線性搜索 ···································································································· 151
8.1.2 無約束優化 ································································································ 153
8.1.3 盒約束優化 ································································································ 154
8.2 非線性優化 ·········································································································· 155
8.3 其他求解器 ·········································································································· 156
8.4 混合整數非線性規劃 ···························································································· 161
第9 章 蒙特卡洛方法·································································································· 163
9.1 概率分布 ·············································································································· 163
9.2 隨機線性規劃 ······································································································· 165
9.3 估算簡單路徑的數目 ···························································································· 172
第10 章 拉格朗日松弛 ······························································································ 181
10.1 拉格朗日松弛介紹 ······························································································ 181
10.1.1 下界與上界 ······························································································ 182
10.1.2 次梯度優化 ······························································································ 183
10.1.3 總結 ········································································································· 184
10.2 p-中位問題 ·········································································································· 184
10.2.1 讀取數據文件 ··························································································· 186
10.2.2 最優化求解p-中位問題 ·············································································· 188
10.2.3 拉格朗日松弛應用 ····················································································· 189
10.2.4 求解下界 ·································································································· 189
10.2.5 求解上界 ·································································································· 193
10.2.6 更新拉格朗日乘子 ···················································································· 195
第11 章 互補問題 ····································································································· 208
11.1 線性互補問題(LCP) ························································································ 208
11.2 非線性互補問題(NCP) ···················································································· 216
11.3 混合互補問題(MCP) ······················································································· 220
第12 章 最優化求解器中的參數 ················································································· 221
12.1 設置CPU 時間限制 ····························································································· 221
12.2 設置最優化間隙公差 ··························································································· 222
12.3 熱啟動 ················································································································ 223
12.4 Big-M 與整性公差 ······························································································· 224
12.5 關掉求解器的輸出 ······························································································ 225
12.6 其他求解器參數 ·································································································· 226

讀者評論

相關圖書

程序員修煉之道:通向務實的最高境界(第2版)

THOMAS, DAVID; HUNT, ANDREW (作者)

《程序員修煉之道》之所以在全球范圍內廣泛傳播,被一代代開發者奉為圭臬,蓋因它可以創造出真正的價值:或編寫出更好的軟件,或探究出編程的本質,而所有收獲均不依賴于特...

¥89.00

ASP.NET Core 3框架揭秘

蔣金楠 (作者)

本書主要闡述 ASP.NET Core 最核心的部分——請求處理管道。通過閱讀本書,讀者可以深刻系統地了解 ASP.NET Core 應用在啟動過程中管道的構建...

¥199.00

全棧自動化測試——基于Java和TestNG

盧家濤 (作者)

TestNG 作為Java 中舉足輕重的測試框架,除可以替代JUnit 進行單元自動化測試外,還可以通過集成Selenium、Appium 和HttpClien...

 

Spring Cloud微服務架構實戰

陳韶健 (作者)

本書以Spring Cloud為主導,以電商平臺為實例,從服務架構設計的角度,對架構設計、程序開發、運維部署三個層面進行了詳細的闡述。本書不僅詳細介紹了如何使用...

 

Python核心編程從入門到開發實戰

朱紅慶 (作者)

本書以學會、用好 Python 語言進行軟件編程為目標,不僅講解了基本概念、數據類型、變量、運算符、函數、程序的控制結構等 Python 語言的基礎知識,還深入...

 

深度剖析Apache Dubbo核心技術內幕

翟陸續 (作者)

Dubbo是阿里巴巴開發的一個開源的高性能、高可用、可擴展的分布式RPC調用框架,致力于提供高性能和透明化的 RPC 遠程調用服務解決方案。作為阿里巴巴 SOA...

 
国际官方棋牌下载中心 甘肃快三每天多少期 亚洲彩票 配资渠道规范佳永配资 北京pk10规则 山西体彩十一迭五走势 股票配资平台靠什么赚钱 河南快3历史开奖结果500期1000期 天津快乐十分开奖走势 内蒙古快3最大遗漏提示 新浪股市十大名博排名