当前位置:文档之家› Lingo基础视频教程

Lingo基础视频教程

Lingo基础视频教程
Lingo基础视频教程

https://www.doczj.com/doc/ee8213790.html, Lingo基础视频教程学习笔记

01.01_Course Intro: 介绍了教程概况和教学大纲。

01.02_Work Files:介绍光盘中所含工程文件的借鉴使用方法。

01.03_What is Lingo:介绍什么是lingo语言,如何打开script窗口。

01.04_Script Types:介绍了四种类型的脚本,根据四种不同的对象类型(movie\frame\sprite\cast memb er)。基于时间的脚本frame scripts和movie scripts,基于空间的脚本sprite scripts和cast scripts。01.05_Writing Simple Lingo Scripts:介绍了两个简单的实例,说明lingo的两种语法格式,一种是描述式的,一种是点式语法格式(类似其它高级语言)。

01.06_The Script Window:介绍脚本窗口的不同打开方式。1、通过“window->script”菜单。2、通过scor e窗口的scripts属性。3、cast member通过cast script按钮。4、frame script通过双击script通道。介绍script窗口各个按钮的功能。

01.07_Comments:介绍注释的功用和重要性。

01.08_Testing Scripts with the Message Window:介绍如何使用message window调试和查看调试信息。

02.01_Sprite Behaviors:介绍sprite behaviors(behavior scripts)的编辑使用方法。

02.02_Frame Behaviors:介绍frame scripts的编辑使用方法。

02.03_Cast Member Scripts:介绍Cast Member Scripts的编辑使用方法。并演示了behavior和cast me mber scripts的区别。

02.04_Movie Scripts:介绍movie scripts的编辑使用方法。常用的prepareMovie\startMovie\stopMovie等方法。movie scripts编写好之后不出现在score窗口或sprite中的任何位置,却可以执行相应功能,一旦写好之后Director随时可对它进行访问。

02.05_Events & Event Handlers:介绍事件和事件句柄以及相应代码的使用方法,如on timeout\on resiz eWindow等。

02.06_Primary Event Handlers:介绍了一些基本的事件如:keyDownScript keyUpScript timeoutScript m ouseUpScript mouseDownScript,和其它事件不同,基本事件的句柄不是由on开始由end结束,两个例子说明了基本事件句柄的使用方法。如set the mouseUpScript to "put 99"一句加入在message窗口中后,执行,点击一次鼠标,便会在message窗口中输出一次"99",再如:在一段脚本中加入:

set the timeoutLength=6*60

set the timeoutScript to "go to frame 100"

两句后会在运行时6秒钟无反应的情况下跳转到100帧。

02.07_Custom Handlers:介绍了自定义的句柄,例如:在一个按钮的sprite behavior的on mouseUp事件中加入了changeStageColor方法,则在一个movie script中来自定义这个句柄如下:

on startMovie

on changeStageColor

set the stageColor=random(250)

updateStage

end

end

则在程序运行过程中点击按钮会改变当前stage颜色。

02.08_Event Message Hierarchy:介绍事件消息的结构。优先级由高到低顺序如下:

Primary Event Handlers

Sprites

CastMembers

Frames

Movies

当同时有数个事件发生时,高优先级的事件脚本获得执行,低优先级的被忽略。还介绍了优先级按照结构顺序的传递。

02.09_Review what You have Learned:通过一个实例回顾了本章内容提到的各种脚本、事件和句柄。

03.01_Looping & Pausing a Movie:介绍如何控制程序停止在某一帧

on exitFrame me

go to the frame

end

或在当前帧和前一marker之间循环

on exitFrame me

go loop

end

03.02_Jumping to New Frames:介绍如何跳转到某一特定帧。如:go to frame 30 ,或go next/previo us(跳转到后/前一marker)go to marker(2)(跳过2个marker) go to "marker1"(跳转到特定marker) 03.03_Creating Smart Navigation Scripts:介绍如何跳转回前一位置。设置两个按钮,一个在on mouse up 句柄中加入play "marker1"跳转到特定位置,另一个加入play done返回跳转前的位置。此方法可实现在不同的movie之间跳转,如:前者改为play "marker1" of movie "movie2"

03.04_Menus:介绍了如何在程序中加入菜单。在cast中加入一个文本型的cast member,内容如下:Menu:Navigation

Page 1|goPage1

Page 2|goPage2

Page 3|goPage3

Page 4|goPage4

Quit/Q|quit

再建立一个movie script,内容为:

on startMovie

installMenu member "myMenu"

on goPage1

go to "Page 1"

end

on goPage2

go to "Page 2"

end

on goPage3

go to "Page 3"

end

on goPage4

go to "Page 4"

end

end

则在运行时会有一个名为Navigation的菜单,其中有goPage1\goPage2\goPage3\goPage4\Quit五个选项,分别实现向名为Page 1\Page 2\Page 3\Page 4四个标签位置的跳转和退出功能,退出快捷键为Ctrl+Q。

03.05_Applying what You have Learned:通过一个综合实例介绍了本章内容的应用。

04.01_Creating Transitions:介绍通过script的方式添加的过渡效果的方法。例如在on exitFrame句柄中

加入语句_movie.puppetTransition(int,time,size,area)。参数分别表示过渡的标识号,持续时间,颗粒大小,作用区域。过渡标识号可以在帮助文档中通过puppetTransition来搜索到。

04.02_Setting Tempo:介绍可通过script改变播放速度,和在tempo通道设置等效。例如

on exitFrame me

puppetTempo 20

end

可调整速度为20fps。

04.03_Swapping Sprites:介绍如何通过script改变sprite演员为另一个角色(cast member)。script语句为:

Sprite(spriteNum).memberNum=newNum

04.04_Rollovers:介绍了Rollover事件可帮助我们实现的效果。使用rollover返回鼠标悬停的演员的通道号,配合if语句实现鼠标悬停或经过时的效果。两种使用方法1)the rollover 2)rollover(x),前者返回通道号,后者返回布尔值,判断是否悬停于x通道的演员上,如:

on exitFrame me

go to the frame

if rollover(1) then sprite(1).membernum=6

end if

end

当鼠标经过sprit(1)时,将通道中的演员改为角色6显示。

又如:

on exitframe

if rollover(2) then

go to frame "end"

end if

go to the frame

end

当鼠标经过通道2上的演员时,跳转到"end"帧并停留。

04.05_Changing the Cursor:介绍如何改变鼠标光标外观。使用cursor x其中x表示光标标识号。如:on startmovie

cursor 2

end

在此影片中将光标外观改为十字形。

其语法为:sprite(20).cursor=4或set the cursor of sprite 20 to 4将使光标经过sprite 20时改变外观。每个光标外观对应一个标识号。

04.06_Custom Cursors:介绍如何自定义光标外观。可使用一个不大于16*16像素大小的黑白二值位图来自定义光标外观。使用类似cursor [2] 来应用自定义光标,[2]表示一个cast member。和cursor 2不同,cursor 2表示标识号为2的系统默认光标,cursor [2]表示cast member为2的自定义光标。如:

