LINGO软件入门

LINGO软件入门

一、二次线性规划问题

这里写图片描述

LINGO的 代码:

max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
x1+x2<100;
x1<=2*x2;
@gin(x1);@gin(x);
  1. LINGO总是根据“MAX=”或“MIN=”寻找目标函数,语句顺序不重要。
  2. 限定变量取整数值的语句为“@GIN(X1)”和“@GIN(X2)”,不可以写成“@GIN(2)”,否则LINGO将把这个模型看成没有整数变量。
  3. LINGO中函数一律需要以“@”开头,其中整型变量函数(@BIN、@GIN)和上下界限定函数(@FREE、@SUB、@SLB)与LINDO中的命令类似。而且0/1变量函数是@BIN函数。

二、集合的基本用法和LINGO模型的基本要素

例:SAILCO公司需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是40条,60条,75条,25条,这些需求必须按时满足。每个季度正常的生产能力是40条帆船,每条船的生产费用为400美元。如果加班生产,每条船的生产费用为450美元。每个季度末,每条船的库存费用为20美元。假定生产提前期为0,初始库存为10条船。如何安排生产可使总费用最小?

用DEM,RP,OP,INV分别表示需求量、正常生产的产量、加班生产的产量、库存量,则DEM,RP,OP,INV对每个季度都应该有一个对应的值,也就说他们都应该是一个由4个元素组成的数组,其中DEM是已知的,而RP,OP,INV是未知数。

MODEL:
    SETS:
        QUARTERS/1,2,3,4/:DEM,RP,OP,INV;
    ENDSETS

    MIN=@SUM(QUARTERS:400*RP+450*OP+20*INV);
    @FOR(QUARTERS(I):RP(I)<40);
    @FOR(QUARTERS(I)|I#GT#1:
    INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););
INV(1)=A+RP(1)+OP(1)-DEM(1);

DATA:
    DEM=40,0,75,25;
    A=?;

ENDDATA

END
  1. 这里S和ENDSETS用来定义集合。
  2. 这里DATA以上,ENDSETS以下用来定义约束条件和目标函数。
    其中@SUM(集合(下标):关于集合的属性的表达式),
    本例中目标函数也可以等价地写成
    @SUM(QUARTERS(i): 400*RP(i) +450*OP(i) +20*INV(i) )。

  3. I#GT#1 表示I>1时,GT=Greater Than。

  4. DATA来设置数据。
  5. 比如不知道初始库存的话,可以将初始库存设为A,在数据段使用“A=?”,这时运行的话将会提示输入A。

运行结果截图:
这里写图片描述


三、基本集合与派生集合

例:建筑工地的位置(用平面坐标a, b表示,距离单位:公里)及水泥日用量d(吨)下表给出。有两个临时料场位于P (5,1), Q (2, 7),日储量各有20吨。从A, B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。两个新的料场应建在何处,节省的吨公里数有多少
这里写图片描述

这里写图片描述

模型简称模型名
LP线性规划
ILP整数线性规划
BILP两层的线性整数规划
NLP非线性规划
INLP非线性整数规划
QP二次规划
IQP二次整数规划
PIP带参数整数规划
ZOP零一规划
MODEL:
TITLE Location Problem;
SETS:
    demand/1..6/:a,b,d;
    supply/1..2/:x,y,e;
    link(demand,supply):c;
ENDSETS

DATA:
a=1.2,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;
ENDDATA

INIT:
x,y=5,1,2,7;
!初始点赋值为x=(5,2),y=(1,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:@free(X);@free(Y););

END

这里写图片描述

这里解出来的是新料场的位置,如果想继续使用原料场,将初始化里面的数据放到 DATA中即可。

  • 21
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值