一类约束满足问题的LINGO算法
用Lingo求解整数(0-1)规划模型

1、建立数学模型, 2、用lingo循环语句编写程序.
上机作业题 人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一
定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
班次
时间段
人数 班次
时间段
人数
1
6:00~9:00
例 4 求函数 z x 22 y 22 的最小值.
例 4 求函数 z x 22 y 22 的最小值.
解: 编写Lingo 程序如下:
min=(x+2)^2+(y-2)^2; @free(x); 求得结果: x=-2, y=2
二、Lingo 循环编程语句
(1) 集合的定义 包括如下参数: 1) 集合的名称.
12,8 3,0; enddata
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目标函数;
@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
!约束条件;
例6:人员选拔问题
队员号码 身高 / m 位置 队员号码 身高 / m 位置
例 2 用Lingo软件求解整数规划问题
min z 2 x1 5 x2 3 x3
4 x1 x2 x3 0
2
x1
4 x2
2 x3
2
x1
x2
x3
2
xi 0 且取整数, i 1, 2, 3
Lingo 程序:
min=2*x1+5*x2+3*x3; -4*x1-x2+x3>=0; -2*x1+4*x2-2*x3>=2; x1-x2+x3>=2; @gin(x1);@gin(x2);@gin(x3);
lingo整数规划

lingo整数规划整数规划是运筹学中的一种优化方法,用于解决决策问题中存在离散决策变量的数学规划问题。
在整数规划中,决策变量的取值只能是整数。
整数规划的应用非常广泛,包括生产计划、资源分配、货物运输等领域。
下面将介绍一些与整数规划相关的术语和技巧。
1. 最优解:整数规划的目标是找到使目标函数最大或最小的整数解。
最优解指的是在满足约束条件的前提下,使目标函数的取值达到最优的决策变量取值。
2. 整数线性规划:整数线性规划是整数规划的一种特殊情况,其中目标函数和约束条件都是线性的。
3. 整数非线性规划:整数非线性规划是整数规划的另一种形式,其中目标函数或约束条件中至少有一项是非线性的。
4. 分枝定界法:分枝定界法是求解整数规划问题的一种常用方法。
它通过将整数规划问题划分为多个子问题,并对每个子问题进行求解,直到找到最优解。
5. 割平面法:割平面法是求解整数规划问题的另一种方法。
它通过加入额外的线性不等式约束,逐步削减可行解空间,直到找到最优解。
6. 整数规划松弛:整数规划松弛是指将整数规划问题中的整数约束条件松弛为连续变量的约束条件,从而将整数规划问题转化为线性规划问题。
7. 整数规划可行解:整数规划问题的可行解是指满足所有约束条件的整数取值。
8. 整数规划解的整数性:整数规划解的整数性是指整数规划问题的解是否满足整数约束条件。
9. 混合整数规划:混合整数规划是一类更一般的整数规划问题,其中决策变量可以是整数或连续变量。
10. 整数规划的应用:整数规划在各种领域中都有广泛的应用,包括生产计划、资源分配、货物运输等。
通过合理的建模和求解技巧,整数规划可以帮助企业优化决策,提高效益。
总之,整数规划是一种应用十分广泛的优化方法,通过对决策变量的整数约束进行建模,帮助解决实际问题中存在的离散决策变量的优化问题。
lingo及举例

location2
Lingo程序入门
LINGO模型的构成:4个段
集合段(SETS ENDSETS)
数据段(DATA ENDDATA)
LP:移到数据段
初始段(INIT ENDINIT)
目标与 约束段
局部最优:89.8835(吨公里 )
Lingo程序入门
Lingo举例
例4:匹配问题 某班8名同学准备分成4个调查队(每队两人)前往四个地区进行
高 ﹣(取反) ^ ﹡/
低 ﹢﹣
Lingo程序入门
(2)逻辑运算符 #not# 否定该操作数的逻辑值,#not#是一个一元运算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase #ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true 这些运算符的优先级由高到低为:
c=0.02 0.07 0.04 0.03 0.05;
b=7 3 10; enddata
5 i 1
ci
xi
5 i 1
Aji
xi
bj ,
j
1, 2, 3
min=@sum(feed(i):c(i)*x(i)); !定义目标函数并求最小化问题
@for(nutr( j):@sum(feed(i):a( j,i)*x(i))>=b( j)); !定义约束条件
整数规划简介及Lingo求解

