如果要在程序中使用数组,就必须在该部分进行定义,否则可不需要该部分。(2)目标与约束:这部分定义了目标函数、约束条件等。一般要用到LINGO的内部函数,可在后面的具体应用中体会其功能与用法。求解优化问题时,该部分是必须的。(3)数据部分(DATA):这部分以“DATA:”开始,以“END DA TA”结束。其作用在于对集合的属性(数组)输入必要的数值。格式为:attribut=value_list。该部分主要是方便数据的输入。
(4)初始化部分(INIT):这部分以“INIT:”开始,以“END INIT”结束。作用在于对集合的属性(数组)定义初值。格式为:attribute=value_list。由于非线性规划求解时,通常得到的是局部最优解,而局部最优解受输入的初值影响。通常可改变初值来得到不同的解,从而发现更好的解。
编写LINGO程序要注意的几点:
1所有的语句除SETS、ENDSETS、DA TA、ENDDATA、INIT、ENDINIT和MODEL,END 之外必须以一个分号“;”结尾。
2L INGO求解非线性规划时已约定各变量非负。
LINGO内部函数使用详解。
LINGO建立优化模型时可以引用大量的内部函数,这些函数以“@”符号打头。
(1)常用数学函数
@ABS(X) 返回变量X的绝对数值。
@COS( X)
返回X的余弦值,X的单位为弧度
@EXP( X)
不得用于商业用途
返回x e 的值,其中e 为自然对数的底,即 718282
@FLOOR( X)
向0靠近返回X 的整数部分。如@FLOOR(37),则返回3;@FLOOR(-37),则返回-3。 @LGM( X)
返回Γ函数的自然对数值。
@LOG( X)
返回变量X 的自然对数值。
@SIGN( X)
返回变量X 的符号值,当X<0时为-1;当X>0时为1。
@SIN( X)
返回X 的正弦值,X 的单位为弧度
@SMAX( X1, X2,, XN)
返回一列值X1, X2,, XN 的最大值。
@SMIN( X1, X2,, XN)
返回一列值X1, X2,, XN 的最小值。
@TAN( X)
返回X 的正切值,X 的单位为弧度
根据你提供的资料,lingo程序如下:
min
=Z1+Z2+Z3;
Z1=5X11+7X21+5X31+4X41+6X51+5X61+5X71+3X81+P1;
Z2=5X12+7X22+5X32+4X42+6X52+5X62+5X72+3X82+P2;
Z3=5X13+7X23+5X33+4X43+6X53+5X63+5X73+3X83+P3;
Z1<=60;Z2<=60;
Z3<=60;
N1=25X11+36X21+32X31+15X41+31X51+28X61+22X71+12X81;
N2=25X12+36X22+32X32+15X42+31X52+28X62+22X72+12X82+25X1109+36X2109+32X3109+15X4109+31X5109+28X6109+22X7109+12X8109;
N3=25X13+36X23+32X33+15X43+31X53+28X63+22X73+12X83+25X1209+36X2209+32X3209+15X4209+31X5209+28X6209+22X7209+12X8209+25X11081+
36X21081+32X31081+15X41081+31X51081+28X61081+22X71081+12X81081;
N4=N309;
N5=N3081;
W1=434754+N1;
W2=317983+N2;
W3=240045+N3;
W4=207178+N4+Q;
W5=174312+N5+Q;
W1>=150;W2>=160;W3>=170;
W4>=180;W5>=190;
L1+L2+L3
>=
20;
P1=066Q^051L1;
P2=066Q^051L2;
P3=066Q^051L3;
@gin(P1);@gin(P2);@gin(P3);
但个人觉得似乎不太对,有可能的话用原题重新提问
简单的线性规划,代码如下:
model:
min=X1+X2+X3+X4+X5+X6;
X1+X6>=60;
X1+X2>=70;
X2+X3>=60;
X3+X4>=50;
X4+X5>=20;
X5+X6>=30;
end
运行结果:
Global optimal solution found
Objective value: 1500000
Infeasibilities: 0000000
Total solver iterations: 4
Model Class: LP
Total variables: 6
Nonlinear variables: 0
Integer variables: 0
Total constraints: 7
Nonlinear constraints: 0
Total nonzeros: 18
Nonlinear nonzeros: 0
Variable Value Reduced Cost
X1 6000000 0000000
X2 1000000 0000000
X3 5000000 0000000
X4 0000000 0000000
X5 3000000 0000000
X6 0000000 0000000
Row Slack or Surplus Dual Price
1 1500000 -1000000
2 0000000 0000000
3 0000000 -1000000
4 0000000 0000000
5 0000000 -1000000
6 1000000 0000000
7 0000000 -1000000
最优值150,VALUE那一列就是对应的变量的取值。
主要用来解决将实际问题模型化后,在几条限制条件下,编程解决一些优化、规划问题,诸如最短路线问题、最少费用问题、分配问题(指派问题)、最小生成树问题、二次分配问题,,得出局部或全局最优解,经常构造0—1变量,解决实际中的整数规划问题,,还可以做灵敏度分析等等 件目前以仅有版本10了吧。
说不难,有的地方像是线性规划那一块直接把式子列上就行,说难吧,像是动态规划会比线性规划难一点,不过我们老师说做建模最好用MATLAB软件,这个软件很强大,能解决各种问题,而LINGO只能解决一小部分问题~
以上就是关于你好,有个关于用lingo软件做选课的优化问题想问您全部的内容,包括:你好,有个关于用lingo软件做选课的优化问题想问您、如何使用lingo软件编程解决线性规划问题问题如补充所示。、用lingo软件进行线性规划的计算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!