on exitFrame me

sprite(1).cursor=[2]

go to the frame

end

04.07_Animated Cursor:介绍如何建立一个动画的光标。在cast中建立几个位图member作为光标的不同状态(16*16或32*32),通过insert->Media Elememt->Cursor...打开光标属性编辑对话框,来利用cast member自定义动画光标。则在cast中建立了一个动画光标的member,命名为"myCursor",在script中

使用此光标如为一个按钮加入如下:

on mouseEnter

cursor(member "myCursor")

end

则在鼠标进入按钮上时,光标改变为自定义的动画光标。

04.08_Cursor Locations:介绍如何获得鼠标的位置。the mouseV 和the mouseH分别在script中返回鼠标当前的垂直和水平坐标。如:

on mouseUp

Sprite(1).locV=the mouseV

end

实现点击鼠标后sprite(1)的演员在水平方向和鼠标对齐(和鼠标取相同的纵坐标)。

04.09_Applying what You have Learned:通过一个实例介绍了如何控制score。

05.01_Triggering Sounds:介绍如何控制音频通道的播放。如:

on exitFrame me

sound(3).play(member "gitar")

end

实现在音频通道3中播放名为gitar的cast member。缓冲的语法是sound(x).queue(member "gitar"),停止播放的语法是sound(x).stop(),另外还有fadein/fadeout方法。

if soundBusy(x) then sound(x).stop()实现对判断停止音频播放。

05.02_PuppetSounds:简单回顾之前版本软件实现音频播放的方法puppetSound。方法为:puppetSound 3,"button"实现播放名为button的音频在音频通道3中。

puppetSound 3,0实现将通道的控制权交还给score。

05.03_Controlling Sound Volume:介绍如何控制音频音量。如:

on startMovie

set the soundLevel=4

end

实现对整体音量的控制。

on exitFrame me

sound(3).play(member,"track1")

set the volume of sound(3)= 200

-sound(8).volume=200 -另一种写法。

end

实现对特定通道音量的控制。

05.04_Fading Sounds:介绍如何实现音频淡入淡出效果。语法为:

sound(which channel).fadeOut(milliseconds) 如:

sound(3).fadeOut(1000)和sound 3,1000等效。

又如:

on mouseUp me

sound(3).fadeIn(2000)

sound(3).play(member "gitar")

end

实现淡入音频gitar。

05.05_Controlling External Sounds:介绍如何控制外部音频文件播放。如:

on exitFrame me

sound playFile 3, "gitarCue.aif"

end

实现对外部音频文件gitarCue.aif的播放,

on exitFrame me

puppetSound 3,0

sound(3).stop()

go to the frame

end

实现对通道3当前音频文件的停止播放。

05.06_Synchronizing Sound:介绍利用音频文件中的cue point同步音频和动画。如:在message窗口中使用

put sound(1).mostRecentCuepoint

来获取音频通道1中刚刚经过的cuepoint。再如:可以使用

on exitFrame me

If sound(1).mostRecentcuePoint=2 then

puppetTempo 12

End if

end

实现在经过一个音频节点时降低播放速度为12帧。

05.07_Checking QuickTime Version:介绍如何检测计算机上安装的QuickTime播放程序的版本。如通过put quickTimeVersion()在消息窗口中获取当前机器上的QuickTime的版本。再如:

on startMovie

if quickTimeVersion() < 8 then

alert "You need to upgrade your QuickTime"

end if

end

实现程序运行前对QuickTime版本的检查,若小于8则提示升级。

05.08_Controlling QuickTime Movies:介绍如何控制quicktime电影的播放。如:

on eixtFrame me

sprite(2).loopBounds=[(1*60),(5*60)]

end

实现sprite 2 通道的影片循环播放1-5秒之间。

05.09_MovieRate:介绍如何控制特定通道中数字视频的播放速度。如:

on exitFrame me

go to the frame

set the movieRate of sprite 1 to -1

--sprite(3).movieRate=5 --点式语法形式。

end

实现对播放速度的控制,1表示播放,0表示停止,-1表示倒放,高于1表示快放。

05.10_MovieTime Skipping:介绍如何跳到视频播放的特定位置。视频播放时每秒钟被分为60个时间单位。可以通过消息窗口的put sprite(1).movieTime在程序运行时获取影片播放的精确时间。又如:

on exitFrame me

if the movieTime of sprite 1 > 50 then

set the movieTime of sprite 1 to 4000

end if

end

实现对视频播放的跳转。

05.11_Frame Rate:介绍如何控制成员的播放帧速率。

05.12_Cropping Video:介绍了视频成员的裁切属性。可以通过属性面板来开关裁切属性,也可以通过ling o来进行。如:member("videoSample").crop=FALSE/TRUE表示当从视频sprite的右下角控制点进行鼠标拖拉时进行放缩或裁切。Translation属性,意思似乎是当crop属性为TRUE时,可以通过此属性使sprite 的矩形边框成为一个蒙板,当赋予偏移量参数时,sprite相对矩形边框的左上角有一个偏移,默认偏移量为零。如:

sprite(5).translation=[10,0]

05.13_Applying what You have Learned:通过一个实例介绍本章内容的应用。

06.01_Commands:介绍lingo中的命令和普通命令格式。

06.02_Functions:介绍函数的概念。注意区别:mouseDown是事件(event),on mouseDown是句柄,the m ouseDown是函数。

06.03_Keywords:介绍lingo中的关键词。

06.04_Conditions and Status:介绍了条件语句和状态关键词ture/false。如:

On keyDown

If the key = "a" then go to frame "a"

If the key = "b" then go to frame "b"

If the key = "c" then go to frame "c"

end if

实现根据按键状态跳转。还可依次实现更复杂的逻辑结构。

06.05_properties:介绍了lingo中的属性。通常的改变属性的方法为:

Put Sprite(which Sprite).someProperty = some value

根据条件设置属性的方法为:

if someProperty = some Value then do something 如:

if the soundLevel = 5 then

set the souneLevel = 4

end if

属性类型分类:System/Movie/Sprite/Cast Member/Sound/Video.

06.06_Constants:介绍了lingo中的常量。TURE/FALSE/VOID/EMPTY/BACKSPACE/ENTER/QUOTE/RETUR N/SPACE/TAB.

06.07_Operators:介绍了lingo中的运算符。

06.08_JavaScript Syntax:简单介绍了JavaScript的语法在lingo中的应用方法。

06.09_Review:回顾了本章内容。

07.01_IfThenStatements:介绍了if then的条件语句结构。

07.02_IfThenElseIfStatements:介绍if then else结构。如:

on exitFrame me

go to the frame

if rollover(1) then sprite(1).membernum=6

else sprite(1).memberNum=5

end if

end

07.03_Repeat Constructs:介绍repeat结构。如:

on exitframe me

repeat with n=5 down to 3

sprite(n).forecolor=200

