冒頭に書かれている:
- LINGOのデフォルトでは、すべての変数が負ではありません。
- LINGOには、厳密な
<
合計>
、<
代表<=
、または>
代表はありません>=
。 - LINGOは、変数の大文字と小文字を区別しません。
- LINGOのコメントは
!
始まりと;
終わりです。
線形計画
スカラー線形プログラミング
次の問題を解決します。
コード:
model:
min=2*x1+3*x2;
x1+x2>350;
x1>100;
2*x1+x2<600;
end
マトリックス線形プログラミング
コード:
model:
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
!目标函数;
min=@sum(links: cost*volume);
@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));
@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));
data:
capacity=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 9 5
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
end
非線形プログラミング
特別な制限はありません
model:
min=(x1)^2+(x2)^2+8;! 目标函数;
x1^2-x2>=0;
-x1-x2^2+2=0;
x1>=0;
x2>=0;! 约束条件;
end
整数プログラミング
model:
sets:
row/1..4/:b;
col/1..5/:c1,c2,x;
link(row,col):a;
endsets
data:
c1=1,1,3,4,2;
c2=-8,-2,-3,-1,-2;
a=1 1 1 1 1
1 2 2 1 6
2 1 6 0 0
0 0 1 1 5;
b=400,800,200,200;
enddata
max=@sum(col:c1*x^2+c2*x);
@for(row(i):@sum(col(j):a(i,j)*x(j))<b(i));
@for(col:@gin(x)); !表示x为整数
@for(col:@bnd(0,x,99));
end
01計画
通常、これは特別な種類の線形プログラミングですが、変数値は0または1のみです。
model:
max=3*x1-2*x2+5*x3;
x1+2*x2-x3<2;
x1+4*x2+x3<4;
x1+x2<3;
4x2+x3<6
@bin(x1);@bin(x2);@bin(x3);
end
Psは、過去にコピーしたときに文法エラーを常に報告する理由を知りません。また、QAQを使用してもこの問題は発生しません。