lingo解决线性规划问题的程序(经典)
- 格式:doc
- 大小:1.76 MB
- 文档页数:19
实验一:利用Lingo 软件求解线性规划问题实验一 利用Lingo 软件求解线性规划问题1、 实验目的和任务1.1. 进一步掌握Lingo 编程操作;1.2通过实验进一步掌握运筹学线性规划问题的建模以及求解过程,提高学生分析问题和解决问题能力。
2、 实验仪器、设备及材料计算机、Lingo3、 实验内容料场选址问题P10某公司有6个建筑工地要开工,每个工地的位置(用平面坐标a,b 表示,距离单位:km )及水泥日用量d(单位:t)由下表给出,目前有两个临时料场位于P (5,1),Q (2,7),日储量各有20t.请回答以下问题: 假设从料场到工地之间有直线道路相连,试制定每天的供应计划,即从P,Q 两料场分别向各工地运送多少吨水泥,使总的吨公量数最小。
工地的位置(a,b )及水泥日用量d建模 设工地的位置为(,)i i a b ,水泥日用量为i d ,i=1,2,…,6;料场位置为(,)j j x y ,日储量为j e ,j=1,2; 从料场j 向工地i 的运送量为ij c 。
决策变量:在问题(1)中,决策变量就是料场j 向工地i 的运送量为ij c ;在问题(2)中,决策变量除了料场j 向工地i 的运送量为ij c 外,新建料场位置(,)j j x y 也是决策变量。
目标函数:这个优化问题的目标函数f 是总砘公量数(运量乘以运输距离),所以优化目标可表为2611min j i f c ===∑∑约束条件:各工地的日用量必须满足,所以21,1,2, (6)ij ijc d i ===∑各料场的运送量不能超过日储量,所以61,1,2. ij jic e j =≤=∑求解过程编写模型程序:(介绍集合的定义及应用)model:sets:!确定变量a(1),a(2),a(3),a(4),a(5),a(6);demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:!分割数据的空格与逗号或回车的作用是等价的;a=1.25 8.75 0.5 5.75 3 7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;e=20,20;!a=enddatainit:!lingo对数据是按列赋值的,而不是按行;x,y=5,1,2,7;endinit[OBJ] min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));@for(demand(i):[demand_con] @sum(supply(j):c(i,j))=d(i););@for(supply(i):[supply_con] @sum(demand(j):c(j,i))<=e(i););@for(supply(i):@bnd(0.5,x(i),8.75);@bnd(0.75,y(i),7.75););End计算结果:(如果你使用的是试用版软件,则可能不能用全局求解器求解本例,因为问题规模太大了,激活全局最优求解程序的方法,是用“lingo|Options”菜单命令打开选项对话框,在“Global Solver”选项卡上选择“Use Global Solver”)Local optimal solution found.Objective value: 85.26604Total solver iterations: 61Variable Value Reduced CostA( 1) 1.250000 0.000000A( 2) 8.750000 0.000000A( 3) 0.5000000 0.000000A( 4) 5.750000 0.000000A( 5) 3.000000 0.000000A( 6) 7.250000 0.000000B( 1) 1.250000 0.000000B( 2) 0.7500000 0.000000B( 3) 4.750000 0.000000B( 4) 5.000000 0.000000B( 5) 6.500000 0.000000B( 6) 7.750000 0.000000D( 1) 3.000000 0.000000D( 2) 5.000000 0.000000D( 3) 4.000000 0.000000D( 4) 7.000000 0.000000D( 5) 6.000000 0.000000D( 6) 11.00000 0.000000X( 1) 3.254883 0.000000X( 2) 7.250000 0.6335133E-06 Y( 1) 5.652332 0.000000Y( 2) 7.750000 0.5438639E-06 E( 1) 20.00000 0.000000E( 2) 20.00000 0.000000C( 1, 1) 3.000000 0.000000C( 1, 2) 0.000000 4.008540C( 2, 1) 0.000000 0.2051358C( 2, 2) 5.000000 0.000000C( 3, 1) 4.000000 0.000000C( 3, 2) 0.000000 4.487750C( 4, 1) 7.000000 0.000000C( 4, 2) 0.000000 0.5535090C( 5, 1) 6.000000 0.000000C( 5, 2) 0.000000 3.544853C( 6, 1) 0.000000 4.512336C( 6, 2) 11.00000 0.000000Row Slack or Surplus Dual PriceOBJ 85.26604 -1.000000DEMAND_CON( 1) 0.000000 -4.837363DEMAND_CON( 2) 0.000000 -7.158911DEMAND_CON( 3) 0.000000 -2.898893DEMAND_CON( 4) 0.000000 -2.578982DEMAND_CON( 5) 0.000000 -0.8851584DEMAND_CON( 6) 0.000000 0.000000SUPPLY_CON( 1) 0.000000 0.000000SUPPLY_CON( 2) 4.000000 0.000000如果把料厂P,Q的位置看成是已知并且固定的,这时是LP模型,只需把上面的程序中初始段的语句移到数据段就可以了。
lingo解决线性规划问题的程序(经典)•线性规划问题概述•Lingo软件介绍•使用Lingo解决线性规划问题步目录骤•经典线性规划问题案例解析•Lingo在解决线性规划问题中的优势•总结与展望01线性规划问题概述定义:线性规划(Linear Programming,简称LP)是数学规划的一个分支,它研究的是在一组线性约束条件下,一个线性目标函数的最大或最小值问题。
特点目标函数和约束条件都是线性的。
可行域是凸集,即对于任意两个可行解,它们的凸组合仍然是可行解。
最优解如果存在,则一定在可行域的某个顶点上达到。
定义与特点生产计划资源分配运输问题金融投资01020304企业如何安排生产,使得在满足市场需求和资源限制的前提下,成本最低或利润最大。
如何合理分配有限的资源(如资金、人力、时间等),以达到最佳的效果。
如何安排货物的运输路线和数量,使得在满足供需关系的前提下,总运费最低。
投资者如何在一定的风险水平下,使得投资收益最大。
决策变量表示问题的未知量,通常用$x_1, x_2, ldots, x_n$表示。
目标函数表示问题的优化目标,通常是决策变量的线性函数,形如$z = c_1x_1 + c_2x_2 + ldots + c_nx_n$。
约束条件表示问题的限制条件,通常是决策变量的线性不等式或等式,形如$a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1$。
01$begin{aligned}02& text{max} quad z = c_1x_1 + c_2x_2 + ldots +c_nx_n03& text{s.t.} quad a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1& quadquadquad vdots& quadquadquad a_{m1}x_1 + a_{m2}x_2 + ldots + a_{mn}x_n leq (=, geq) b_m•& \quad\quad\quad x_i \geq 0, i = 1, 2, \ldots, n线性规划问题数学模型end{aligned}$其中,“s.t.”表示“subject to”,即“满足……的条件下”。
实验报告课程名称:运筹学项目名称:线性规划问题的求解姓名:专业:班级:1班学号:同组成员:一、实验准备:1.线性规划(Linear programming,简称LP)是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法。
研究线性约束条件下线性目标函数的极值问题的数学理论和方法。
英文缩写LP。
它是运筹学的一个重要分支,广泛应用于军事作战、经济分析、经营管理和工程技术等方面。
为合理地利用有限的人力、物力、财力等资源作出的最优决策,提供科学的依据。
从实际问题中建立数学模型一般有以下三个步骤;(1)根据影响所要达到目的的因素找到决策变量;(2)由决策变量和所在达到目的之间的函数关系确定目标函数;(3)由决策变量所受的限制条件确定决策变量所要满足的约束条件。
2.所建立的数学模型具有以下特点:(1)每个模型都有若干个决策变量(x1,x2,x3……,xn),其中n为决策变量个数。
决策变量的一组值表示一种方案,同时决策变量一般是非负的。
(2)目标函数是决策变量的线性函数,根据具体问题可以是最大化(max)或实际中,为保证完成100套工架,所使用原材料最省,可以混合使用各种下料方案。
设按方案A,B,C,D,E下料的原材料数分别为x1,x2,x3,x4,x5根据表可以得到下面的线性规划模型:解:虽然连续投资问题属于动态优化问题,但可以用静态优化的方法解决,用决策变量xi1,xi2,xi3,xi4(i=12…,5)分别表示第i年年初为项目A,B,C,D,的投资额,根据问题的要求各变量的对应关系如表,表中空白处表示当年不能为该项目投资,也可认为投资额为0.实验报告成绩(百分制)__________ 实验指导教师签字:__________。
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A、A两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A,121或者在设备乙上用8小时加工成4公斤A。
根据市场需求,生产的A、A能全部售出,且每公斤A获利212124元,每公斤A获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为4802 小时,并且设备甲每天至多能加工100公斤A,设备乙的加工能力没有限制。
试为该厂制定一个生产计划,1使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资,若投资,每天最多购买多少桶牛奶,2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元,3)由于市场需求变化,每公斤A的获利增加到30元,应否改变生产计划, 1数学模型:设每天用x桶牛奶生产A1 ,用x桶牛奶生产A2 12目标函数:设每天获利为z元。
x桶牛奶可生产3x公斤A1,获利24*3x,x桶牛奶可生产4*x公11122斤A2,获利16*4x,故z=72x+64x212约束条件:原料供应:生产A、A的原料(牛奶)总量不超过每天的供应50桶,即 12x+x?50 12劳动时间:生产A、A的总加工时间不超过每天正式工人总的劳动时间480小时,即 1212x+8x?480 12设备能力:A的产量不得超过设备甲每天的加工能力100小时,即 13x?100 1非负约束:x、x均不能为负值,即x?0,x?0 2121综上所述可得max z=72x+64x 12s.t.x+x?50 1212x+8x?480 123x?100 1x?0,x?0 21显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
Lingo12软件培训教案Lingo 主要用于求解线性规划,整数规划,非线性规划,V10以上版本可编程。
例1 一个简单的线性规划问题0 ,600 2100350 st.3 2max >=<=+=<<=++=y x y x x y x y x z !exam_1.lg4 源程序max = 2*x+3*y;[st_1] x+y<350;[st_2] x<100;2*x+y<600; !决策变量黙认为非负; <相当于<=; 大小写不区分当规划问题的规模很大时,需要定义数组(或称为矩阵),以及下标集(set) 下面定义下标集和对应数组的三种方法,效果相同::r1 = r2 = r3, a = b = c. sets :r1/1..3/:a;r2 : b;r3 : c;link2(r1,r2): x;link3(r1,r2,r3): y;endsetsdata :ALPHA = 0.7;a=11 12 13 ;r2 = 1..3;b = 11 12 13;c = 11 12 13;enddata例2 运输问题解: 设决策变量ij x = 第i 个发点到第j 个售点的运货量,i =1,2,…m; j =1,2,…n; 记为ij c =第i 个发点到第j 个售点的运输单价,i =1,2,…m; j =1,2,…n 记i s =第i 个发点的产量, i =1,2,…m; 记j d =第j 个售点的需求量, j =1,2,…n. 其中,m = 6; n = 8.设目标函数为总成本,约束条件为(1)产量约束;(2)需求约束。
于是形成如下规划问题:nj m i x n j d xm i s x x c ij j n i ij i mj ij m i nj ij ij ,...,2,1,,...,2,1,0 ,...,2,1,,...,2,1, st.z min 1111==>=<==<==∑∑∑∑====把上述程序翻译成LINGO 语言,编制程序如下:!exam_2.lg4 源程序model : !6发点8收点运输问题;sets :rows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量;endsets!-------------------------------------;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddata!------------------------------------;min = @sum(links: c*x); !目标函数=运输总成本;@for(rows(i):@sum(cols(j): x(i,j))<=s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j))=d(j) ); !需求约束;end例3把上述程序进行改进,引进运行子模块和打印运算结果的语句:!exam_3.lg4 源程序model: !6发点8收点运输问题;sets:rows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量; endsets!==================================;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddata!==================================;submodel transfer:min = cost; ! 目标函数极小化;cost = @sum(links: c*x); !目标函数:运输总成本;@for(rows(i):@sum(cols(j): x(i,j)) < s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j)) > d(j) ); !需求约束;endsubmodel!==================================;calc:@solve(transfer); !运行子模块(解线性规划);@divert('transfer_out.txt');!向.txt文件按自定格式输出数据;@write('最小运输成本=',cost,@newline(1),'最优运输方案x=');@for(rows(i):@write(@newline(1));@writefor(cols(j): ' ',@format(x(i,j),'3.0f') ) );@divert(); !关闭输出文件;endcalcend打开transfer_out.txt文件,内容为:最小运输成本=664最优运输方案x=0 19 0 0 41 0 0 01 0 0 32 0 0 0 00 11 0 0 0 0 40 00 0 0 0 0 5 0 3834 7 0 0 0 0 0 00 0 22 0 0 27 3 0例4data段的编写技巧(1):从txt文件中读取原始数据!exam_3.lg4 源程序中的data也可以写为:data:s = @file('transfer_data.txt');d = @file('transfer_data.txt');c = @file('transfer_data.txt');enddata其中,transfer_data.txt的内容为:!transfer.lg4程序的数据;!产量约束s= ;60,55,51,43,41,52 ~!需求约束d= ;35 37 22 32 41 32 43 38 ~!运输单价c= ;6 2 67 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3 ~!注:字符~是数据分割符,若无此符,视所有数据为一个数据块,只赋给一个变量;例5lingo程序的的3种输入和3种输出方法;!exam_5.lg4的源程序;sets:rows/1..3/: ;cols/1..4/: ;link(rows,cols): a, b, mat1, mat2;endsetsdata:b = 1,2,3,45,6,7,89,10,11,12; !程序内输入;a = @file('a.txt'); !外部txt文件输入;mat1 = @ole('d:\lingo12\data.xls',mat1); !EXcel文件输入;enddatacalc:@text('a_out.txt') = a; !列向量形式输出数据;@for(link: mat2 = 2*mat1);@ole('d:\lingo12\data.xls') = mat2 ;!把mat2输出到xls文件中的同名数据块;!向.txt文件按自定格式输出数据(参照前例);Endcalc例6程序段中的循环和选择结构举例!exam_6.lg4的源程序;sets:rows/1..5/:;cols/1..3/:;links(rows,cols):d;endsetsdata:d=0 2 34 3 21 3 24 7 22 1 6;enddatacalc:i=1;@while(i#le#5:a = d(i,1);b = d(i,2);c = d(i,3);@ifc(a#eq#0:@write('infeasible!',@newline(1));@elsedelta = b^2-4*a*c;sqrt = @sqrt(@if(delta#ge#0, delta,-delta));@ifc(delta#ge#0:@write('x1=',(-b+sqrt)/2/a,'x2=',(-b-sqrt)/2/a,@newline(1));@else@write('x1=',-b/2/a,'+',sqrt/2/a,'i','x2=',-b/2/a,'-',sqrt/2/a,'i',@newline(1));););i=i+1;);endcalc本程序中的循环结构也可以用@for(rows(i): 程序体);进行计算。
lingo解决线性规划问题的程序(经典)Lingo12软件培训教案Lingo 主要用于求解线性规划,整数规划,非线性规划,V10以上版本可编程。
例1 一个简单的线性规划问题0 , 600 2 100 350 st. 3 2max >=<=+=<<=++=y x y x x y x y x z!exam_1.lg4 源程序 max = 2*x+3*y; [st_1] x+y<350; [st_2] x<100;2*x+y<600; !决策变量黙认为非负; <相当于<=; 大小写不区分当规划问题的规模很大时,需要定义数组(或称为矩阵),以及下标集(set) 下面定义下标集和对应数组的三种方法,效果相同::r1 = r2 = r3, a = b = c. sets :r1/1..3/:a; r2 : b;r3 : c;link2(r1,r2): x; link3(r1,r2,r3): y; endsets data :ALPHA = 0.7; a=11 12 13 ; r2 = 1..3; b = 11 12 13; c = 11 12 13; enddatarows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量;endsets!-------------------------------------;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddata!------------------------------------;min = @sum(links: c*x); !目标函数=运输总成本;@for(rows(i):@sum(cols(j): x(i,j))<=s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j))=d(j) ); !需求约束;end例3把上述程序进行改进,引进运行子模块和打印运算结果的语句:!exam_3.lg4 源程序model: !6发点8收点运输问题;sets:rows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量;endsets!==================================;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddata!==================================;submodel transfer:min = cost; ! 目标函数极小化;cost = @sum(links: c*x); !目标函数:运输总成本;@for(rows(i):@sum(cols(j): x(i,j)) < s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j)) > d(j) ); !需求约束;endsubmodel!==================================;calc:@solve(transfer); !运行子模块(解线性规划);@divert('transfer_out.txt');!向.txt文件按自定格式输出数据;@write('最小运输成本=',cost,@newline(1),'最优运输方案x=');@for(rows(i):@write(@newline(1));@writefor(cols(j): ' ',@format(x(i,j),'3.0f') ) );@divert(); !关闭输出文件;endcalcend打开transfer_out.txt文件,内容为:最小运输成本=664最优运输方案x=0 19 0 0 41 0 0 01 0 0 32 0 0 0 00 11 0 0 0 0 40 00 0 0 0 0 5 0 3834 7 0 0 0 0 0 00 0 22 0 0 27 3 0例4 data段的编写技巧(1):从txt文件中读取原始数据!exam_3.lg4 源程序中的data也可以写为:data:s = @file('transfer_data.txt');d = @file('transfer_data.txt');c = @file('transfer_data.txt');enddata其中,transfer_data.txt的内容为:!transfer.lg4程序的数据;!产量约束s= ;60,55,51,43,41,52 ~!需求约束d= ;35 37 22 32 41 32 43 38 ~!运输单价c= ;6 2 67 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3 ~!注:字符~是数据分割符,若无此符,视所有数据为一个数据块,只赋给一个变量;例5lingo程序的的3种输入和3种输出方法;!exam_5.lg4的源程序;sets:rows/1..3/: ;cols/1..4/: ;link(rows,cols): a, b, mat1, mat2;endsetsdata:b = 1,2,3,45,6,7,89,10,11,12; !程序内输入;a = @file('a.txt'); !外部txt文件输入;mat1 = @ole('d:\lingo12\data.xls',mat1); !EXcel文件输入; enddatacalc:@text('a_out.txt') = a; !列向量形式输出数据;@for(link: mat2 = 2*mat1);@ole('d:\lingo12\data.xls') = mat2 ;!把mat2输出到xls文件中的同名数据块;!向.txt文件按自定格式输出数据(参照前例);Endcalc例6 程序段中的循环和选择结构举例!exam_6.lg4的源程序;sets:rows/1..5/:;cols/1..3/:;links(rows,cols):d;endsetsdata:d=0 2 34 3 21 3 24 7 22 1 6;enddatacalc:i=1;@while(i#le#5:a = d(i,1);b = d(i,2);c = d(i,3);@ifc(a#eq#0:@write('infeasible!',@newline(1));@elsedelta = b^2-4*a*c;sqrt = @sqrt(@if(delta#ge#0, delta,-delta));@ifc(delta#ge#0:@write('x1=',(-b+sqrt)/2/a,'x2=',(-b-sqrt)/2/a,@newline(1));@else@write('x1=',-b/2/a,'+',sqrt/2/a,'i','x2=',-b/2/a,'-',sqrt/2/a,'i',@newline(1));););i=i+1;);endcalc本程序中的循环结构也可以用@for(rows(i): 程序体);进行计算。
例7指派问题(n人n任务费用最小)B1 B2 B3 B4 B5 B6A1 6 2 6 7 4 2A2 4 9 5 3 8 5A3 5 2 1 9 7 4 A4 7 6 7 3 9 2 A5 2 3 9 5 7 2 A65 5 2 2 8 1解: 设决策变量ij x =1或0, 表示第i 个人是否完成第j 项任务,i,j =1,2,…n; 记ij c =第i 个人完成第j 项任务的费用,i,j =1,2,…n; n = 6.设目标函数为总费用,约束条件为(1)每人只完成一项任务;(2)每项任务只由一人完成。
于是形成如下规划问题:nj n i x nj xn i x x c ij ni ijnj ij n i nj ij ij ,...,2,1,,...,2,1,10 ,...,2,1,1,...,2,1,1 st.z min 1111========∑∑∑∑====或!exam_7.lg4的源程序;model : !6人6任务指派问题; sets :rows/1..6/: ; !6人6任务;links(rows,rows): c, x; !费用和决策变量; endsets!-------------------------------------; data :c = 6 2 6 7 4 2 4 9 5 3 8 5 5 2 1 9 7 4 7 6 7 3 9 2 2 3 9 5 7 2 5 5 2 2 8 1; enddata!==================================;submodel appointment:min = cost; ! 目标函数极小化;cost = @sum(links: c*x); !目标函数:总费用;@for(rows(i):@sum(rows(j): x(i,j)) = 1 ); !每人完成一项 ;@for(rows(j):@sum(rows(i): x(i,j))= 1 ); !每项由一人完成;@for(links: @bin(x)); !0-1变量约束;endsubmodelsubmodel binVar:@for(links: @bin(x)); !0-1变量约束;endsubmodel!==================================;calc:@solve(appointment,binVar); !运行子模块(解线性规划);@divert('appointment_out.txt');!向.txt文件按自定格式输出数据;@write('最小指派费用=',cost,@newline(1),'分配方案x=');@for(rows(i):@write(@newline(1));@writefor(rows(j): '',@format(x(i,j),'3.0f') ) );@divert(); !关闭输出文件;endcalcend例8多目标规划转化为单目标规划问题举例把上述运输问题稍加修改,考虑到运输量可以要取整数,就变成整数规划问题,而且运输问题除了成本最小一个目标以外,有时也要考虑各发点的运输量尽量均衡作为另一个目标。