整数规划及Lingo 求解一、 概论1.1 整数规划的定义在工程设计和企业管理中,常常会遇到要求决策变量取整数值的规划问题。
安排生产时,投入的人力与机器数量必须是整数,生产的 某些产品(如汽车、机床、船舶等)的数量也是整数。
整数规划就是用于研究、处理这一类问题的数学规划。
如果在线性规划的基础上,把规划中的变量(部分或全部)限制为整数时,就称之为线性整数规划。
大部分的整数规划都是线性的所以我们也称线性整数规划为整数规划。
在许多情况下,我们都可以把规划问题的决策变量看成是连续的变量;但在某些情况下,规划问题的决策变量却被要求一定是整数。
例如,完成某项工作所需要的人数或设备台数,进入市场销售的商品件数,以及某一机械设备维修的次数等。
当连续的决策变量变为离散变量时非线性优化问题通常会难解得多。
但是应用软件就方便多了,本文给了Lingo 在规划中的常用方法和程序。
1.2 整数规划的分类在线性规划的基础上,要求所有变量都取整的规划问题称为纯整数规划问题;如果仅仅是要求一部分变量取整,则称为混合整数规划问题。
全部或部分决策变量只能取0,1值的规划问题称为10-规划问题。
1.3 整数规划的一般模型目标函数约束条件决策集 x 为整数如果用集合表示上面的式子目标函数: Cx =max(min)约束条件为: b Ax =例 1.1 飞船装载问题设有n 种不同类型的科学仪器希望装在登月飞船上, 令0>j c 表示每件第j 类仪器的科学价值;0>j a 表示每件第j 类仪器的重量。
每类仪器件数不限, 但装载件数只能是整数。
飞船总载荷不得超过数b 。
设计一种方案, 使得被装载仪器的科学价值之和最大。
建模 记j x 为第j 类仪器的装载数。
目标函数 ∑=j j x c m a x约束条件 ∑≤b x a j j决策集 j x 为正整数⎪⎪⎩⎪⎪⎨⎧≤+++≤+++≤+++m n mm m m n n n n k x a x a x a k x a x a x a k x a x a x a t s22112222212111212111..n n x c x c x c +++= 2211m ax (m in)二、 算法简介及应用举例2.1 解整数规划的一般算法通常解整数规划有三种方法,下面只介绍算法思想不具体讲解,在限制条件少的情况下分支定界法最为常用。
用LINGO求解线性规划问题