end repeat

go to the frame

end

07.04_Repeat withdown to:介绍repeat with down to的结构。如上例。

07.05_Case Statement:介绍case结构。如:

on exitFrame me

case _movie.rollOver() of

1: sound(1).play(member("hron"))

2: sound(1).play(member("Drum"))

3: sound(1).play(member("Bongos"))

4: sound(1).play(member("Bass"))

5: sound(1).play(member("Gitar"))

end case

end

实现根据鼠标悬停位置播放不同的声音文件。

07.06_applying what you have learned:介绍了本章内容的简单应用。

08.01_What are Variables:介绍了lingo中的变量。

08.02_Global Variables:介绍lingo中的全局变量。用于存储全局变量数据,变量名通常加前缀“g”以便于识别。变量在StartMovie句柄中声明并设置。必须事先声明。

08.03_Local Variables:介绍lingo中的局部变量。只在当前句柄运行范围内有效。用于保存临时变量。08.04_Arguments and Passed Values:介绍lingo中用到的参数。如:

on addThem a,b

c=a+b

return c

end

08.05_Data Types:介绍了lingo中的数据类型。数值、字符、布尔、符号、列表、运算结果等6种。

08.05_Using Variables in Your Script:通过一段代码实例介绍了变量的使用。

09.01_Checking Sprite Properties:介绍如何察看sprite的属性。如:

on startMovie

on testCondition

Sprite(2).foreColor = random(5)

If sprite(2).foreColor = 1 then member(2).text = "Light Blue"

If sprite(2).foreColor = 2 then member(2).text = "Purple"

If sprite(2).foreColor = 3 then member(2).text = "Dark Blue"

If sprite(2).foreColor = 4 then member(2).text = "Yellow"

If sprite(2).foreColor = 5 then member(2).text = "Green"

UpdateStage

end

end

实现判断颜色功能,在一个按钮的属性中加入:

on mouseUp me

testCondition

end

则点击按钮会改变颜色并进行判断。

09.02_Sprite Coloration Forecolor:介绍如何改变sprite或cast member的颜色属性。可对text对象的特定单词改变颜色。如:

on exitFrame me

go to the frame

member("myText").line[2].word[1].foreColor = 25

end

实现改变myText的第二行第一个单词颜色功能。

09.03_Sprite Location Moving Sprites:介绍了通过locV和locH属性改变sprite位置的方法。如:

on exitFrame me

go to the frame

sprite(3).moveableSprite = TRUE

if sprite(3).locH>(the stageRight - the stageLeft) then

sprite(3).locH = 0

end if

end

实现当鼠标拖动sprite移出舞台右侧时,回到舞台左侧功能。

09.04_Intersect and Constrain:介绍sprite之间的绑定。如:set the constraint of sprite(1) to 4表示将sprite 1 绑定到sprite 4 所占用的矩形范围内,如音量调整拉杆。

if sprite 1 intersects sprite 2 then

put "That is correct!" into member "Place Check"

end if

表示根据sprite 1 和sprite 2是否相交这个条件产生相应事件。

09.05_Dimensions of a Sprite:介绍通过width 和height属性访问sprite的长宽属性。如:

on mouseUp me

sprite(5).width=200

end

09.06_Visible of a Sprite:介绍sprite的visible属性。语法为:sprite(whichSprite).visible

如:sprite(5).visible = FALSE

09.07_Applying what You have Learned:实例讲解本章属性设置内容。

10.01_Tracking Mouse Clicks:介绍如何获取鼠标事件信息。包括:clickLoc鼠标点击点的坐标;clickOn返回被点击sprite的号码;the lastClick表示鼠标最后点击的sprite;mouseDown表示左键点击事件,right MouseDown表示右键点击事件。如:

on mouseUp me

put the clickLoc

end

当鼠标点击输出点击位置坐标。

on mouseUp me

if the clickOn=3 then

alert "Sorry,try again!"

end if

end

表示当点击sprite 3时弹出警告。

on exitFrame me

go to the frame

sprite(the clickOn).loc=the mouseLoc

end

表示当鼠标点击某sprite则跟随鼠标运动。

on exitFrame me

go to the frame

if the lastClick > 8*60 then

go to "help"

end if

end

实现无鼠标点击8秒后跳转。

on exitFrame me

go to the frame

repeat while the mouseDown =TRUE

beep

end repeat

if the rightMouseDown then

puppetSound 2,"gitar"

end if

end

实现点击左键鸣叫,点击右键2声道播放名为“gitar”的音频cast member。

10.02_Editable Text Fields:介绍可编辑文本域的控制。语法为:

member(whichCastMember).editable表示该cast member的可编辑属性。

sprite(whichSprite).editable表示该sprite的可编辑属性。

如:

on exitFrame me

go to the frame

if member("Name").editable= true then

member("Name").text="Please enter name here"

end if

end

10.03_format text:介绍如何格式化文本。包括Text/Font/Font Style/LineHeight/Font Size/Alignment等。如:

on exitFrame me

go to the frame

member("text1").text="new text"

end

表示文本内容可通过lingo改变。

set newFont=the font of member("text1")

set the font of member("text2")=newFont

表示字体可通过lingo改变。

其余类似。

10.04_String Lingo:介绍如何对字符串操作。包括text/word/item/count等属性。如:

myText.word[1]

myText.words.count

10.05_More String Lingo:介绍如何对字符串进行插入、判断包含、比较等运算。

10.06_Idle Event Handlers:介绍如何利用系统空闲时间和如何设置空闲时间间隔。如:

on exitFrame me

go to the frame

on idle

put the short time into member("Time")

updateStage

end

end

实现在文本成员中显示时间。

on startmovie

the idelHandlerPeriod = 60

end

10.07_Check for User Platform:介绍如何获取系统信息。如:

on startMovie

if the platform contains "Windows,32" then

alert "We have detected you are running Windows,the appropriate cast will now be loaded."

castLib("WinNT").name="interface"

end if

end

10.08_importing through Lingo Scripting:介绍了inportFileInto的语法。语法为:

importFileInto member whichCastMember,fileName

importFileInto member whichCastMember of castLib whichCast,fileName

importFileInto member whichCastMember,URL

11.01_Calling Other Movies:介绍了在一个程序中调用另一个director程序的方法。如:

on mouseUp me

go to movie "movie2"

end

表示跳转到另一程序。

on exitFrame me

go to frame "start" of movie "movie2"

end

表示跳转到另一程序特定帧。

直接跳转需要两程序在同一路径下,可通过moviePath和movieName两属性访问程序信息。

11.02_File Location:介绍如何定位一个程序的路径。程序提供了两个属性访问程序路径moviePath和@pa thName.

如:

on mouseUp me

sound playFile 1,the moviePath &"audio/gitar.aif"

表示在通道1中播放当前目录下audio文件夹中的gitar.aif文件。

注:&表示字符串连接,&&表示字符串添加空格连接。

Windows平台和Mac平台路径表示方法不同。

