学习LINGO语言课件.ppt_第1页
学习LINGO语言课件.ppt_第2页
学习LINGO语言课件.ppt_第3页
学习LINGO语言课件.ppt_第4页
学习LINGO语言课件.ppt_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020年7月30日星期四9时9分55秒,LINGO,数学科学与技术学院 杨云峰 密码:654321,2020年7月30日星期四9时9分55秒,一. 优化模型与优化软件简介,二. LINGO软件的基本使用方法,Outline,三. LINGO程序流程控制和子模型,2020年7月30日星期四9时9分55秒,一. 优化模型与优化软件简介,2020年7月30日星期四9时9分55秒,优化问题的一般形式,无约束优化: 只有目标函数, 没有约束条件 有约束优化: 目标函数和约束条件都有 普通方程组:没有(1)(3), 只有(2) 不等式方程组:没有(1)(2), 只有(3),2020年7月30日星期四9时

2、9分55秒,优化类型,连续优化 : 全部决策变量取值均 为连续数值 (实数) 离散优化 : 部分或全部决策变量 只取离散数值,2020年7月30日星期四9时9分55秒,连续优化,线性规划(LP) 目标和约束均为线性函数 非线性规划(NLP) 目标或约束中有非线性函数 二次规划(QP) 目标为二次函数、 约束为线性,2020年7月30日星期四9时9分55秒,离散优化,整数规划(IP) 决策变量(全部或部分)为整数,整数线性规划(ILP),整数非线性规划(INLP) 纯整数规划(PIP), 混合整数规划(MIP) 一般整数规划,0-1(整数)规划,2020年7月30日星期四9时9分55秒,常用优化

3、软件,LINDO/LINGO软件 MATLAB优化工具箱/mathematica优化程序包 EXCEL软件的优化功能 SAS(统计分析)软件的优化功能,2020年7月30日星期四9时9分55秒,建模时需要注意的几个基本问题,1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等,2020年7月30日星期四9时9分55秒,建模时需要注意的几个基本问题,3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y 5 改为x5y) 4、合理设定变量上下界,尽可能给出变量初始值 5、

4、模型中使用的参数数量级要适当(如小于103),2020年7月30日星期四9时9分55秒,二. LINGO软件的基本使用方法,2020年7月30日星期四9时9分55秒,1 LINGO入门,2020年7月30日星期四9时9分55秒,max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20,设有数学模型如下:,2020年7月30日星期四9时9分55秒,第一步:启动Lingo,屏幕显示如下: 标记LINGO的外窗口是主框架窗口,主框架窗口的上面包含所有的命令菜单和命令工具栏; 标记LINGO MODEL-LINGO1的子窗口是一个新的、空白的模型窗口。,2020年7月

5、30日星期四9时9分55秒,第二步:在模型窗口中输入模型,model: max = 2*x1+3*x2; 4*x1+3*x210; 3*x1+5*x212; end,Max 2x1+3x2 St. 4x1+3x2=10 3x1+5x2=12 x10 x20,2020年7月30日星期四9时9分55秒,第三步:求解模型,1)选择菜单 LINGO|Solve 或者按工具栏的,2020年7月30日星期四9时9分55秒,2)LINGO开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译, LINGO将激活 Solver运算器 寻求模型的最优解;,2020年7月30日星期四9时

6、9分55秒,3)首先出现solver status 窗口,其作用是监控solver的进展和显示模型的维数等信息;,2020年7月30日星期四9时9分55秒,Solver Status 窗口,2020年7月30日星期四9时9分55秒,4)计算完成后出现Solution Report 窗口显示模型解的详细信息;,2020年7月30日星期四9时9分55秒,Solution Report 窗口,Global optimal solution found at iteration: 2 Objective value: 7.454545 Variable Value Reduced Cost x1 1.

7、272727 0.000000 x2 1.636364 0.000000 Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545,2020年7月30日星期四9时9分55秒,Reduced Cost:,在max模型中: 相应变量的 reduced cost值表示当该变量每增加一个单位时目标函数减少的量。 本例中此值均为0,2020年7月30日星期四9时9分55秒,Reduced Cost:,Reduced Cost 值列出最优单纯形表中判别 数所在行的变量的

