LINGO解线性规划问题

发布时间:2024-08-30

用lingo解线性规划的例子

电视台节目编排问题

某电视台现有六个频道,需要编排从晚间18:00至24:00每半个小时的节目类型,共有新闻、综艺、影视剧、服务、教育以及其他等六类电视节目类型可供选择。每种类型的节目在各个频道的各个时段播放的收视率预测值rpsj已知。在以下约束下,求电视台如何编排各个频道各个时段的节目,使得总体收视率预测值最大。

节目唯一性约束:每个频道每半个小时只能播放一种类型的节目;

节目连续性约束:影视剧节目播放时间至少为一个小时;

同时段同类型节目数量约束:在晚间20:00-22:00间,综艺类和影视剧类节目不超过3个频道同时播放;任何时段内,新闻类节目不超过2个频道播放;

频道专业化约束:频道1不播放综艺类节目,频道2不播放新闻类节目且播放综艺类节目的时段不少于6个,频道3播放影视剧节目的时段不少于10个,频道5播放综艺和服务类节目的时段不少于6个,频道6播放服务和教育类节目不少于8个;

固定节目播放约束:频道4的18:30-19:30必须播放新闻类节目。

使用LINGO软件,编制程序如下:

model:

sets:

pindao/1..6/;

shiduan/1..12/;

jiemu/1..6/;

allowed(pindao,shiduan,jiemu):AA,X;

endsets

data:

!从excel表中引入常量AA;

AA=@OLE('D:\六频道数据.xls');

!将编排结果输出到EXCEL表中;

@OLE('D:\六频道数据.xls')=X;

enddata

!目标函数最大;

max=@sum(pindao (i):

@sum(shiduan (j):

@sum(jiemu(k):

AA(i,j,k)*X(i,j,k))));

!同频道同时段只能播一类型的节目约束;

@for(pindao(i):

@for(shiduan (j):

@sum(jiemu (k):

X(i,j,k))=1));

!影视需要连续两个时段播放;

@for(pindao(i):

@for(shiduan (j)|j#le#11#and#j#ge#2:

用lingo解线性规划的例子

x(i,j,3)+x(i,j+1,3)>=2*(x(i,j,3)-x(i,j-1,3))));

!同时段同类型节目数量约束;

!时段5678影视剧播放不超过3个;

@for(shiduan (j)|j#le#8#and#j#ge#5:

@sum(pindao (i):

X(i,j,3))<=3);

!时段5678综艺不超过3个;

@for(shiduan (j)|j#le#8#and#j#ge#5:

@sum(pindao (i):

X(i,j,2))<=3);

!任何时段新闻节目不超过2个频道播放;

@for(shiduan (j):

@sum(pindao (i):

X(i,j,1))<=2);

!频道专业化约束;

!频道1不播放综艺节目;

@for(shiduan (j):

x(1,j,2)=0);

!频道2不播放新闻节目节目;

@for(shiduan (j):

x(2,j,1)=0);

!频道2的综艺节目不少于6个;

@sum(shiduan (j):

X(2,j,2))>=6;

!频道3的影视剧不少于10个;

@sum(shiduan (j):

X(3,j,3))>=10;

!频道5的综艺和服务节目不少于6个;

@sum(shiduan (j):

X(5,j,2)+X(5,j,4))>=6;

!频道6的服务和教育节目数量不少于8个;

@sum(shiduan (j):

X(6,j,4)+X(6,j,5))>=8;

!固定节目约束;

!频道4的时段2、3播放新闻节目;

X(4,2,1)=1;

X(4,3,1)=1;

!0-1约束;

@for (allowed(i,j,k): @bin(X(i,j,k)));

end

用lingo解线性规划的例子

推销员旅行问题

有一个推销员,从城市1出发,要遍访城市2,3,…,n各一次,最后返回城市1。已知从城市i到j的旅费为cij,问他应按怎样的次序访问这些城市,使得总旅费最少?

假设现有5个城市,ABCDE,各个城市间的旅费如下表所示,求推销员应该按照怎样的次序

使用LINGO软件,编制程序如下:

model:

sets:

city / 1.. 5/:u;

link(city, city): cc, x;

endsets

n = @size(city);

data:

cc = @OLE('D:\旅行者');

@OLE('D:\旅行者')=x;

enddata

!目标函数;

min = @sum(link: cc * x);

@FOR( city(K):

!进入城市K;

@sum( city(I)| I #ne# K: x( I, K)) = 1;

!离开城市K;

@sum( city(J)| J #ne# K: x( K, J)) = 1;

);

!保证不出现子圈;

@for(city(I)|I #gt# 1:

@for( city(J)| J#gt#1 #and# I #ne# J:

u(I)-u(J)+n*x(I,J)<=n-1);

);

!限制u的范围以加速模型的求解,保证所加限制并不排除掉TSP问题的最优解;

@for(city(I) | I #gt# 1: u(I)<=n-2 );

!定义X为0\1变量;

@for( link: @bin(x));

end

LINGO解线性规划问题.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219