实验1 用LINGO求解线性规划问题LINGO使用简介LINGO软件是美国的LINDO系统公司(Lindo System Inc)开发的一套用于求解最优化问题的软件包.LINGO除了能用于求解线性规划和二次规划外,还可以用于非线性规划求解以及一些线性和非线性方程(组)的求解.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,而且执行速度快.LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果,这里简单介绍LINGO的使用方法.LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络优化和排队论模型中的最优化问题等.一个LINGO程序一般会包含集合段、数据输入段、优化目标和约束段、初始段和数据预处理段等部分,每一部分有其独特的作用和语法规则,读者可以通过查阅相关的参考书或者LINGO的HELP文件详细了解,这里就不展开介绍了.LINGO的主要功能特色为:既能求解线性规划问题,也有较强的求解非线性规划问题的能力;输入模型简练直观;运算速度快、计算能力强;内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述大规模的优化模型;将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;并且能方便地与Excel、数据库等其他软件交换数据.LINGO的语法规定:(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2)每个语句必须以分号“;”结束,每行可以有许多语句,语句可以跨行;(3)变量名称必须以字母(A~Z)开头,由字母、数字(0~9)和下划线所组成,长度不超过32个字符,不区分大小写;(4)可以给语句加上标号,例如[OBJ] MAX=200*X1+300*X2;(5)以惊叹号“!”开头,以分号“;”结束的语句是注释语句;(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7)LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两个语句可以省略.实验目的1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINGO求解;2.掌握灵敏度分析以及资源的影子价格的相关分析方法.实验数据与内容问题1.1某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需设备台时及对甲、乙两种原材料的消耗,有关数据如表1.1.问:应如何安排生产计划,使工厂获利最大?.问题1.2 某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g ,矿物质3g ,维生素8mg ,该公司能买到5种不同的饲料,每种饲料1kg 所含各种营养成分和成本如表1.2所示,如果每个小动物每周食用饲料不超过52kg ,求既能满足动物生长需要,又使总成本最低的饲料配方.实验指导问题1.1设计划生产两种产品分别为,则建立线性规划问题数学模型B A ,21,x x ⎪⎪⎩⎪⎪⎨⎧≥≤≤≤++=0,12416482.32max 21212121x x x x x x t s x x S 在LINGO 的MODEL 窗口内输入如下模型:model :max =2*x1+3*x2;x1+2*x2<=8;4*x1<=16;4*x2<=12;end选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message ”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO 的Help ).改正错误以后再求解,如果语法通过,LINGO 用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status ”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close 关闭窗口,屏幕上出现标题为“Solution Report ”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.求解结果:Global optimal solution found at iteration: 5Objective value: 14.00000Variable Value Reduced CostX1 4.000000 0.000000X2 2.000000 0.000000Row Slack or Surplus Dual Price1 14.00000 1.0000002 0.000000 1.5000003 0.000000 0.12500004 4.000000 0.000000该报告说明:运行5步找到全局最优解,目标函数值为14,变量值分别为.“Reduced Cost ”的含义是需缩减成本系数或需增加利润系数(最优解中取值非零的决策变量的Reduced Cost 值等于零).“Row ”是输入模型中的行号,目标函数是第一行;“Slack or Surplus ”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“124,2==x x ≤”的不等式,右边减左边的差值为Slack (松弛),对于“”的不等式,左边减右边的差值为Surplus (剩余),当约束条件两边相等时,松弛或剩余的值等于零.“Dual Price ”的意思是对偶价格(或称为影子价格),上述报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品2单位,所需设备8台时已经饱和,对偶价格1.5的含义是:如果设备增加1台时,能使目标函数值增加1.5.报告中Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位,所需原材料乙8公斤还剩余4公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为0.≥问题1.2设需要饲料分别为 kg ,则建立线性规划数学模型:54321,,,,A A A A A 54321,,,,x x x x x 123451234512345123451234512345min 0.20.70.40.30.50.320.6 1.8600.10.050.020.20.0530.050.10.020.20.088.52,,,,0S x x x x x x x x x x x x x x x x x x x x s t x x x x x x x x x x =++++++++≥⎧⎪++++⎪⎪≥++++⎨⎪++++≤⎪≥⎪⎩≥ 在LINGO 的MODEL 窗口内输入如下模型:Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;0.3*x1+2*x2+x3+0.6*x4+1.8*x5>60;0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x5>3;0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x5>8;x1+x2+x3+x4+x5<52;求解输出结果如下:Global optimal solution found at iteration: 4Objective value: 22.40000Variable Value Reduced CostX1 0.000000 0.7000000X2 12.00000 0.000000X3 0.000000 0.6166667X4 30.00000 0.000000X5 10.00000 0.000000Row Slack or Surplus Dual Price1 22.40000 -1.0000002 0.000000 -0.58333333 4.100000 0.0000004 0.000000 -4.1666675 0.000000 0.8833333因此,每周每个动物的配料为饲料、、分别为12、30和10kg ,合计为52,可使得饲养成本达到最小,最小成本为22.4元;不选用饲料和的原因是因为这两种饲料的价格太高了,没有竞争力.“Reduced Cost ”分别等于0.7和0.617,说明当这两种饲料的价格分别降低0.7元和0.62元以上时,不仅选用这两种饲料而且使得饲养成本降低.从“Slack or Surplus”可以看出,蛋白质和维生素刚达到最低标准,矿物质超过最低标准4.12A 4A 5A kg kg kg 1A 3A g ;从“Dual Price”可以得到降低标准蛋白质1单位可使饲养成本降低0.583元,降低标准维生素1单位可使饲养成本降低4.167元,但降低矿物质的标准不会降低饲养成本,如果动物的进食量减少,就必须选取精一些的饲料但要增加成本,大约进食量降低1可使得饲养成本增加0.88元.kg 对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO 软件求解的灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵敏度分析结果,默认情况下这项功能是关闭的.想要激活它,必须运行LINGO|Options …命令,选择Gengral Solver ,在Dual Computation 列表框中,选择Prices and Ranges 选项并确定.对于例1.1问题进行灵敏度分析,结果如下:以下是灵敏度分析的结果Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable AllowableVariable Coefficient Increase DecreaseX1 2.000000 INFINITY 0.5000000X2 3.000000 1.000000 3.000000Righthand Side RangesRow Current Allowable AllowableRHS Increase Decrease2 8.000000 2.000000 4.0000003 16.00000 16.00000 8.0000004 12.00000 INFINITY 4.000000对于例1.2问题进行灵敏度分析,结果如下:Ranges in which the basis is unchanged:Objective Coefficient RangesCurrent Allowable AllowableVariable Coefficient Increase DecreaseX1 0.2000000 INFINITY 0.7000000X2 0.7000000 INFINITY 0.1358974X3 0.4000000 INFINITY 0.6166667X4 0.3000000 1.400000 1.000000X5 0.5000000 0.1247059 INFINITYRighthand Side RangesRow Current Allowable AllowableRHS Increase Decrease2 60.00000 4.800000 4.8000003 3.000000 4.100000 INFINITY4 8.000000 0.3428571 0.48000005 52.00000 1.846154 1.411765思考题某投资公司拟制定今后5年的投资计划,初步考虑下面四个投资项目:项目A:从第1年到第4年每年年初可以投资,于次年年末收回成本,并可获利润15%;项目B:第3年年初可以投资,到第5年年末可以收回成本,并获得利润25%,但为了保证足够的资金流动,规定该项目的投资金额上限为不超过总金额的40%;项目C:第2年年初可以投资,到第5年年末可以收回成本,并获得利润40%,但公司规定该项目的最大投资金额不超过总金额的30%;项目D:5年内每年年初可以购买公债,于当年年末可以归还本金,并获利息6%.该公司现有投资金额100万元,请帮助该公司制定这些项目每年的投资计划,使公司到第5年年末核算这5年投资的收益率达到最大.建立线性规划问题的数学模型,并用LINGO求解.。
运筹学软件(LINGO)简介