8、系数,表示当变量有微 小变动时,目标函数的变化率。其中基变 量的reduced cost值应为0, 对于非基变量 Xj, 相应的reduced cost值表示当某个变 量Xj 增加一个单位时目标函数减少的量 ( max型问题)。本例中此值均为0。,2020年7月30日星期四9时9分55秒,SLACK OR SURPLUS:,给出约束条件的松驰变量或剩余变量的值; 小于等于约束为松驰变量(SLACK); + 大于等于约束为剩余变量(SURPLUS); -,2020年7月30日星期四9时9分55秒,DUAL PRICES:对偶价格或影子价格,DUAL PRICES表示当对应约束有微 小变动时,目标

9、函数的变化率,即约束条 件右端的常数项每增加一个单位,目标函 数相应获得的改变量。 显然,如果在最优解处约束正好取等号 (紧约束),该值才可能不是0;对于非紧 约束对该值必为0,表示对应约束中不等式 右端项的微小扰动不影响目标函数。,2020年7月30日星期四9时9分55秒,2 Lingo的基本用法注意事项,2020年7月30日星期四9时9分55秒,1)每一个模型都以 model: 开始, 又以 end 结束,也可省略此结构;,2020年7月30日星期四9时9分55秒,2)目标函数必须由 min = 或 max = 开头。,2020年7月30日星期四9时9分55秒,3)可以用表示=;,Ling

10、o无严格小于,欲使ab, 可以适当选取小的正常数e 表示成a+eb,,2020年7月30日星期四9时9分55秒,4) LINGO的每一语句以 ; 结束;,5) 注释 以 ! 开始, 以 ; 结束;,2020年7月30日星期四9时9分55秒,变量名:.不区分大小写.由字母数字下划线组成.第一个字符必须是字母.变量名最长为32个字符,2020年7月30日星期四9时9分55秒,LINGO编辑器用 蓝色显示LINGO关键字 绿色显示注释 其他文本用黑色 匹配的括号用红色高亮度显示,2020年7月30日星期四9时9分55秒,8) 变量和数字放在约束条件的左、右端均可;但最好变量在左,数字在右。,9) L

11、ingo 变量默认域为非负实数,可以改变默认域.,2020年7月30日星期四9时9分55秒,10)行名 name例:Objectivemax=2*x+3*y;Con1 4*x+3*y10;Con2 3*x+5*y12;线性规划(行名).lg4默认为1,2,3,2020年7月30日星期四9时9分55秒,Global optimal solution found. Objective value: 7.454545 Total solver iterations: 2 Variable Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.0000

12、00 Row Slack or Surplus Dual Price OBJECTIVE 7.454545 1.000000 CON1 0.000000 0.9090909E-01 CON2 0.000000 0.5454545,2020年7月30日星期四9时9分55秒,3 LINGO的建模语言,2020年7月30日星期四9时9分55秒,以运输实例逐步分析,6个仓库向8个小贩供应同一种货物, 如何运,总运输费用最小?,注:每个仓库可以向每个小贩供货 ,一共48个可能运货路线。,仓库货存量、小贩需求量、每条路线的单位运输费用三个表如下:,2020年7月30日星期四9时9分55秒,仓库货存量:ca

13、pacity,2020年7月30日星期四9时9分55秒,小贩需求量:demand,2020年7月30日星期四9时9分55秒,每单位货物运输费用表:cost,2020年7月30日星期四9时9分55秒,demand_j 表示第j个小贩的需求量 capacity_i 表示第i个仓库的库存量 cost_i_j 表示从第i个仓库到第j个小贩的单位运输费用,volume_i_j 表示从第i个仓库到第j个小贩的运输量,2020年7月30日星期四9时9分55秒,数学模型可表示如下:,2020年7月30日星期四9时9分55秒,当然目标函数可以如下输入: min = 6 * volume_1_1 + 2 * vo

14、lume_1_2 + 6 * volume_1_3 + . 1 * volume_6_6 + 4 * volume_6_7 + 3 * volume_6_8;,2020年7月30日星期四9时9分55秒,但是较大模型如果像上面那样 输入又费时,又容易出错! 这就需要LINGO的建模语言,2020年7月30日星期四9时9分55秒,LINGO的建模语言优点:,1)可以用类似于标准数学符号的方式 表示你的模型; 2)可以用一个紧凑的语句表示一系列 约束。 3)数据可独立于模型:LINGO可以从 文本文件、电子数据表、数据库中读 取数据。,2020年7月30日星期四9时9分55秒,LINGO模型的构成:

