1 / 20
文档名称:

lingo求解多目标规划.docx

格式:docx   大小:76KB   页数:20页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

lingo求解多目标规划.docx

上传人:suijiazhuang2 2022/8/21 文件大小:76 KB

下载得到文件列表

lingo求解多目标规划.docx

相关文档

文档介绍

文档介绍:实验二:目标规划
一、 实验目的
目标规划是由线性规划发展演变而来的,线性规划考虑的是只有一个目标函数的问题, 而实际问题中往往需要考虑多个目标函数,这些目标不仅有主次关系,而且有的还相互矛 盾。这些问题用线性规划求解就比较困难,因而提成柔性约束(soft constraint)。
g表示的是柔性约束的资源向量dplus,dminus是偏差变量。在目标规划中,用偏差变量
(deviational variables)来表示实际值与目标值之间的差异,dplus为超出目标的差值,称
为正偏差变量,dminus为未达到目标的差值,称为负偏差变量。
h_cons(h_con_num,variable):A;
!刚性约束的价值向量。
s_cons(s_con_num,variable):c;
!柔性约束的价值向量。
obj(level,s_con_num):wplus,wminus;
!柔性约束在不同优先级下的权重。
endsets
data:
!数据输入部分(从“data:”开始,到“ enddata”结束):作用在于对集合的属性(数组)
输入必要的常数数据。
p=;
!常数列表中的数据之间可以用“,”或者“空格”或者“回车”分开。如果想在运行时才对 参数赋值,可以在数据段使用输入语句,但这仅用于对单个变量赋值,而不能用于属性变量(数 值)。输入语句格式为“变量名=;”。
goal= 0;
b=12;
g=1500 0 16 15;
a=2 2;
c=200 300 2 -1 4 0 0 5;
! LINGO中的数据是按列赋值的,而不是按行赋值的。
wplus=0 0 0 0
0 1 0 0
0 0 3 1;
wminus=1 0 0 0
0 1 0 0
0 0 3 0;
enddata
min=***@sum (level:p*z);
!目标函数(“min二”后面所接的表达式)是用求和函数"***@sum(集合下标:关于集合属性的表 达式)”的方式定义的。这个函数的功能是对语句中冒号“:”后面的表达式,按照“:”前面 的集合指定的下标(元素)进行求和。这里“ ***@sum ”相当于求和符号“ £”。
***@for (level(i):
z(i)=***@sum (s_con_num(j):wplus(i,j)*dplus(j))
+***@sum (s_con_num(j):wminus(i,j)*dminus(j)));
!约束是用循环函数" ***@for(集合(下标):关于集合的属性的约束关系)”的方式定义的。意 思是对冒号“:”前面的集合的每个元素(下标),冒号“:”后面的约束关系式都要成立。
***@for (h_con_num(i):
***@sum (variable(j):a(i,j)*x(j))<=b(i));
***@for (s_con_num(i):
***@sum(variable(j):c(i,j)*x(j))
+dminus(i)-dplus(i)=g(i);
);
***@for (level(i)|i#lt#***@size(level):
***@bnd (0,z(i),goal(i));
!限制0〈=z (i)〈=goal (i )
);
!这个限制条件与集合之间有一个“|”分开,称为过滤条件。限制条件“i#lt#***@size (level)” 是一个逻辑表达式,意思是i〈***@size (level)o #lt#是逻辑运算符号,意思是“小于”;***@size
(level)表示集合level元素的个数。
End
3、下面开始用LINGO中的图标或者Solve命令编译模型,当程序运行时,会出现一个 对话框,如图。在作第一级目标计算时,p (1), p (2), p (3)分别输入1,0,0, goal
(1)和goal (2)输入两个较大的值(例如100000),表明这两项约束不起作用。运行状 态窗口如图,相应信息含义见实验一表。
图LINGO的实时参数窗口
图:LINGO运行状态窗口
计算结果如下:
Global optimal solution found.
Objective value:
Total solver iterations: 1
Value
Reduced Cost
Variable
P( 1)
P( 3)
Z( 1)
Z( 2)
Z( 3)
GOAL( 1)
GOAL( 2) 1000000.
GOAL( 3)
X( 1)
X( 2)
B( 1)
G( 1)
G(