目标与约束段
对于产品数量的平衡方程而言, 由于下标I=1时的约束关系 与I=2,3,4时有所区别(因为定义的变量INV是不包含INV(0)), 因 此把I=1的约束关系单独写出“INV(1)=10+RP(1)+OP(1)-DEM(1);”, 而对I=2,3,4对应的约束, 增加了一个逻辑表达式来刻划: @FOR(QUARTERS(I)|I#GT#1: INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););
② 变量定界函数 @GIN(X): @BIN(X): @FREE(X): 限制X为整数. 限制X为0或1. 取消对X的符号限制.
@BND(L,X,U): 限制 L ≤ X ≤ U .
注: 有关其它函数的介绍, 请参考LINGO的帮助文件.
4、运算符说明 ① 运算符 算数运算符: +(加法), -(减法或负号), *(乘法), /(除法), ^(求幂). 关系运算符: <(即<=,小于等于), >(即>=,大于等于). 注:优化模型中的约束一般没有严格小于、严格大于关系. =(等于),
逻辑运算符: #AND#(与), #EQ#(等于), #OR#(或), #NE#(不等于), #NOT#(非); #GT#(大于).
#GE#(大于等于), #LT#(小于),#LE#(小于等于).
注: 逻辑运算的结果为“真”(TRUE)和“假”(FALSE), LINGO 中用数字1代表TRUE, 其它值都是FALSE.
2、状态窗口说明(例1)
Variables(变量数量) Total(变量总数) Nonlinear(非线性变量) Integer(整数数量)
注:由于LINGO对中文操作系 统的兼容性不好, 所以有些 显示字符和单词被截掉了.
《LINGO简介》课件

某些复杂的数学表达可能无法直接在 LINGO中表示。用户可以通过混合编 程或使用其他建模语言(如GAMS) 来解决这一问题。
对于特定行业或领域的定制化需求, LINGO可能无法直接提供相应的功能 。在这种情况下,用户可以通过扩展 LINGO的API或与其他软件的集成来 实现定制化需求。
感谢您的观看
目标函数的设置
目标函数定义
在LINGO中,需要定义一个目标函数来描述决策变量 的优化目标。
目标函数类型
目标函数可以是最大化或最小化形式,根据实际问题 的需求进行选择。
目标函数编辑器
LINGO提供了一个目标函数编辑器,用户可以在其中 方便地定义和编辑目标函数。
求解操作
求解器选择
在LINGO中,可以选择不同的求解器 来求解模型,根据模型的规模和复杂
LINGO软件广泛应用于生产计划、资源分配 、工艺流程优化等方面。
物流运输
LINGO软件用于运输路线规划、车辆调度、 仓储优化等问题求解。
金融投资
LINGO软件用于投资组合优化、风险管理、 信贷决策等问题求解。
科研领域
LINGO软件在数学建模、统计分析、机器学 习等领域有广泛应用。
02
LINGO软件的基本操作
物流配送问题
总结词
物流配送问题是一个复杂的优化问题,LINGO软件能够通过建立有效的数学模型,优化配送路线和成本。
详细描述
物流配送问题涉及到如何合理规划配送路线、分配运输资源,以最小化运输成本并确保及时送达。LINGO软件通 过构建配送问题的数学模型,帮助企业找到最优的配送方案,降低运输成本、提高运输效率。
LINGO软件与其他软件的比较与选择
MATLAB
MATLAB在科学计算和数据分析领域具有广泛的应用,但 相比之下,LINGO在求解优化问题方面更加专业和高效。
LINGO 线性规划问题的求解

实验报告课程名称:运筹学项目名称:线性规划问题的求解姓名:专业:班级: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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
一类约束满足问题的LINGO算法
a Class of Constraint Satisafaction Problems and LINGO Algorithms
李朝阳
Li Zhaoyang
(北京工商大学数理系, 北京100037)
(Department of Mathematics and Physics,Beijing Technology and Business University, Beijing100037)
摘要: LINGO主要用来求解大型数学规划问题,而利用它求解约束满足问题尚未见到文献报道。本文以著名的“斑
马”问题为例,将这类约束满足问题转化为0-1规划求可行解的问题,利用LINGO求解,取得了满意的结果。
关键词: 约束满足问题;LINGO;斑马问题;0-1规划;可行解
中图分类号:O221.1文献标识码:A文章编号:1671-4792-(2006)7-0047-02
Abstract: LINGO is mainly used for solving large scale linear programming, but to solve a constraint
satisafaction problem with LINGO has never been reported before. This paper take a well-known problem-zebra
problem as an example, converted the constraint satisafaction problem of this class to a finding feasible
solution of binary integer programming, and the result was satisfactory.
Keywords: Constraint Satisafaction Problem;LINGO;Zebra Problem;Binary Integer Programming;Feasible
Solution
1约束满足问题
求解约束满足问题就是寻找该问题的可行解。约束满足
问题在不同的领域均有着广泛的应用,如资源配置、地图着
色等。“斑马”问题[1]是一个著名的约束满足问题: 在五
个颜色各异的房子中,居住着不同国籍的人,他们饲养的宠
物、喜欢的饮料以及拥有的汽车各不相同,且有如下信息:
①英国人住在红房子里; ②西班牙人养狗; ③居住在绿房子
里的人喝可乐; ④乌克兰人喝酒; ⑤绿房子是白色房子的右
邻; ⑥拥有老爷车的人养蜗牛; ⑦拥有福特汽车的人住在黄
房子里; ⑧住在中间房子里的人喝牛奶; ⑨挪威人住在最左
边的房子里; ⑩拥有雪佛莱汽车的人与养狐狸的人是邻居;
⑾拥有福特汽车的人与养马的人是邻居; ⑿拥有奔驰汽车的
人爱喝橙汁; ⒀日本人开大众汽车; ⒁挪威人的邻居住在蓝
房子里。问题是: 斑马属于谁?谁爱喝矿泉水?
2“斑马”问题的LINGO模型
根据问题所给的条件,将五种颜色、国籍、饮料、车及
宠物分别标号(如表一所示)。
房间的标号为1-5,且规定从左至右的顺序为1、2、3、
4、5。
定义0-1变量如下: x(i,j)表示房子j的颜色是否为i
(若是则其值为1,否则其值为0,下同),y(i,j)表示住在房
子j的人的国籍是否为i,z(i,j)表示住在房子j的人喝的饮
料是否为i,v(i,j)表示住在房子j的人拥有的车是否为i,
w(i,j)表示住在房子j的人养的宠物是否为i。显然这些变
量须满足如下两组基本约束:
这里A(i,j)分别取x(i,j)、y(i,j)、z(i,j)、v(i,j)和
w(i,j)。下面用等式和不等式表示问题所给的各个约束:
约束(1)英国人住在红房子里可表示为:
;
同理,约束(3)、(4)可分别表示为:
14
和
和