the moviePath&folder/subfolder/filename.aif的表示方法只适用于Windows平台。

the moviePath&folder:subfolder:filename.aif的表示方法只适用于Mac平台。

the moviePath&"@folder/subfolder/filename.aif"

the moviePath&"@folder:subfolder:filename.aif"两种表示方法可通用于两种平台。

@/workingFolder

@:workingFolder

@\workingFolder是三种等效表达指定当前目录下的有效工作目录的方法。@"media:linkedFile

@\media\linkedFile

@/media/linkedFile是三种等效表达指定当前目录下子文件夹中的链接文件的方式。@::subFolder:linkedFile

@\\subFolder\linkedFile

@//subFolder/linkedFile是三种等效表达返回上一级目录指定链接文件的方法。

11.03_Introduction to MIAWS:介绍弹出窗口的制作。如:

on mouseUp me

window().new("movie2.dir")

window("movie2.dir").moveToFront()

window("movie2.dir").visible=TRUE

end

表示在弹出窗口中显示movie2.dir

on startMovie

preloadMovie "movie2"

end

表示预加载movie2,以在调用时减少缓冲时间。

window("movie2.dir").type=#tool表示窗口类型,有#tool/#document/#dialog三种。关闭弹出窗口有两种方式:

on mouseUp

window("movie2.dir").close()

end

表示关闭窗口而不从内存中卸载。

on mouseUp

window("movie2.dir").forget()

end

表示关闭并从内存中卸载。

11.04_More Control over MIAWS:介绍弹出窗口的控制。如控制大小

rect(rLeft,rTop,rRight,rBottom)参数表示左上和右下两点坐标距离屏幕左上角的像素数。on exitFrame me

window().new("movie3.dir")

window("movie3.dir").moveToFront()

window("movie3.dir").rect = rect(100,200,300,300)

还可通过the stageLeft/the StageRight/the StageTop/the stageBottom来调整相对主程序界面的位置。左、上两个值是0,右、下两个值分别是主窗口的宽高。

11.05_MIAW Interaction:介绍了在主窗口和弹出窗口之间交互的方法。如:

on mouseUp me

window("movie3.dir").bgColor = color(255,153,0)

end

表示在主窗口的按钮上控制弹出窗口的背景色。同理:

on mouseUp me

window("stage").bgColor = color(255,189,0)

end

表示在弹出窗口中按钮上改变主窗口背景色。

on mouseUp me

window("stage").movie.member(1).name = "changed name"

end

表示在弹出窗口的按钮上改变主程序的成员名称。

11.06_Managing Multiple Casts:介绍如何管理多个cast。语法为:

on mouseUp me

set the text of member 2 of castLib "cast2" = "Out of date"

end

表示改变一特定演员库的成员文本内容。

on mouseUp me

sprite(4).member= member(7,2)

end

表示,将cast2中的第七个成员赋给sprite4。

put the number of members of castLib "cast2"表示输出cast2的成员数量。

put the fileName of CastLib 2表示输出CastLib 2 的文件名。

将cast保存在不同的外部cst文件中有助于减小主程序的体积。

12.01_Understanding Lists:介绍列表的使用。语法[entry1,entry2,entry3,...]如:

myList = [1975,1978,1980,1985]

