Julia 像C一样快,像MATLAB 一样方便,并且像Python 一样通用。在Julia 开发者,特别是JuMP 包开发者的大力支持下,Julia 为运筹学及相关领域的高性能科学计算提供了一个强大的工具——JuMP。
本书对Julia 语法基础及其标准库、编程技巧、数值优化、优化求解、计算机科学计算都有所涉及,它可以作为计算机科学计算的入门图书使用;本书作者是美国南佛罗里达大学副教授Changhyun Kwon,他为了方便学生的研究、学习写下本书,所以本书也可以作为高校研究生和教师的有用的参考书。
写这本书的主要动机是帮助作者自己。作为运筹学领域的教授,他的日常活动包括建立数学优化模型、开发解决问题的算法、使用计算机编程语言实现这些算法、用数据进行实验等等。涉及三种语言:人类语言、数学语言和计算机语言。他的学生团队需要复习三种不同的语言,这就需要在三种语言之间进行“翻译”。这本书是为了教他的研究小组如何翻译而写的,对于任何需要在类似情况下学习如何翻译的人来说,这本书也是很有用的。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.broadview.com.cn/38177 页面进行下载。
致谢
我诚挚地感谢Julia 开发者的辛勤努力。Julia 是一门美丽的语言,我非常喜欢。它完全改变了我每天的计算生活。我也很感激JuMP 和其他相关软件包的开发者。自从有了JuMP,我不再需要去寻找更好的模型语言了。
Changhyun Kwon
于美国佛罗里达州 坦帕
源代码能不能分享一下,谢谢!
没有参考资料列表!