ARM LINUX入门与实践
一个嵌入式爱好者的自学体验,从零介绍ARM和LINUX的方方面面博客稳阁丛书程方网名阿南曰曰强个嵌入式爱好者的自学体验南编著与实践京航空统无荟出版社内容简介本书是以作者自学、应用嵌入式 Linux时的笔记(包括实验、出现的问题、调试过程、经验总结等)为基础,再增加应用到的硬件平台而成的。全书以亲自制作实验平台硬件,亲自设计实验软件为线索,指导读者从零开始学习到最终掌握ARM和 Linux应用的方方面面。全书可以分成ARM硬件、ARM前后台系统应用和基于Lnux系统的应用3个部分。ARM硬件部分包括整个硬件的原理分析、原理图、PCB板的绘制、元件焊接、硬件的检测与调试。ARM前后台系统应用部分包括启动代码、处理器内部外设、扩展外部设备及接口等的所有底层软件分析与实现,还有 Bootloader、文件系统、GUI等的原理与实现。 Linux系统的应用部分包括基于PC机的操作、应用编程和驱动、嵌入式 Linux的汗发环境创建、各种硬件的驱动实现、网络编程、图形用户界面设计等。本书可作为有志于掌握ARM、 Linux等嵌入式技术的高校学生、工程师等的参考书。图书在版编目(CIP)数据ARM Linux人门与实践/程昌南,方强编著.一北京:北京航空航天大学出版社,2008.10ISBN978-7-81124-422-9I.A…Ⅲ.①程…②方…Ⅲ.①微处理器,ARM系统设计② Linux操作系统一系统设计Ⅳ.TP332TP316.89肀国版本图书馆CIP数据核字(2008)第150813号c2009,北京航空航天大学出版社,版权所有。未经本书出版者书面许可,任何单位和个人不得以任何形式或手段复制本书及光盘内容。侵权必究。ARM Linux入门与实践一个嵌入式爱好者的自学体验程昌南[网名阿南]编著方强责任编辑董立娟北京航空航天大学出版社出版发行北京市海淀区学院路37号(100191)发行部电话:010-82317024传真:010-82328026http://www.buaapress,comcnE-mail:bhpress@263.net涿州市新华印刷有限公司印装各地书店经销开本:787mm×960mm1/16印张:31.5字数:706千字2008年10月第1版2008年10月第1次印刷印数:;5000册ISBN978-7-81124-422-9定价:49.50元(含光盘1张)本书的使用及学习方法ARM和 Linux学习方法的体会如何才能学好或尽快上手ARM和 Linux?这是很多初学者想问的,也曾经在网上讨论过。其实学习没有捷径,主要还是取决于学习态度和学习方法。ARM、 Linux也一样,在此阿南根据自学过程中的体会和网上的讨论作一些总结。ARM的学习。有了单片机或计算机结构的基本知识、C语言的基础,上手ARM是比较容易的。学习ARM,首先应该了解一下ARM的体系结构,了解它有哪些版本、哪些模式、哪些寄存器、异常等。这方面的内容可以参考《ARM体系结构与编程》一书,这本书介绍的内容还是很全的,可以先快速地浏览特别是汇编指令不需要记住,以后应用时再查。其次选定一种具体厂家型号的ARM处理器,学习该处理器相关的开发工具的使用,如开发环境、仿真器及评估板等。然后可以分析该处理器的外围扩展方法,如 SDRAM、 NAND Flash等,一般官方或第三方都会提供原理图,可以用来分析。接下来要理解该处理器的启动过程,亲自尝试从块裸板逐步运行自己的应用程序,也可以参考官方的启动代码及例程。最后就可以调试、测试该处理器的各种外围部件,例如定时器PWM串口、LCD等,特别是中断及执行过程。Liux的学习。尽管我们最终应用的是嵌入式 Linux,但还是要先在PC机下学习,因为无论基于PC机还是嵌入式处理器的 Linux开发、编程、调试等都是相近的,而PC机的性能、资源等都更加丰富,嵌入式 Linux的开发环境通常也都建立在PC机 Linux环境下,另外Linux大量的书籍也都是针对PC机写的。阿南觉得学习的顺序应该是先在PC机上安装Linux系统,再参考相应的入门书籍,主要是熟悉 Linux环境,学习常用的命令和操作(不一定多,基本、常用的就可以,以后在使用过程中慢慢积累),理解各 Linux下的目录结构与作用等。其次,学习在Liπux环境下编程。可以参考《GNU/ Linux编程指南》或《UNX环境高级编程》,它们介绍了文件描述符的概念,打开读写等操作的系列基础知识;没有这些基础而直接看《 Linux设备驱动程序》会觉得困难。再次,了解一下 Linux内核源代码树的目录结构、编译等。最后,学习《 Linux设备驱动程序》,理解驱动程序的结构框架等。根据实践需要也可学习网络编程和图形用户界面GUI编程,可以参考学习《UNIX网络编程》和《C++ GUI Qt3编程》。另外由于 Qt GUI是基于C++的,所以需要学习C++的知识,也可以选择其他如Microwindows、 MiniGUI等。有了PC机的 Linux基础及编程知识后,就可以直接应用于嵌入式前言了!此时需要一个硬件平台(如开发板或直接的产品等目标系统)和该平台的开发环境。一般的处理器原厂或第三方都会提供开发环境,所以不需要我们移植,它包括建立在PC宿主机上的编译等工具和嵌入式 Linux内核(包括硬件驱动等BSP)源码。此时只须学习开发环境的建立和使用以及将PC机所学的知识应用于具体的嵌入式平台。如果涉及硬件及驱动那么应三该有一定的硬件调试和解决问题的能力,此时单片机、ARM基础及外围设备接口的调试能力将起到很重要的作用。很多朋友(包括非电子、自动化专业的朋友)都希望将来从事 Linux驱入门与实践入动方面的工作,认为学习了Limx驱动方面的知识就OK了而往往忽略硬件本身的调试解决问题能力,阿南觉得这是不正确的。因为 Linux驱动与前后台控制硬件外设的区别只在于它与应用程序的接口,它要遵循一定的结构和规则,这种规则涉及的也就是通常讲的 Linux驱动知识和技术,它是固定的,是容易掌握的,只要遵循就不会出问题。而硬件及外设是千变万化的,它所涉及的技术是多方面的,除处理器本身外,还有各种接口及协议、数字、模拟技术等。这些在设计、调试时是很容易出现问题的,此时要求我们有一定的调试、测试手段和方法。所以,阿南认为要想成为一名优秀的 ARM Linux驱动工程师,首先必须是一名优秀的、具有丰富调试经验的单片机或ARM处理器应用工程师本书的使用与相关知识的同步学习曾经有一个朋友这样告诉阿南:“如果看您的笔记就能掌握 ARM Linux驱动,那就是最好的目的了”。对不起,阿南做不到,写不出这种“葵花宝典”。这本书的前身是在21CBBS上发表的《嵌入式 Linux人门笔记》,主要是阿南在自学 Linux和在项目中应用 Linux时记录的笔记、出现的错误和心得等,是自己平时工作中非常重要的参考手册。发表后得到众网友的喜爱、支持及北航出版社胡晓柏主任的鼓励,故花更多的时间、精力将笔记丰富出版。嵌人式是一门实践性很强的技术,而《嵌入式 Linux入门笔记》主要记录的是 Linux等相关的软件部分,没有包括硬件相关的部分,为了让读者能够亲自实践,故增加了ARM及硬件部分。并且亲自设计了AN2410SSB(最小系统板)和AN2410MB(扩展底板),给出了所有原理图,介绍了制作过程,记录了用裸板开始调试的步骤和过程,介绍了如何让ARM运行及启动等各方面的内容,以及前后台(无操作系统下)的应用等。本书没有将所涉及的技术及理论都包括进来,不仅篇幅有限,而且也没有必要,因为已有太多相当经典的资料。本书第1章为概述。第2章分析了硬件的原理图,读者应该阅读S3C2410A的数据手册,特别是信号引脚功能描述,内存控制部分。第3章主要介绍了关于 Protel原理图和PCB板的绘制,如果读者没有 Prote的基础可以参考人民邮电出版社的《电路设计与制版— Protel99入门与提高》或其他 Protel书。如果有 Protel基础,只是没有绘制过多层板,那么可以参考人民邮电出版社的《 Protel99E多层电路板设计与制作》。第4章介绍了S3C2410A系统核心部分的调试方法和工具的使用,以及利用工具进行测试的方法、手段。该部分是整个系统的基础,也是非常重要的,读者需要多试验,出现问题时多参考S3C2410A的数据手册。第5章专门分析了S3C2410A的启动代码,用于理解S3C2410A的启动过程,中断处理过程及存储器等前言相关部分,也是非常基础和重要的。因为启动代码由汇编组成,此时可参考清华大学出版社的《ARM体系结构与编程》,学习理解ARM的汇编语言等相关知识。第67章为硬件平台上实现ARM的外围实验和扩展实验读者仍然要参考S3C240A的数据手册,在仿真调试情况下理解ARM内部的寄存器、存储器、状态寄存器等与ARM体系相关的知识。另外还要阅读如WAv音频格式,SD卡规范及相关的数据手册等。CPLD部分读者可以参考电子工业出版社的《基于 Quartus II的FPGA/CPLD设计》,学习基本的工程创建,图形设计输入,编译和编程等。 Altera cpld更详细的资料可以去官网下载。第8章介绍了前后台系统还需要考虑的相关知识: NAND Bootloader、文件系统和图形界面。图形界面部分,读者需要理解一些基本的绘图原理和算法,可以参考机械工业出版社的《计算机图形学的算法基础》。第9章介绍了在PC机下的 Linux各方面技术,这些都是嵌入式 Linux的基础,非常重要,涉及的知识内容也很多。在该章中,阿南只是总结了一些实践操作的部分内容所以还需要读者自己去参考学习Linux的这些书籍: Linux系统的基本操作参考清毕大学出版社的《 Red hat linuⅹ9系统管入门与实践理》(这本书应该被实践安装的桌面 Linux系统相应版本的书替代),应用编程参考清华大学出版社的《GNU/Linuⅹ编程指南》或机械工业出版社的《Uniⅸx高级环境编程》,驱动编程参考中国电力出版社的《 Linux设备驱动程序》。第10章主要介绍S3C2410A的嵌入式 Linux开发环境的搭建及工具的使用。这里采用的是MIZI公司的 Linux for s3C2410平台,读者也可以直接参考《 MIZI Linux sdk for s3C2410》文档。第11章介绍在S3C2410A下实现 Linux驱动,很多原理性的知识依然要参考《 Linux设备驱动程序》一书,而且要多试验验证。读者在调试实现过程中也可以直接参考 Linux for s3C2410的内核源码中和硬件、驱动相关的代码例子(可以在 Windows系统下安装 Source insight软件,方便阅读 Linux内核源代码)。第12章介绍嵌人式 Linux桌面系统,可读写文件系统 YAFFS的实现,嵌入式Web服务器BOA、NFS及WIFI。这些都是实践性很强的应用操作,所以读者主要是应用它们,出现问题时上网查找相关应用操作,寻找解决问题的思路,再测试验证。第13章是网络编程方面的知识,主要参考清华大学出版社的《UNIX网络编程第1卷:套接口API》,目的是掌握TCP客服机/服务器的实现及网络的调试方法。第14章介绍嵌人式GUI开发环境的创建和开发方法,桌面系统的移植。学习前读者应该先学习基于Qt的应用编程,可以参考北航出版社的《C++GU1Qt3编程》,如果没有C++的基础可以参考清华大学出版社的《C++程序设计教程》。致谢感谢我的导师(也是本书的另一位作者)—方强多年来的关心与指导,且对本书付出的辛苦劳动。感谢我的公司——广州市天誉创高科技有限公司及同事们,他们对本书提供了很大帮助。段克为本书绘制了部分电路图,丁亚锋为本书编写并调试了部分程序。另外,还要感谢曾水生、李玉琪、刘卫国、张端峰、龙靖、彭雄飞、王勇、黄焕立、王菊林、黄斌、何运辉、吴建、方斌、黄伟、傅良英、胡孝发、黄志艳、张凯、欧孔德、梁家乐、宁雪玉、蔡青青及蓝萍等人的帮助。前言感谢深圳英蓓特公司提供 Realview mDK开发工具及相关资料和技术支持。感谢EDN网为本书创立书友会(hp:// group. ednchina, com/999/)和开展本书的AN2410SSB学习板助学等活动。感谢北京航空航天大学出版社嵌入式系统事业部主任胡晓柏的信任与鼓励,感谢21CBBS上网友们的支持、建议和帮助。感谢我的父母、老师、姐姐、姐夫及所有亲戚朋友们,你们的关心与爱都是阿南不断前进的动力。入门与实践阿南的技术水平、经验都还很欠缺,书中的错误和不妥之处在所难免,恳请广大读者朋友们批评指正;也欢迎登陆21CBBS的ARM论坛或《 ARM Linux人门与实践》书友会与阿南交流,共同提高。阿南2008年9月自序嵌入式自学经历和体会目的回想从2000年自学单片机开始,到后来的ARM,再到 Linux,自己经历了很多,也体会了很多,有经验也有教训,所以希望通过此次机会与读者相互交流,也让更多的爱好者在自学过程中有所借鉴。如果能得到您的共鸣,可以发送电子邮件给阿南:c422@hotmail.com。初识单片机和电子竟赛大一的暑假没有回家,留在学校里希望能向师兄学点技术,后来他向我推荐了单片机和全国大学生电子竞赛。和普通学生一样,阿南认为能参加电子竞赛是多么自豪呀!且对单片机很是好奇,于是去图书管借了些基础书来阅读,很快就被它的强大功能吸引,也产生了迅速学好、将来参加电子竞赛的念头买仿真器,下定决心学好单片机当时学校还没有开模拟、数字电子等专业基础课程,所以学习单片机还是很困难的,一般阿南都拿两三本单片机基础书一起对照着看,旁边还放着模拟、数字等基础教程以便查阅。暑假很快就过去了,期间虽然专心学习,但进展很慢,后得到师兄的指点:要想学好单片机,必须要有个仿真器实践大概1500元。这么贵?(这对农村孩子来讲,实在太贵了!另外买了之后,还不一定就能学会呢!)经过一个星期的思想斗争,终于下定决心要买。当时的想法是这样:“从小家里就穷,家人为了阿南付出了很多心血,所以阿南必须学好技术,好将来回报他们;要参加电子竞赛且取得好成绩,在技术上必须要超越同学、师兄及其他院校的同齡人,而论聪明、基础不可能占优,唯有比他们更早开始,更加勤奋和善于思考;是的,很心疼父母的这些辛苦钱,也正是这个原因更促使阿南尽最大努力,更加勤奋地学习”。培养兴趣,它是最好的老师买了仿真器后,阿南比以前任何时候都更加勤奋了:图书馆、书店找书学习,独自骑两小时自行车买器件,万能板上焊接电路,学习自己编程,用仿真器仿真,万用表测量各种信号变化等。对于单片机,阿南到了近乎疯狂的地步,调试遇到困难时的痛苦、解决问题后的畅快和兴奋,都让阿南对它产生了很深的感情,也已不再是在当初的巨大压力和包袱下学习了,而是在种很浓厚的兴趣下享受着它带来的喜怒哀乐。自序冲破难关,学会独立时间过的真快,自学单片机已经一年了,在这期间阿南对51系列单片机的原理已经理解得差不多了,也实验、测试了所有的片内外设,但只有并行通信测试还一直没有成功过,就是ADCo809的A/D转换实验。这个实验已经断断续续调了近两个月,分析了书上所有的相关内容,对原理也已经很清楚了,但仿真器就是采集不到正确的数据。当时遇到困难时没有像现在这样方便的网络,也没有示波器,只能分析书本和凭自己的想象和试验,另外总是期盼着师入门与实践兄能帮助解决。后来静下心来想了各种解决测试的方法和线索,一个个排除,最终在仿真器说明书中发现“POD52仿真头的P0、P2口只能用作IO用,POD51可以作为总线用”。由于直使用POD52的仿真头,所以读/写等信号都没有出来,换成POD51果然就成功了。(当时真的很兴奋!)之后,单片机学习就变得非常顺利,一般的系统都能独自完成,也终于可以自豪地宣告:阿南的单片机人门啦。在这一过程中阿南体会到了独自思考、解决问题的重要性,也明白了开发工具在实践过程中所起到的作用。(其实很多问题是要用示波器测试和请求工具厂商技术支持的。)上帝是公平的,机会留给有准备的人人门单片机后,不仅自己做些小课题,也用它完成课程设计、参加校里组织的竞赛等。虽然没有参加院里的工程师摇篮协会,但自己的勤奋、动手能力及对单片机的执着还是得到了老师的肯定。初识贾老师(负责组织参加全国大学生电子竞赛相关事务的老师)时,他给了一道1999年的竞赛题——工频真有效值表。该题有很多的运算,考虑到汇编语言实现的难度,所以阿南学习用C语言为单片机编程。由于大一时开过C语言的基础课,再加上良好的汇编语言基础能力,这个课题很顺利地完成了。之后,贾老师将阿南推荐给方老师,目的很明确:学好单片机,备战2003年SONY杯全国大学生电子设计竞赛。有了方老师的指导,再加上实验室的各种硬件,阿南开始了一个新的阶段:不仅学习单片机和C语言编程,还要学习单片机以外的相关技术,如 Protel绘制原理图、PCB制板;学习各种总线和协议,学习电动机控制等;还要学习PLC、MCGS组态软件以及VB。这2年半的时间里,阿南早已不仅仅是为了竞赛更多的是在体会和享受着整个学习过程。回想自己5年的大学学习生活,感觉真的很幸运,最初的王师兄,后来的贾老师和方老师、女朋友及所有帮助过阿南的朋友,在此对他们表示衷心的感谢,感谢他们总是在适当的时候出现指导和帮助阿南,让阿南为之感动,为之奋斗。同时,也深深体会一个道理:机会总是留给足够真诚,足够勤奋、执着,有所准备的人;连自己都不能感动,何以感动别人?感动上帝?坎坷的一年,技术上的追求而不断放弃工作当同学们纷纷进入大中专院校,从事让多少人羡慕的稳定的教师职业时,阿南却选择了南下打工,希望在技术上有更高的造诣。当时ARM在国内已经流行,阿南和广大爱好者一样,和当年初识单片机一样,也被它深深地吸引。辗转了几家公司后,终于可以从事单片机的应用开发。半年后,阿南作出了一个让
- 2021-05-06下载
- 积分:1
GAMS用户指南
GAMS 经典教材内容提要GAMS软件是建立和求解大型数学规划问题的优秀软件包之一,在各领域有着广泛的应用。本书是GAMS软件用户指南,全书分两篇,第一篇为 Windows gAMs2.50用户指南,详细地介绍了GAMS语言的各个组成部分,并对一些高级主题进行了专门讨论;第二篇讨论几个常用的求解器,包括 BARON、 Cplex10、 DICOPT、 MINOS、MOSEK、PATH4.6、SBB、 MPSGE书是建立和求解大型数学规划问题的高级计算机软件参考手册,可供各領域从事规划设计和管理的人员參考使用,也可作为高等院校师生的参考工具书在版编目(CIP)数据GAMS用户指南/魏传江等编译.一北京:中国水利水电出版社,2009.11(通用建模软件技术丛书)I.①G…Ⅱ.①魏…Ⅲ.①数学模型一建立模型应用软件,GAM一指南Ⅳ.①022-39中国版本图书馆CIP数据核字(2009)第208573号书名|用速椰软件技术外书作者魏传江王浩谢新民孙秀芬等编译出版发行中国水利水电出版社北京市海淀区玉渊潭南路1号D座100038)网址:www.waterpub.com.cnE-mailsales@waterpub.com.cn电话:(010)68367658(营销中心)经售北京科水图书销售中心(零售)电话:(010)88383994,6320264全国各地新华书店和相关出版物销售网点中国水利水电出版社做机排版中心田刷北京市兴怀印刷厂规格184mm×260m16开本32.25印张765千字版次2009年11月第1版2009年11月第I次印刷定价9800元凡购买我杜图书,如有缺页、倒页、胱页的,本社营铺中心负责调撓版权所有·侵权必究GAMS用户指南〉编译校人员名单主要编译校人员魏传江王浩谢新民孙秀芬参加编译校人员(按章节顺序)杨舒媛俞烜郝春沣苟思陈宁叶勇李云鶴郭海丹高辉孙笑微王成丽王志璋柴福鑫张海涛李玉科杨丽丽前言数学世界是对物理世界的抽象。物理世界是个大千世界,包括声、光热、电、机槭等。尽管物理规律各异、物理现象千差万别,但是物理世界有三类最基本的关系:一是物理量之间的逻輯关系;二是物理量的量值;三是物理量的量值的动态依存关系。GAMS( General Algebraic Modeling System)即通用数学模型系统,是世界银行与美国GAMS公司在20世纪90年代初开发的一种旨在建立和求解大型复杂数学规划问题的高级计算机软件。作为GAMS语言则对应着这些物理量、这些最基本的关系、这些数学描述以及物理量的量值之间的逻辑关系AMS语言提出了集合的描述工具,用集合来表示物理量之间的逻辑关系。对于物理量的量值,GAMS语言分已知值和未知值进行处理,已知值用参数来表示,未知值用变量来表示。对于物理量之间的动态依存关系,GAMS语言用方程来表示。在这三种基本的表示下,首先定义物理量之间的逻辑关系,在逻辑关系的基础上定义物理量的量值或者变量的上下界,在集合和变量的基础上定义方程,在方程的基础上定义目标函数和约東条件,在目标函数和约束条件的基础上定义模型,在模型的基础上定义模型库,在模型库的基础上定义决策攴持系统,这样就完成了整个数学描述的任务。因此,GAMS软件不仅是一个数学工具,更是一个逻辑分析工具,对于理清思雏、进行系统分析,都是非常得力的工具与其他计算机语言相比,GAMS语言更加面向分析解决综合问题的计算机用户。由于它能够用一种用户和计算机都易读懂的语言来描述现实世界中精确的数学问题,因而可以灵活有效地建立各种类型的模型,进行多种数学优化问题的计算,极大地扩展了数学规划在策略研究和决策分析领域里的应用。用户只需要使用简单的GAMS语句,便可建立各种线性规划、非线性规划、混合整数规划、混合整数非线性规划、二次约束规划等问题的数学模型然后由GAMS系统运行求解。GAMS是专门为线性、非线性、混合整数等优化问题而设计的,在大型复杂问题中表现得更为突出。GAMS语言在形式上和通常使用的程序语言相似,饪何有编程经验的人都会觉得热悉且易上手。它具有很强的灵活性和通用性,可以简便安全地改变模型中的细节,允许模型的描述不依赖解题的算法,因为GAMS的设计把关系数据库的思想与数学规划巧妙地结合起来,并且将这个思想融入模型的总体设计,问題的最优解可以表示为不依赖于其使用的数据形式。GAMS软件也是建立和求解水资源配置模型的优秀软件包,通过二次开发可构建水资源配置模型和基于运筹学原理的其他水利模型,这为开发拥有自主知识产权的模型软件提供了技术平台。GAMS软件是基础软件,使用周期长、应用范围广、灵活方便是其主要优点。我国水资源严重短缺,水资源供需矛盾突出,与水有关的生态环境问题严重,长期以来非常重视水资源的开发利用与保护,尤其是在水资源配置理论研究和应用方面保持了一定的优势,取得了一系列重要成果。开发基于优化技术的水资源配置模型,首先要对水资源系统、经济系统、生态系统进行概化,建立它们之间的逻辑关系,然后将水文长系列数据、各类需求以及各种参数作为模型的輪入项。另外,水资源配置方案的求解是多目标问題,需要一个能够较好地解决上述计算问题的数学规划软件包作为支持。GAMS软件正是解决水资源问题的理想软件工具之一。GAMS语言没有专门的编輯器,用户可以自选编輯器。任何一个GAMS程序都由集合、数据、模型、求解和报告5个部分构成。GAMS不断地在原来基础上进行更新和提高,从早期的DOS版本已经发展至 Windows版本Windows GAMS2.50是为 Windows平台(95/98/ME和NT/2K/XP)设计的基于综合开发环境的界面,它可以在个人计算机、工作站、大型计算机上运行。本书分为两篇。第一篇为 Windows GAMS2.50用户指南,第1章是概述;第2章是一个独立的指南,通过一个小的运输模型例子进行详细的指导;第3~17章构成了第一部分的主干,有序地介绍了GAMS语言的各个组成部分,并伴随着一些详细的例子,即那些经常从模型库调出的例子;附录A~K是对高级主题的专门讨论第二篇讨论几个常用的求解器,即 BARON、 Cplex10、 DICOPT、MINOS、 MOSEK、PATH4.6、SBB、 MPSGE求解器。主要描述的选项为:用于控制求解器;GAMS求解器如何分析这些选项;如何分析求解器返回的模型和求解器状态代码。 BARON(分枝减小最优化导航)是整体求解非线性(NLP)和混合整数非线性规划( MINLP)的GAMS求解程序; Cplex优化求解器的设计理念是在最少的用户介入下快速求解大型的复杂问题,针对线性次约束混合整教规划问题,提供访问(合法授权的) Cplex的求解算法DICOPT是一个求解混合整数非线性规划( MINLP)问题的程序,涉及到线性二进制变量、整数变量和线性、非线性连续变量; MINOS是一个通用的非线性规划求解程序; MOSEK是求解线性、混合整数线性、二次、混合整数二次、二次约柬和凸非线性数学优化问题的软件包;PATH求解非线性问题,通过互补性把组合方法增加到经典的非线性方程组,能扩大建模的适用范围;SBB是求解混合整数非线性规划( MINLP)模型的新的GAMS求解器,它基于著名的混合整数线性规划标准的分枝定界法(B8B)和一些GAMS支持的标准NLP求解器的组合; MPSGE是GAMS数学规划语言的子系统,它是一个函数库和便于AGE模型表达和分析的雅可比计算程序本书由水利部“948”计划项目“通用数学模型系统( WindOws GAMs2.50)”(合同编号200701)、国家科技攴撑计划项目“流域/区域水资源全要素优化配置关键技术研究”(2007BAB28B02)、国家水体污染控制与治理科技重大专项“辽河流域水质水量优化调配技术及示范研究课题”(2008ZX07208010)资助。本书的顺利完成与项目组翻译人员的共同努力是分不开的,在此对参加翻译的所有工作人员表示真诫的感谢由于译者水平有限,难免会有疏忽或错误,在此恳请诸位专家、读者批评指正。译者2009年9月于北京目录第一篇 Windows GAMS2.50用户指南1概述1.1开发研究GAMS的动因1.2GAMS的基本特征1.2.1一般原理1.2.2文件33334412.3可移植性…1,2.4用户界面…1.2.5模型库1.3本书的组成2GAMS指南……2.1简介62.2GAMS模型的结构……集合2.4数据2.4.1列表数据输入890012.4.2表格数据输入2.4,3直接赋值数据输入2.5变量2.6方程2.6.1方程声明2.6.2GAMS求和(和求积)符号2.6.3方程定义7目标函数2.8模型和求解语句…2.9显示语句……………2.10‘.lo,,l,,up,,m’数据库2.10.1变量的边界和初值的赋值2.10.2最优值的转换和显示2.11GAMS输出2.11.1返回输出…8gg22.11.2错误信息2.11.3引用映射2.11.4方程列表2.11.5模型统计2.11.6状态报告…2.11.7求解报告3GAMS程序3.1简介3.2GAMS程序的结构2.1GAMS输入的格式32.2GAMS语句的分类3.2.3GAMS程序的组织3.3数据类型和定义3.4语言条目9993033233.4.1字符3.4.2保留字3.4.3标识符3.4.4标签3.4.5文本3.4.6数字33353.4.8注释集合定义4.1简介4.2简单集合4.2.1语法4.2.2集合名称4.2.3集合元素4.2.4关联的文本4.2.5集合元素的顺序33377883304.2.6多重集合的声明4.3 alias语句:集合的多重命名4.4子集和范围检查4.5多维集合……4.5.1一对一映射4.5.2多对多映射………4.6小结5数据输入:参数、标量和表格5.1简介5.2标量5.22实例5.3参数5.3.1语法5.3.2实例5.3.3更高维数的参数数据…5.4表格5,4.1语法5.4.2实例5.4.3连续表格5.4.4二维以上的表格5.4,5压缩表格54.6处理长行标签……495.5缩写5.1语法5,5.2实例506带参数的数据处理1简介6.2赋值语句6.2.1 scalar赋值6.2.2带索引赋值…6.2.3显式标签赋值…6.2.4子集赋值6.2.5控制索引问题526,2.6赋值中的扩展范围标识符6.2.7赋值中的缩写6.3表达式6,3.1标准的算术操作符
- 2020-12-04下载
- 积分:1