lingo重点部分快速上手
一、设置结果范围的命令:
-
@bin(x):表示x为0/1
-
@gin(x):表示x为证书
-
@free(x):表示x为任意实数
-
@bnd(l,x,u):表示x为【l,u】之间的实数
-
默认变量为非负实数
例题1:
max = 4*x1+3*x2; 2*x1+x2<=10; x1+x2<=8; x2<=7; x1>=0; x2>=0; @gin(x1); @gin(x2);
例題2: 定义集合: sets: S/1..6/: a,b,d ;S是一个1-6的集合,定义给a T/1,2,3/: e,x ;T是一个1,2,3的集合 U(S,T):c ;定义了一个6*3的矩阵,也就是双虾标 endsets 定义数据段: data: 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; x=5 2; y=1 7; e=20 20; enddata 定义模型: min=@sum(T(j):@sum(S(i): c(i,j)*@sqrt((x(j)-a(i))^2+(y(j)-b(i)^2)))); @for(S(i): @sum(T(j):c(i,j))=d(i)); @for(T(j): @sum(S(i):c(i,j))<=e(j));
Lingo读取数据:(重点)
1.读取txt数据:
!使用file函数 sets: id/1..100/; weight/1..400/; value/1..600/; dataing(id,weight,value)/@file('G:\无用的\运筹学\运筹学应用课程设计2021-第2版\data\knapsack100.txt')/:data1; endsets
2.读取excel数据(有问题这里)
!使用ole函数 sets: fiveStar; fourStar; threeStar; range/1..17/:rn; Allowed(fiveStar,fourStar,threeStar):x,y; endsets data: rate=0.01; fiveStar,fourStar,threeStar=@ole('E:\学习笔记\Lingo\上海4A景区.XLS','_5A','_4A','_3A'); enddata
如果简单调用,excel传入的数据会循环调用,这部分暂时没有头绪