列表分线形表和属性列表。线形表声明为x=[]或x=list(),如上,属性列表为x=[:]或x=propList()如:myPropList = [#speed:250,#mass:600,#force:8790]

12.02_Working with Linear Lists:介绍线形表的应用。语法为:

listName = [item1,item2,item3...]

listName = list(item1,item2,item3...)

访问表元素通过下标,如put list[2],下标从1开始计。

获取元素位置的语法为:getOne(beerList,"Pilsner"),返回2表示"Pilsner"是表中第二个元素。

12.03_More Linear List Commands:介绍对线性表操作的命令。可通过下标对表元素赋值。如beerList[1]="Pilsner"或setAt(beerList,1,"Stout")

对列表进行排列的语法为:list.sort或sort list如:states.sort()

向列表增加元素的语法为:linearList.add(value)或linearList.add,value或linearList.append(value)如:words = [3,4,5]

words.add(2)

put words

输出[3,4,5,2]

12.04_Property Lists:介绍属性列表。属性列表可通过属性名排序,同样可以增加表项。如

myGrades = [#Sam:65,#Sara:93,#Jim:86]

myGrades.sort()

myGrades.addProp(#Jeri,82)

put myGrades

输出[#Jeri:82,#Jim:86,#Sam:65,#Sara:93]

执行过排序命令后再向表中增加元素就会按照排序后的顺序增加,而不是加在最后。

12.05_Manipulating Property Lists:介绍属性表的操作。包括:getProp/setProp/addProp/deleteProp/getP os/getOne等。与线性表的操作十分相似。如:

myGrades = [#Sam:65,#Sara:93,#Jim:86]

put getProp(myGrades,#Sara)返回65,说明获取的是属性值而无属性名。

setProp(myGrades,#Sara,98)

addProp(myGrades,#adam,100)

deleteProp(myGrades,#Jim)按属性名删除。

put getPos(myGrades,98)返回2,表示属性值为98的元素下标为2

put getOne(myGrades,98)返回#Sara,表示属性值为98的元素属性名为#Sara。

12.06_Audio Playback Control Using Playlists:介绍使用一个播放列表控制音频的播放。在信息窗口中输入:

sound(4).queue(member("gitar"))

sound(4).queue(member("gitar"))

put sound(4).getPlayList()

则输出——[[#member:(member 3 of castLib 1)],[#member:(member 3 of castLib 2)]]表示一个播放列表。

设置播放列表的语法为:soundChannel(x).setPlayList(linearListOfPropLists)如:

mysoundList = [[#member:member"gitar",loopCount:3]]

sound(3).setPlayList(mySoundList)

sound(3).play()

表示同一音乐播放三遍的一个播放列表。又如:

on startMovie

on playMusic

sound(2).queue([#member:member("gitar"),#startTime:1000,#endTime:5000,#loopCount:6,#loopS tartTime:1000,#loopEndTime:3000])

sound(2).play()

end playMusic

end

表示播放1-5秒之间,其中1-3秒循环播放6遍。

在按钮上加入

on mouseUp me

playMusic

end

12.07_Review what You have Learned:通过一个实例介绍列表在实例中的应用,主要是向不同位置的跳转。

13.01_Introducing NetLingo:介绍利用lingo进行网络编程的基本知识。首先需要在"Xtras"->"movie Xtras "中导入Netlingo.x32,可通过信息窗口的put the netPresent命令查看返回值来判断是否正确导入Netlin go.x32。1为正确。还可以通过lingo向cast中加入图片,如:

on mouseUp me

global myURL

myURL = "https://www.doczj.com/doc/ee8213790.html,/garnet.jpg"

_movie.newMember(#bitmap).importFileInto(myURL)

end

13.02_Web Navigation:gotoNetPage/gotoNetMovie使用语法为:

gotoNetPage "URL",{"targetName"}

gotoNetMovie "URL"

gotoNetMovie ("URL")

如:

on mouseUp me

gotoNetMovie "https://www.doczj.com/doc/ee8213790.html,/testMovie.dcr#scene1"

gotoNetPage "https://www.doczj.com/doc/ee8213790.html,"

end

前句表示调用网上的director电影片段,后句表示通过浏览器打开网页。

14.02_Common Lingo Errors Pt.1:介绍常见的错误。1、拼写错误。2、if语句不完整。3、参数填写位置错误。

14.03_Common Lingo Errors Pt.2:变量使用前未赋值,引用一个不存在的cast member等问题。

14.04_Testing and TroubleShooting:介绍测试排错的方法。多使用信息窗口测试。

14.05_Debugging Lingo Scripts:介绍使用排错工具。如信息窗口的put命令、"window"->"Object Inspec tor"的对象监视器等。

14.06_The Debugger Window:介绍排错窗口。

14.07_Breakpoints:介绍设置断点进行调试的方法。

14.08_Memory Management Pt.1:介绍了监视内存使用状态的方法。

14.09_Memory Management Pt.2:介绍preLoad()(Movie)/PreLoad(Member)方法。

15.01_New MX04 Lingo:介绍Director MX 2004的lingo新特性。支持点式语法、javascript、JavaScript 还可访问lingo的特定数据如线形表和属性表。

lingo教程 和MATLAB入门教程

LINGO 使用教程 LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。产销单位运价如

model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。

LINGO11教程

LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。产销单位运价如

model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个

Lingo教程四 LINGO的函数模板

Lingo教程四 LINGO的函数 有了前几节的基础知识,再加上本节的内容,你就能够借助于LINGO建立并求解复杂的优化模型了。 LINGO有9种类型的函数: 1.基本运算符:包括算术运算符、逻辑运算符和关系运算符 2.数学函数:三角函数和常规的数学函数 3.金融函数:LINGO提供的两种金融函数 4.概率函数:LINGO提供了大量概率相关的函数 5.变量界定函数:这类函数用来定义变量的取值范围 6.集操作函数:这类函数为对集的操作提供帮助 7.集循环函数:遍历集的元素,执行一定的操作的函数 8.数据输入输出函数:这类函数允许模型和外部数据源相联系,进行数据的输入输出 9.辅助函数:各种杂类函数 4.1 基本运算符 这些运算符是非常基本的,甚至可以不认为它们是一类函数。事实上,在LINGO中它们是非常重要的。 4.1.1 算术运算符 算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符: ^乘方 ﹡乘 /除 ﹢加 ﹣减 LINGO唯一的一元算术运算符是取反函数“﹣”。这些运算符的优先级由高到底为: 高﹣(取反) ^ ﹡/ 低﹢﹣ 运算符的运算次序为从左到右按优先级高低来执行。运算的次序可以用圆括号“()”来改变。 例4.1算术运算符示例。 2﹣5/3,(2﹢4)/5等等。 4.1.2 逻辑运算符 在LINGO中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。 LINGO具有9种逻辑运算符: #not# 否定该操作数的逻辑值,#not#是一个一元运算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase

lingo操作介绍

1.2 菜单介绍 1.2.1 File 1 New 新建一个窗口, 当你执行这个命令时, 会出现如下对话框: 你可以在对话框中选择你想要建立的类型. 类型如下: 1)扩展名为(*.lg4) LG4格式是LINGO4.0的版本,是在Windows下最主要的储存文件格式, 这种格式支持字体格式, 自定义格式以及动态连接, LG4以二进制格式存储, 所以不能被其它的应用软件直接读取. 2)扩展名为(*.lng) LNG是捷便的存储方式,是4.0版本前的标准文件格式,为了与前版本的兼容,所以还一直在用,LNG文件是以ASCII形式存储的,所以能被支持文本文件的应用程序读取.该格式不支持多种字体. 3)扩展名为(*.ltd) LTD是数据文件, 可以从@FILE函数导入数据,@FILE函数只能读取文本文件,所以所有的LTD文件是以ASCII形式存储, 也不支持多种字体. 4)扩展名为(*.ltf) LTF是LINGO的调试文件格式, 也是以ASCII格式存储,能直接被LINGO的File|Take command执行. 2 Log Output 输出文本文件,可以将随后原输出到报告窗口的内容输出到文本中. 该命令与Maple 中的writeto命令非常相似. 在Maple中输入如下: > x:=sin(5.); writeto("c://maple.txt"); y:=x+1: print(x,y); print(x); > y; > writeto(terminal);

> y; 执行菜单中的Edit|Excute|Worksheet, 按钮,窗口重新显示如下: > x:=sin(5.); writeto("c://maple.txt"); y:=x+1: print(x,y); print(x); x:=-.9589242747 > y; > writeto(terminal); > y; 0.4010757253 而在C盘的maple.txt文件的内容为: -.9589242747, .0410757253 -.9589242747 .0410757253 从中可以知道,用了writeto(filename)命令以后把结果输出到filename 中. 直到碰到writeto(terminal)命令时,才重新在工作窗口中显示. 当你点击菜单File|Log Output时,系统出现保存对话框,系统就会将命令窗口中的输出结果保存到指定的文件中. 3 Import LINDO File 该命令是用来导入LINDO软件保存的LINDO文件(*.LTX)格式. 只要在LINGO中导入LINDO文件格式, LINGO系统自动将该文件转化为LINGO可执行语句. 1.2.2 Edit 1 Paste Function 用该命令可以在当前点插入LINGO的内部函数, 2 Select Fonts 设置字体类型, 字体大小,字体颜色. 1.2.3 LINGO 1 Solve 用solve命令对当前窗口中的模型求解, 该命令只对report script窗口起作用, 不能对数据窗口求解.

LINGO使用说明比较简单

Lingo介绍 Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。 lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。 Lingo的主要功能特色为: (1)既能求解线性规划,也有较强的求解非线性规划的能力; (2)输入模型简练直观; (3)运行速度快、计算能力强; (4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型; (5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo语言; (6)能方便地与excel、数据库等其他软件交换数据。 学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社

Lingo 程序设计简要说明 在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。一般我们用LINGO 来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。LINGO 只是一个求解工具,我们主要的任务还是模型的建立! 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。 示例:求解线性规划问题: max z=x1+x2+x3+x4+x5+x6+x7+x8 ???????????????≤≤≤≤≤≤269 + x88 + x72 + x66 + x55 + x47 + x38 + x28 + x1 6 15 6 + x8 7 + x7+ x65 + x54 + x44 + x34 + x25 + x15 444 + x86 + x77 + x68 + x58 + x45 + x32 + x27 + x14278 + x85 + x74 + x64 + x55 + x49 + x36 + x25 + x13389 + x84 + x75 + x62 + x57 + x46 + x35 + x28 + x1 2 154 + x8 3 + x79 + x66 + x55 + x45 + x3 4 + x27 + x1 求解这个模型的相应LINGO 程序代码如下: 程序一: max= x1+x2+x3+x4+x5+x6+x7+x8; x1 + 7*x2 + 4*x3 + 5*x4 + 5*x5 + 6*x6 + 9*x7 + 3*x8 + 415<=; 2*x1 + 8*x2 + 5*x3 + 6*x4 + 7*x5 + 2*x6 + 5*x7 + 4*x8 + 938<=; 3*x1 + 5*x2 + 6*x3 + 9*x4 + 5*x5 + 4*x6 + 4*x7 + 5*x8 + 827<=; 4*x1 + 7*x2 + 2*x3 + 5*x4 + 8*x5 + 8*x6 + 7*x7 + 6*x8 + 444<=; 5*x1 + 5*x2 + 4*x3 + 4*x4 + 4*x5 + 5*x6 + x7 + 7*x8 + 6 15<=; 6*x1 + 8*x2 + 8*x3 + 7*x4 + 5*x5 + 6*x6 + 2*x7 + 8*x8 + 926<=; 注:然后点击工具条上的按钮 即可。本模型的最优解为2.636364

lingo软件使用教程

lingo软件使用教程 一般来说,一个优化模型将由以下三部分组成: 1. 目标函数(Objective Function):要达到的目标。 2. 决策变量(Decision variables):每组决策变量的值代表一种方案。在优化模型中需要确定决策变量的最优值,优化的目标就是找到决策变量的最优值使得目标函数取得最优。 3. 约束条件(Constraints):对于决策变量的一些约束,它限定决策变量可以取的值。 在写数学模型时,一般第一行是目标函数,接下来是约束条件,再接着是一些非负限制等。在模型窗口输入如下代码: Max = 2*x1+3*x2; X1+2*x2<=8; 4*x1<16; 4*x2<12; 注意:1.每一个lingo表达式最后要跟一个分号; 2.多数电脑中没有符号,lingo中<=代替;为了方便可以用<代替小于等于,用>代替大于等于。 3.我们可以添加一些注释,增加程序的可读性。注释以一个!(叹号必须在英文状态下输入,它会自动变为绿色)开始,以;(分号)结束。 4.Lingo中不区分变量名的大小写。变量名必须以字母(A-Z)开头,后面的字符可以是字母、数字、下划线。变量名不能超过32个字符。 Lingo程序的一些规则: 1. 在Lingo中最开始都是“MAX=”或者“MIN=”开始表示求目标函数的最大或者最小值。 2. 变量和它前面的系数之间要用“*”连接,中间可以有空格。 3. 变量名不区分大小写,但必须以字母开始,不超过32个字符。 4. 数学表达式结束时要用分号“;”表示结束。表达式可以写在多行上,但是表达式中间不能用分号。 5. 在电脑系统中一般没有“小于等于”符号,在Lingo采用“<=”来表示“小于等于”,用“>=”表示“大于等于”。小于等于也可以用更简单的“<”表示,大于等于用“>”表示。 集合段: 在我们已经得到的程序里有一些量没有定义,如WAREHOUSES( I),DEMAND( J), LINKS( I, J)。这些量将在Lingo中的集合段定义。 集合段以SETS:表示开始,以ENDSETS表示结束。 如果一个集合的元素都已经定义过,就可以用一些循环函数(如@for). 注:1. 集合的属性相当于以集合的元素为下标的数组。Lingo中没有数组的概念,只有定义在集合上的属性的概念。 2 集合的定义语法: set_name[/set_member/:][attribute_list]; 集合的名称在左边,右边是这个集合上的属性,他们之间用冒号“:”分割开,最后由分号表示结束。如果在同一个集合上有多个属性时,不同的属性之间用逗号“,”隔开,如本例的cost和volume属性。如果要特别列出集合的元素时,在集合的名称后把元素写在两条斜线之间,如本例中的仓库可以写为 WAREHOUSES/WH1, WH2, WH3, WH4, WH5, WH6/: CAPACITY;

lingo使用手册

LINGO快速入门 LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 (2) §2 LINGO中的集 (3) 2.1 为什么使用集 (3) 2.2 什么是集 (4) 2.3 模型的集部分 (4) 2.3.1 定义原始集 (4) 2.3.2 定义派生集 (5) §3 模型的数据部分和初始部分 (7) 3.1 模型的数据部分 (7) 3.1.1 数据部分入门 (7) 3.1.2 参数 (8) 3.1.3 实时数据处理 (8) 3.1.4 指定属性为一个值 (9) 3.1.5 数据部分的未知数值 (9) 3.2 模型的初始部分 (10) §4 LINGO函数 (10) 4.1 基本运算符 (10) 4.1.1 算术运算符 (11) 4.1.2 逻辑运算符 (11) 4.1.3 关系运算符 (11) 4.2 数学函数 (12) 4.3 金融函数 (13) 4.4 概率函数 (13) 4.5 变量界定函数 (15) 4.6 集操作函数 (15) 4.7 集循环函数 (16) 4.8 输入和输出函数 (18) 4.9 辅助函数 (21) §5 LINGO WINDOWS命令 (22) 5.1 文件菜单(File Menu) (22) 5.2 编辑菜单(Edit Menu) (23) 5.3 LINGO菜单 (23) 5.4 窗口菜单(Windows Menu) (35) 5.5 帮助菜单(Help Menu) (37) §6 LINGO的命令行命令 (37) §7 综合举例 (41)

lingo教程

LINGO是Linear Interactive and General Optimizer的缩写,中文名称为“交互式的线性和通用优化求解器”,是由美国LINDO系统公司(Lindo System Inc.)开发的一套专门用于求解最优化问题的软件包,用于求解线性规划和二次规划问题,LINGO可以求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解等。此外,LINGO还允许优化模型中的决策变量为整数(即整数规划),其执行速度很快,是求解优化模型的最佳选择。 1软件介绍 其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括0-1整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。最新版本LINGO14.0已经发布。 2操作步骤 一般地,使用LINGO求解运筹学问题可以分为以下两个步骤来完成:1)根据实际问题,建立数学模型,即使用数学建模的方法建立优化模型; 2)根据优化模型,利用LINGO来求解模型。主要是根据LINGO软件,把数学模型转译成计算机语言,借助于计算机来求解。 例题:在线性规划中的应用maxZ=5X1+3X2+6X3, s.t.X1+2X2+X3≤18 2X1+X2+3X3=16 X1+X2+X3=10

X1,X2≥0,X3为自由变量 应用LINGO来求解该模型,只需要在lingo窗口中输入以下信息即可: max=5*x1+3*x2+6*x3; x1+2*x2+x3<=18; 2*x1+x2+3*x3=16; x1+x2+x3=10; @free(x3); 然后按运行按钮,得到模型最优解,具体如下:Objectivevalue:46.00000 VariableValueReducedCost x114.000000.000000 x20.0000001.000000 x3-4.0000000.000000 由此可知,当x1=14,x2=0,x3=-4时,模型得到最优值,且最优值为46。 说明:在利用LINGO求解线性规划时,如自变量都为非负的话,在LINGO中输入的信息和模型基本相同;如自变量为自由变量,可以使用函数@free来把系统默认的非负变量定义自由变量,如实例一中的x3。 3软件详述 LINGO全称是LinearINteractiveandGeneralOptimizer的缩写---

LINGO的使用方法说明大全

LINGO的使用简介 LINGO软件是美国的LINGO系统公司开发的一套专门用于求解最优化问题的软件包.LINGO除了能够用于求解线性规划和二次规划外,还可以用于非线性规划求解、以及一些线性和非线性方程(组)的求解等.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,即可以求解整数规划,而且执行速度快.LINGO是用来求解线性和非线性优化问题的简易工具.LINGO置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果.在这里仅简单介绍LINGO的使用方法. LINGO(Linear INteractive and General Optimizer )的基本含义是交互式的线性和通过优化求解器.它是美国芝加哥大学的 Linus Schrage 教授于1980年开发了一套用于求解最优化问题的工具包,后来经过完善成何扩充,并成立了LINDO系统公司.这套软件主要产品有:LINDO,LINGO,LINDO API和What’sBest.它们在求解最优化问题上,与同类软件相比有着绝对的优势.软件有演示版和正式版.正式版包括:求解包(solver suite)、高级版(super)、超级版(hyper)、工业版(industrial)、扩展版(extended).不同版本的LINGO对求解问题的规模有限制,如附表3-1所示. 附表3-1 不同版本LINGO对求解规模的限制 版本类型总变量数整数变量数非线性变量数约束数 演示版 300 30 30 150 求解包 500 50 50 250 高级版 2000 200 200 1000 超级版 8000 800 800 4000 工业版 32000 3200 32000 16000 扩展版无限无限无限无限 3.1 LINGO程序框架 LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络最优化问题和最大最小求解问题,以及排队论模型中最优化等问题. 一个LINGO程序一般会包括以下几个部分: (1) 集合段:集部分是LINGO模型的一个可选部分.在LINGO模型中使用集之前,必须在集部分事先定义.集部分以关键字“sets:”开始,以“endsets”结束.一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分.一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须先定义. (2) 数据段:在处理模型的数据时,需要为集部分定义的某些元素在LINGO求解模型之前为其指定

Lingo的基本应用

第十五章Lingo的基本应用1、LINDO和LINGO软件能求解的模型: 2、Lingo初级语法: 语句分行书写,顺序与数学模型一致; 每一条语句都要以“;”结尾; 语句不区分大小写,书写方式与代数函数相近; 目标函数以“min=”或者“max=”表示; 注释语句用“!”开头; “>”和“>=”以及“<”和“<=”没有区别; 如果不写明决策变量的取值范围,则默认为非负实数。 3、线性规划案例:生产计划 每天:50桶牛奶时间480小时至多加工100公斤A1 要求:制订生产计划,使每天获利最大 1)奶制品生产的Lingo模型 2)Lingo求解 2)Lingo求解报告

//结果报告(Solution Report) 4)开启灵敏度分析(Range)功能 5)查看灵敏度分析(Range) 必须先求解才能得到灵敏度分析报告 //目标函数系数范围分析 当目标函数中x1的系数(产品A1的收益)增加不超过8个单位或者减少不超过2.66667个单位时(x2系数维持不变),不需改变生产计划。 //约束条件右边值灵敏度分析

如果牛奶资源的数量增加不超过10桶或者减少不超过6.666667桶(其他模型参数不变),则它将仍然作为紧缺资源; 如果A1生产资源减少超过40个单位(其他模型参数不变),则它将转化为紧缺资源。 4、城市垃圾处理问题(最小吨*公里) 小区供水问题(最大供水收益) 代数式线性规划模型(垃圾运输) 代数式线性规划模型(小区供水)

5、如何表示具有下标的变量: 1)从C语言的类比来理解: 2)具有下标的变量可以看作某种数组变量中的元素; 3)除去下标后的符号可以看作是数组变量的名称; 4)下标可以看作是在数组中的索引值; 5)单下标变量对应于一个一维数组,称为“简单集合”; 6)多下标变量对应于一个多维数组,而多维数组可以看作是多个一维数组的笛卡尔积,称为“派生集合”。 6、Lingo中如何定义具有下标的变量? 1)在Lingo中使用“集合变量”的形式表达规划模型中具有下标的变量 2)定义集合变量需要三个基本要素: 集合的名称 集合的形式(简单集合还是派生集合?集合的元素个数是多少?) 集合变量的名称 7、定义简单集合的语法: 集合名称/下标范围/: 变量列表;(变量之间用“,”分隔) 例:brand/1..6/: a, b;(集合的名称是brand,/1..6/表示这种集合包含6个元素,下标的范围是从1到6,并且定义了两个这种集合形式的变量分别用a、b表示,该语句相当于定义了a1~a6以及b1~b6两组变量) 例:type/1..4/;(也可以只定义集合形式不定义集合变量) 8、定义派生集合的语法: 集合名称(分量集合列表): 变量列表; 1)分量集合列表分别对应于派生集合的每一个维度,定义了每一个维度分别属于哪一种简单集合 2)例:product(brand, type): p, x;(集合的名称是product,该集合的第一个维度与brand集合的类型相同,第二个维度与type 集合的类型相同,并且定义了两个集合变量p和x。如果根据前面对brand和type的定义,product集合是一个6*4的二维派生集合,该语句相当于定义了p11~p64和x11~x64两组变量) 3)例:address(country, state, city)。 9、调用集合变量的语法: 1)变量名称(下标值)”的形式调用集合变量的指定元素:pi→p(i);xij→x(i,j); 例:p(4)、x(2,3)