15、5个段,目标函数与约束条件段 集合段(sets: endsets) 数据段(data: enddata) 初始段(init: endinit) 计算段(calc: endcalc),Lingo建模语言的重点和难点是: 对集合概念的理解和正确使用,2020年7月30日星期四9时9分55秒,为什么使用集合,集合是LINGO建模语言的基础,是LINGO程序设计最强有力的基本构件。借助于集合,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。,2020年7月30日星期四9时9分55秒,什么是集合,集合是一群相联系的对象,比如 仓库、小贩、运输路线,这些对

16、象也 称为集合的成员。每个集合成员可能 有一个或多个与之有关联的特征,我 们把这些特征称为属性。 属性值可以预先给定,也可以是 未知的,有待于LINGO求解。,2020年7月30日星期四9时9分55秒,从我们的数学模型看需要三个集合:,(1)仓库-6个成员-货存量 (2)小贩-8个成员-需求量 (3)运输路线-48个成员 -单位运费和运货量,2020年7月30日星期四9时9分55秒,LINGO有两种类型的集合,原始集合(primitive set):由一些 最基本的对象组成的。 派生集(derived set): 用一个或多 个其它集来定义的,也就是说,它 的成员来自于其它已存在的集。,202

17、0年7月30日星期四9时9分55秒,*下面我们学习集合定义部分*,1. 以sets:开始,以endsets结束; sets: endsets,2020年7月30日星期四9时9分55秒,2. 原始集合定义法:,setname /member_list/ :attribute_list ; 。setname是集合的名字; 。member_list是成员列表,各成员之间可用 空格或逗号分隔; 。attribute_list是集合成员所具有的属性列 表,多个属性之间用逗号分隔; 。原始集合的member_list, attribute_list是可选项;,2020年7月30日星期四9时9分55秒,*仓

18、库和小贩的集合可如下定义*,sets: warehouses / w1 w2 w3 w4 w5 w6 /: capacity; vendors / v1,v2,v3,v4,v5,v6, v7,v8 / : demand; endsets,2020年7月30日星期四9时9分55秒,*成员较多时,可使用隐式成员列表,setname /member1.memberN/ :attribute_list;,2020年7月30日星期四9时9分55秒,数字型 字符数字型 星期型 月份型 年份-月份型,*隐式成员列表类别*,2020年7月30日星期四9时9分55秒,(1)数字型,1.n 例:1.5 (1,2,

19、3,4,5),(2)字符数字型,stringM.stringN 例: truck3.truck34,2020年7月30日星期四9时9分55秒,(3)星期型,dayM.dayN 例:mon.fri (Mon, Tue, Wed, Thu, Fri),(4)月份型,MonthM.MonthN 例:OCT.JAN (Oct, Nov, Dec, Jan),2020年7月30日星期四9时9分55秒,(5)年份-月份型,monthYearM.monthYearN 例:OCT2001.JAN2002 (2001.10 2001.11 2001.12 2002.1),2020年7月30日星期四9时9分55秒

20、,*仓库和小贩的集合也可如下定义*,sets: warehouses / w1.w6/: capacity; vendors / v1.v8 /: demand; endsets,2020年7月30日星期四9时9分55秒,3. 派生集合定义法:,setname (parent_set_list) /member_list/ :attribute_list; parent_set_list是父集合名列表,2020年7月30日星期四9时9分55秒,*48条运输路线集合定义*,links(warehouses,vendors) : cost, volume;,2020年7月30日星期四9时9分55秒

21、,*三个集合定义如下*,sets: warehouses / wh1.wh6 /: capacity; vendors / v1.v8 /: demand; links( warehouses, vendors): cost,volume; endsets,2020年7月30日星期四9时9分55秒,运输问题的三个集合说明:,这段代码定义了4个属性值,在接下来的模型中就可以使用属性值capacity(1),capacity(2),capacity(6); demand(1),demand(2) ,demand(8); cost(1,1), cost(1,2) , cost(1,8) , cost