lingo教程_和matlab入门教程

lingo 使用教程 LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。

model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。

Lingo教程

LINGO教程 LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 ●安装:实验室的所有电脑都已经事先安装好了Lingo 8(或者9, 10, 11)。 如果要在自己的电脑上安装这个软件,建议从网上下载一个破解版的,按照提示一步一步地安装完毕。 ●简单例子:当你在windows系统下开始运行LINGO时,会得到类似于下面的 一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现。下面举两个例子。 例 1某工厂在计划期内要安排生产I、II两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表所示。

该工厂每生产一件产品I可获利2元,每生产一件产品II可获利3元,问应该如何安排生产计划使该厂获利最多? 我们用下面的数学模型来描述这个问题。 设x_1、x_2分别表示在计划期内产品I、II的产量。因为设备的有效台时是8,这是一个限制产量的条件,所以在确定产品I、II的产量时,要考虑不超过设备的有效台时数,即可用不等式表示为 x_1 + 2x_2 <=8 同理,因原材料A、B的限量,可以得到以下不等式 4x_1 <=16 4x_2 <=12 该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为: 目标函数 max z=2x_1+3x_2 约束条件 x_1 + 2x_2 <=8 4x_1 <=16 4x_2 <=12 x_1、x_2 >=0 一般来说,一个优化模型将由以下三部分组成: 1.目标函数(Objective Function):要达到的目标。 2.决策变量(Decision variables):每组决策变量的值代表一种方案。在优化模 型中需要确定决策变量的最优值,优化的目标就是找到决策变量的最优值使得目标函数取得最优。 3.约束条件(Constraints):对于决策变量的一些约束,它限定决策变量可以取 的值。 在写数学模型时,一般第一行是目标函数,接下来是约束条件,再接着是一些非负限制等。 在模型窗口输入如下代码: Max = 2*x1+3*x2; !This is a linear program. X1+2*x2<=8;

lingo入门教程 --- 集合运用

lingo入门教程之二--- 集合运用 lingo中的集合用法很多,这里主要通过几个例题来进行讲解 对于每一个问题,都要先找到对应的目标函数,然后对相应值进行初始化,然后找到约束条件等进行求解 例1:SAILCO公司需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是40条,60条,75条,25条,这些需求必须按时满足。每个季度正常的生产能力是40条帆船,每条船的生产费用为400美元。如果加班生产,每条船的生产费用为450美元。每个季度末,每条船的库存费用为20美元。假定生产提前期为0,初始库存为10条船。如何安排生产可使总费用最小? 分析:用DEM,RP,OP,INV分别表示需求量、正常生产的产量、加班生产的产量、库存量,则DEM,RP,OP,INV对每个季度都应该有一个对应的值,也就说他们都应该是一个由4个元素组成的数组,其中DEM是已知的,而RP,OP,INV是未知数接下里这里例子会讲到关于集合的派生问题,这个跟c++里面的继承与派生比较相像 例2:建筑工地的位置(用平面坐标a,b表示,距离单位:公里)及水泥日用量d(吨)下表给出。有两个临时料场位于P (5,1), Q (2, 7),日储量各有20吨。从A, B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。两个新的料场应建在何处,节省的吨公里数有多大? 例3:(最短路问题) 在纵横交错的公路网中,货车司机希望找到一条从一个城市到另一个城市的最短路.下图表示的是公路网,节点表示货车可以停靠的城市,弧上的权表示两个城市之间的距离(百公里).那么,货车从城市S出发到达城市T,如何选择行驶路线,使所经过的路程最短? 分析: 假设从S到T的最优行驶路线P 经过城市C1, 则P中从S到C1的子路也一定是从S到C1的最优行驶路线;假设P 经过城市C2, 则P中从S到C2的子路也一定是从S到C2的最优行驶路线.因此, 为得到从S到T的最优行驶路线, 只需要先求出从S到Ck(k=1,2)的最优行驶路线,就可以方便地得到从S到T的最优行驶路线. 同