22、(2,1), cost(2,2) , cost(2,8) , cost(6,1), cost(6,2) , cost(6,8); volume的引用同cost。,2020年7月30日星期四9时9分55秒,4.集合成员过滤:,trucks/1.100/:capacity; heavy_duty (trucks) | capacity( endsets,如果想赋值 x(1)=1, x(2)=2, x(3)=3, y(1)=4,y(2)=5, y(3)=6, 则数据段可以为,2020年7月30日星期四9时9分55秒,data: x=1,2,3; y=4 5 6; enddata,data: x,y=

23、1 4 2 5 3 6; enddata,多个数据之间可用逗号或空格分隔,2020年7月30日星期四9时9分55秒,若成员属性值相同,数据段定义如下:,data: x=3; !(所有成员的x=3); y=6; !(所有成员的y=6); enddata,2020年7月30日星期四9时9分55秒,也可以在运行时输入属性值:,data: x=?; !(运行时输入所有成员的x值); y=6; enddata,2020年7月30日星期四9时9分55秒,*运输问题的数据部分*,data: capacity=60,55,51,43,41,52; demand=35 37 22 32 41 32 43 38;

24、,2020年7月30日星期四9时9分55秒,cost = 6 2 6 7 4 2 5 9 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,2020年7月30日星期四9时9分55秒,sets: sett : x, y ; endsets data: sett, x, y = a 1 4 b 2 5 c 3 6; enddata,sets: sett/a,b,c/ : x, y ; endsets data: x =1 2 3; y=4 5 6; enddata,集合成

25、员可以在数据段定义:,2020年7月30日星期四9时9分55秒,运输实例:,sets: warehouses: capacity; endsets data: !可以写成warehouses =w1.w6; !也可以同时定义集合成员列表和属性值; warehouses, capacity= w1 60,w2 55, w3 51,w4 43, w5 41,w6 52; enddata,2020年7月30日星期四9时9分55秒,* 初始化定义*,只在非线性规划中使用,指定初 始值。 init: . endinit,2020年7月30日星期四9时9分55秒,例: init: x=0.999; y=0

26、.002; endinit y=log(x); x2+y2=1; 给了恰当的初始值,会减少运算时间。,2020年7月30日星期四9时9分55秒,*计算段定义*,calc: . . . endcalc,计算段的作用: 在模型输入后,LINGO开始正式求解模型之前对原始数据进行一定的计算,得到我们模型中要使用的部分数据。,2020年7月30日星期四9时9分55秒,一个简单的计算段例子:,model: data: x,y,z = 1, 2, 3; enddata calc: avg = ( x + y + z) / 3; endcalc end,2020年7月30日星期四9时9分55秒,*目标函数和

27、约束条件段*,LINGO提供了集合循环函数和集合操作 函数使得目标函数和约束条件的书写如同 数学公式那样简单。,四个集合循环函数,FOR、SUM 、 MAX、MIN,2020年7月30日星期四9时9分55秒,sum ( setname ( set_index_list) | condition : expression );,求和,2020年7月30日星期四9时9分55秒,*运输问题的目标函数*,min = sum( links ( i, j) : cost( i, j) * volume( i, j) );,min = sum( links : cost* volume );,2020年7月

28、30日星期四9时9分55秒,*运输问题实例中的求和*,!从6个仓库发到第j个小贩的货物量总和; sum( warehouses(i) : volume(i, j) );,2020年7月30日星期四9时9分55秒,从第i个仓库发出到8个小贩的货物量总和;,sum( vendors(j) : volume( i , j ) ),2020年7月30日星期四9时9分55秒,for ( setname ( set_index_list) | condition : expression_list );,生成约束for,对集合setname中的每个成员独立地生成约束,约束由约束表达式列表expressio

29、n_list描述; 多个表达式之间用分号相隔。,2020年7月30日星期四9时9分55秒,*每个小贩的需求约束*,!(要求6个仓库发给每个小贩的货物总量=小贩的需求量); for( vendors(j) : sum( warehouses( i): volume( i, j) ) =demand( j) );,2020年7月30日星期四9时9分55秒,*每个仓库的供货约束*,for( warehouses( i) : sum( vendors(j) : volume( i, j) ) capacity( i) );,!(要求每个仓库发给8个小贩的 货物总量仓库的货存量);,2020年7月30日

30、星期四9时9分55秒,*运输问题的完整模型,运输问题.lg4,2020年7月30日星期四9时9分55秒,返回集合setname上的表达式expression的最大值,max ( setname ( set_index_list) | condition : expression );,2020年7月30日星期四9时9分55秒,min ( setname ( set_index_list) | condition : expression); 返回集合setname上的表达式expression的最小值,2020年7月30日星期四9时9分55秒,返回数据集setname中成员 element的位

31、置号 (下标),*集合操作函数*,index ( setname, element ),2020年7月30日星期四9时9分55秒,model: sets: girls/debbie,sue,alice/:; boys/bob,joe,sue,fred/:; endsets calc: x=index(boys,sue); y=index(sue); endcalc end,2020年7月30日星期四9时9分55秒,in( set_name, primitive_index_1 ,primitive_index_2 ),如果数据集set_name中包含成员primitive_index_1则返回

32、1,否则 返回0。,2020年7月30日星期四9时9分55秒,例:,model: sets: plants / a,b,c,d /: ; closed(plants) / b /: ; open(plants) | #not# in(closed, enddata end,2020年7月30日星期四9时9分55秒,例2:,model: sets: s1/a b c/:; s2/x y z/:; s3(s1,s2)/a,x a,z b,y c,z/: ; endsets calc: x=in(s3,index(s1,b), index(s2,y) ); endcalc end,本例要判断集合s3

33、中是否包含元素(b,y),运行LINGO|SOLVE得到x=1,说明包含。,2020年7月30日星期四9时9分55秒,wrap(index,limit) 当index位于区间1,limit时返回index,否则返回j=index-k*limit,其中j位于区间1,limit,2020年7月30日星期四9时9分55秒,职员时序安排模型,一项工作一周7 天都需要有人(比如 护士工作),每天(周一至周日)所需的 最少职员数为20、16、13、16、19、14 和 12,并要求每个职员一周连续工作5 天, 试求每周所需最少职员数,并给出安排。 注意这里我们考虑稳定后的情况。,2020年7月30日星期四

34、9时9分55秒,sets: days/mon.sun/: required,start; endsets data: required = 20 16 13 16 19 14 12; enddata min=sum(days: start); !最小化每周所需职员数; for(days(j): sum( days(i) | i #le# 5: start( wrap(j+i+2,7 ) ) ) = required(j) );,2020年7月30日星期四9时9分55秒,size(setname),返回集合setname中所包含的成员 个数。,2020年7月30日星期四9时9分55秒,第二章 L

35、INGO与其它软件交换数据,2020年7月30日星期四9时9分55秒,拷贝、粘贴,From Exel,Pastefromexel.lg4,2020年7月30日星期四9时9分55秒,输入输出函数,用来与外部数据源连接 text()、 ole()、 file()、odbc()、 dual(),2020年7月30日星期四9时9分55秒,file( filename ),在模型的集合和数据部分使用, 从文本 文件输入数据.,2020年7月30日星期四9时9分55秒,sets: warehouses / file( 1.txt) / : capacity; vendors / file( 1.txt )

36、 / : demand; links( warehouses, vendors) : cost, volume; endsets,运输实例的数据可以从文本文件输入:,2020年7月30日星期四9时9分55秒,data: capacity = file( 1.txt ); demand = file( 1.txt ); cost = file( 1.txt ); enddata,1.txt文件内容 1.txt,2020年7月30日星期四9时9分55秒,text( filename ),在模型的数据部分使用, 向文本 文件输出数据.,Outputtotext.lg4,2020年7月30日星期四9时

37、9分55秒,ole( spreadsheet_file ,range_name_list ),在模型的数据和集合部分使用, 与excel交换数据,2020年7月30日星期四9时9分55秒,运输实例的数据可以从Excel输入:,sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume; endsets,2020年7月30日星期四9时9分55秒,data: warehouses, vendors, capacity, demand, cost = ole ( 2.xls, war

38、ehouses, vendors, capacity, demand, cost );enddata,2020年7月30日星期四9时9分55秒,在Excel中定义单元格范围名称的方法:, 按鼠标左键拖曳选择单元格范围, 释放鼠标按钮, 选择“插入|名称|定义”, 输入希望的名字, 点击“确定”按钮。,2020年7月30日星期四9时9分55秒,2.xls从Excel输入数据.lg4,2020年7月30日星期四9时9分55秒,odbc(data_source, table_name, col_1, col_2 . ),在模型的数据部分使用,与数据库进行数据传输,2020年7月30日星期四9时9分5

39、5秒,运输实例的数据可以从数据库输入:,sets: warehouses: capacity; vendors : demand; links( warehouses, vendors) : cost, volume; endsets,2020年7月30日星期四9时9分55秒,data: warehouses, capacity= odbc(); vendors, demand= odbc(); links,cost = odbc(); odbc()=volume; enddata,2020年7月30日星期四9时9分55秒,trans.mdb与数据库的数据传递.lg4,2020年7月30日星期

40、四9时9分55秒,第三章 LINGO的内部函数,2020年7月30日星期四9时9分55秒,1. 标准运算符,算术运算符: * / + -,逻辑运算符: #EQ# #NE# #GE# #GT# #LE# #LT# #NOT# #AND# #OR#,2020年7月30日星期四9时9分55秒,关系运算符: = = 可以用表示=或,2020年7月30日星期四9时9分55秒,运算符的优先级,2020年7月30日星期四9时9分55秒,lingo变量默认域为非负实数 free(variable) 取消默认域,使变量可以取任意实数 gin(variable) 限制变量取整数值 bin(variable) 限制

41、变量取值为0,1 bnd(low,variable,up) 限制变量于一个有限的范围,3. 变量界定函数,2020年7月30日星期四9时9分55秒,练习1,x1=2, x2 =3, Z*17,练习1,2020年7月30日星期四9时9分55秒,练习2,X1=1 X2=0 X3=1 Z=8,练习2,2020年7月30日星期四9时9分55秒,abs(x)、cos(x)、sin(x) 、 tan(x) 、exp(x) 、sign(x) floor(x) (返回x的整数部分) smax(x1,x2,xn) (返回x1,x2,xn的最大值) smin(x1,x2,xn),4. 数学函数,2020年7月30

42、日星期四9时9分55秒,5. 条件控制,if ( logical_condition, true_result, false_result ) 计算logical_condition,若真 返回true_result 否则返回false_result.,2020年7月30日星期四9时9分55秒,7个选项卡(可设置80-90个控制参数),2020年7月30日星期四9时9分55秒,范例,2020年7月30日星期四9时9分55秒,整数规划 整数规划.lg4,2020年7月30日星期四9时9分55秒,二次规划的例子(lingo).lg4,2020年7月30日星期四9时9分55秒,递规调用.lg4,已知

43、 ,求a7,2020年7月30日星期四9时9分55秒,学习方法: (1)上课各位老师讲的每个有数据的规划 模型上机用lingo语言实践; (2) LINGO 的help下有一项 Additional Examples of LINGO Modeling,可以仔细研究每个例子的 模型。,2020年7月30日星期四9时9分55秒,某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最

44、低?,练习3,2020年7月30日星期四9时9分55秒,练习3,2020年7月30日星期四9时9分55秒,解1 设在甲车床上加工工件1、2、3的数量为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:,2020年7月30日星期四9时9分55秒,解2,设在甲车床上加工工件i的数量为x(i), 单位工件所需加工台时数为timex(i), 单位工件的加工费用为costx(i), 在乙车床上加工工件i的数量为y(i), 单位工件所需加工台时数为timey(i) 单位工件的加工费用为costy(i) 工件i的加工数量为demand(i),2020年7月3

45、0日星期四9时9分55秒,数学模型,2020年7月30日星期四9时9分55秒,Lingo建模,sets: Chechuang/1.3/ :costx,costy, timex,timey,x,y,demand; endsets,2020年7月30日星期四9时9分55秒,Lingo建模,min=sum( chechuang : costx*x+costy*y ) sum(chechuang:timex*x)800; sum(chechuang:timey*y)900; for(chechuang:x+y=demand); for(chechuang:gin(x);gin(y);,2020年7月3

46、0日星期四9时9分55秒,data: costx=13,9,10; costy=11,12,8; timex=0.4,1.1,1; timey=0.5,1.2,1.3; demand=400,600,500; enddata,练习3,2020年7月30日星期四9时9分55秒,Lingo-Generate-Display model,MODEL: _1 MIN= 13 * X_1 + 11 * Y_1 + 9 * X_2 + 12 * Y_2 + 10 * X_3 + 8 * Y_3 ; _2 0.4 * X_1 + 1.1 * X_2 + X_3 = 800 ; _3 0.5 * Y_1 +

47、1.2 * Y_2 + 1.3 * Y_3 = 900 ; _4 X_1 + Y_1 = 400 ; _5 X_2 + Y_2 = 600 ; _6 X_3 + Y_3 = 500 ; GIN( X_1); GIN( Y_1); GIN( X_2); GIN( Y_2); GIN( X_3); GIN( Y_3); END,2020年7月30日星期四9时9分55秒,练习4-求S到T的最短路,2020年7月30日星期四9时9分55秒,model: sets: cities/s,a1,a2,a3, b1,b2,c1,c2,t/:l; roads(cities,cities)/ s,a1 s,a2 s,a3 a1,b1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论