LINGO 教程 教材

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1如何在LINGO中求解如下的LP问题:

在模型窗口中输入如下代码:min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。

使用LINGO软件,编制程序如下: model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据;

lingo11入门到精通

LINGO11入门到精通 LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 一般来说LINGO 多用于解决大规模数学规划。 用时要注意以下几点: (1) 每条语句后必须使用分号“;”结束。问题模型必须由MODEL 命令 开始,END 结束。 (2) 用MODEL 命令来作为输入问题模型的开始,格式为MODEL : statement (语句)。 (3) 目标函数必须由“min =”或“max =”开头。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2;

x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮即可。 例1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销 model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38;

LINGO软件的使用

第三章 LINGO软件使用入门 LINGO是美国LINDO系统公司开发的一套专门用于求解最优化问题的软件.它为求解最优化问题提供了一个平台,主要用于求解线性规划、非线性规划、整数规划、二次规划、线性及非线性方程组等问题.它是最优化问题的一种建模语言,包含有许多常用的函数供使用者编写程序时调用,并提供了与其他数据文件的接口,易于方便地输入,求解和分析大规模最优化问题,且执行速度快.由于它的功能较强,所以在教学、科研、工业、商业、服务等许多领域得到了广泛的应用. §3.1 LINGO操作界面简介 在Windows操作系统下启动LINGO软件,屏幕上首先显示如图1.1所示的窗口. 图1.1 图1.1中最外层的窗口是LINGO软件的主窗口(LINGO软件的用户界面),所有其他窗口都在这个窗口之内.主窗口有:标题栏、菜单栏、工具栏和状态栏.目前,状态栏最左边显示的是“Ready”,表示准备就绪,右下角显示的是当前时间,时间前面是当前光标的位置“Ln 1,Col 1”(即1行1列).将来用户可以用选项命令(LINGO|Options|Interface菜单命令)决定是否需要显示工具栏和状态栏. LINGO有5个主菜单: ●File(文件) ●Edit(编辑) ●LINGO(LINGO系统) ●Windows(窗口) ●Help(帮助) 这些菜单的用法与Windows下其他应用程序的标准用法类似,下面只对主菜单中LINGO

系统的主要命令进行简要介绍. LINGO系统(LINGO)的主菜单 ●LINGO|Solve(Ctrl-S) LINGO|Solve(Ctrl-S)(求解)命令对当前模型进行编译并求解.如果当前模型输入有错误,编译时将报告错误.求解时会显示一个求解器运行状态窗口. ●LINGO|Solution(Ctrl-O) LINGO|Solution(Ctrl-O)(解答)命令显示当前解. ●LINGO|Range(Ctrl-R) LINGO|Range(Ctrl-R)(灵敏度分析)命令显示当前解的灵敏度分析结果.(你必须在此之前求解过当前模型) ●LINGO|Options(Ctrl-I) LINGO|Options(Ctrl-I)(选项)命令将打开一个含有7个选项卡的对话框窗口,你可以通过它修改LINGO系统的各种控制参数和选项.修改完以后,你如果单击“应用”按钮,则新的设置马上生效;如果单击“OK”按钮,则新的设置马上生效,并且同时关闭该窗口;如果单击“Save”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效;如果单击“Default”按钮,则恢复LINGO系统定义的原始默认设置;如果单击“Cancel”按钮将废弃本次操作,退出对话框;单击“Help”按钮将显示本对话框的帮助信息. ●LINGO|Generate和LINGO|Picture LINGO|Generate和LINGO|Picture命令都是在模型窗口下才能使用,他们的功能是按照LINGO模型的完整形式分别以代数表达式形式和矩阵图形形式显示目标函数和约束. ●LINGO|Debug(Ctrl+D) LINGO|Debug(Ctrl+D)命令分析线性规划无解或无界的原因,建议如何修改 ●LINGO|Model Statistics(Ctrl+E) LINGO|Model Statistics(Ctrl+E)命令显示当前模型的统计信息. ●LINGO|Look(Ctrl+L) LINGO|Look(Ctrl+L)命令显示当前模型的文本形式,显示时对所有行按顺序编号.图1.2给出了工具栏的简要功能说明. 图1.2

相关主题
文本预览
相关文档 最新文档