数学建模 | 第一章 线性规划例题

第一章 线性规划例题篇

例1.1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。生产甲机床需用A、B机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用A、B、C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和C机器7小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?

:决策变量应设该厂生产x1台甲机床和x2台乙机床时总利润最大,则x1和x2应满足:

数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题

数学建模 | 第一章 线性规划例题

化为Matlab标准型,即:

数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题

数学建模 | 第一章 线性规划例题

👀答案:求得的最优解为x1=3.25,x2=3.5,对应的最优值z=23.5。

求解的Matlab程序为:

c = [-4,-3];
a = [2,1;1,1;0,2];
b = [10,8,7];
[x,y] = linprog(c,a,b,[],[],zeros(2,1))
x,y=-y

求解的Lingo程序为:

model:

sets:
col/1..2/:c,x;
row/1..3/:b;
lingks(row,col):a;
endsets

data:
c = 4 3;
a = 2 1 1 1 0 2;
b = 10 8 7;
enddata

max=@ sum(col:c*x);
@ for(row(i):@ sum(col(j):a(i,j)*x(j))<b(i));

end 

例1.2 求解下列线性规划问题
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

:化为Matlab标准型,即:

数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

👀答案:求得的最优解为x1=6.4286,x2=0.5714,x3=0,对应的最优值z=14.5714

求解的Matlab程序为:

c=[-2;-3;5]; 
a=[-2,5,-1;1,3,1]; 
b=[-10;12]; 
aeq=[1,1,1]; 
beq=7; 
[x,y]=linprog(c,a,b,aeq,beq,zeros(3,1)) 
x,y=-y  % 最终解加负号,转换为最大值

求解的Lingo程序为:

model:

	sets:
	row/1..2/:b;
	col/1..3/:c,x;
	lingks(row,col):a;
	endsets

	data:
	c = 2 3 -5;
	a = -2 5 -1 1 3 1;
	b = -10 12;
	enddata

	max=@ sum(col:c*x);
	@ for(row(i):@ sum(col(j):a(i,j)*x(j))<b(i));
	@ sum(col:x)=7;

end 

例1.3 求解下列线性规划问题
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

:因为问题本身求解的是min值,所以无需再次化为Matlab标准型

👀答案:求得的最优解为x1=0.8066,x2=1.7900,x3=0.0166,对应的最优值z=7.0000

求解的Matlab程序为:

c=[2;3;1]; 
a=[1,4,2;3,2,0]; 
b=[8;6];  
[x,y]=linprog(c,-a,-b,[],[],zeros(3,1)) %这里没有等式约束,所以为两个【】【】

求解的Lingo程序为:

model:

	sets:
	row/1..2/:b;
	col/1..3/:c,x;
	lingks(row,col):a;
	endsets
	
	data:
	c = 2 3 1;
	a = 1 4 2 3 2 0;
	b = 8 6;
	enddata
	
	min=@ sum(col:c*x);
	@ for(row(i):@sum(col(j):a(i,j)*x(j))>b(i));

end 

例1.4 求解下列数学规划问题
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

:做变量变换数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题,并把新变量重新排序成一维向量数学建模 | 第一章 线性规划例题,则可把模型变换为线性规划模型:
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题
其中数学建模 | 第一章 线性规划例题

👀答案:求得的最优解为x1=-2,x2=x3=x4=0,对应的最优值z=-2

求解的Matlab程序为:

clc,clear
c=1:4;c=[c,c]'; %构造价值列向量
a=[1 -1 -1 1;1 -1 1 -3;1 -1 -2 3];
a=[a,-a]; %构造变换后新的系数矩阵
b=[-2 -1 -1/2]';
[y,z]=linprog(c,a,b,[],[],zeros(8,1)) %这里没有等式约束,对应的矩阵为空矩阵
x=y(1:4)-y(5:end) %变换到原问题的解,x=u-v

求解的Lingo程序为:

model:

	sets:
	row/1..2/:b;
	col/1..3/:c,x;
	lingks(row,col):a;
	endsets
	
	data:
	c = 2 3 1;
	a = 1 4 2 3 2 0;
	b = 8 6;
	enddata
	
	min=@ sum(col:c*x);
	@ for(row(i):@sum(col(j):a(i,j)*x(j))>b(i));

end 

例1.5 求解下列线性规划问题
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

:显然这是一个简单的二元一次方程联立求解,之所以此处有本例题,旨在说明该线性规划问题有最优实数解,但是对应的整数规划无可行解。

👀答案:求得的最优解为x1=0,x2=1.25,对应的最优值z=1.25

例1.6 求解下列线性规划问题
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

:同例1.5,本例题旨在说明该线性规划问题有最优实数解,若限制为整数,有可行解但最优解值变差。

👀答案:求得的最优解为x1=0,x2=1.5,对应的最优值z=1.5;若限制为整数,得x1=1,x2=1,对应的最优值z=2

例1.7 (随机取样法)数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题轴在第一象限围成一个曲边三角形。设计一个随机实验,求该图形面积的近似值。

:设计的随机试验的思想如下:在矩形区域数学建模 | 第一章 线性规划例题上产生服从均匀分布的107个随机点,统计随机点落在曲边三角形的频数,则曲边三角形的面积近似为上述矩阵的面积乘以频率。

👀答案:该图形面积的近似值在49.5附近,由于是随机模拟,每次的结果都是不一样的。

求解的Matlab程序为:

clc,clear
x=unifrnd(0,12,[1,10000000]);
y=unifrnd(0,9,[1,10000000]);
pinshu=sum(y<x.^2&x<=3)+sum(y<12-x&x>=3);
area_appr=12*9*pinshu/10^7

例1.8 (指派问题)求解下列指派问题,已知指派矩阵为
数学建模 | 第一章 线性规划例题

:这里需要把二维决策变量数学建模 | 第一章 线性规划例题变成一维决策变量数学建模 | 第一章 线性规划例题

👀答案:求得的最优指派方案为数学建模 | 第一章 线性规划例题,最优值为21。

求解的Matlab程序为:

clc,clear
c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5;8 4 2 3 5;9 10 6 9 10];
c=c(:);a=zeros(10,25);intcon=1:25;
for i=1:5
	a(i,(i-1)*5+1:5*i)=1;
	a(5+i,i:5:25)=1;
end
b=ones(10,1);lb=zeros(25,1);ub=ones(25,1);
x=intlinprog(c,intcon,[],[],a,b,lb,ub);
x=reshape(x,[5,5])

运行结果

model:

	sets:
	var/1..5/;
	link(var,var):c,x;
	endsets
	
	data:
	c=3 8 2 10 3
		8 7 2 9 7
		6 4 2 7 5
		8 4 2 3 5
		9 10 6 9 10;
	enddata

	min=@ sum(link:c*x);
	@ for(var(i):@ sum(var(j):x(i,j))=1);
	@ for(var(j):@ sum(var(i):x(i,j))=1);
	@ for(link:@ bin(x));
	
end 

例1.9 (混合整数规划问题)求解如下的混合整数规划问题
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题,
数学建模 | 第一章 线性规划例题

👀答案:求得的最优解为数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题,最优值为数学建模 | 第一章 线性规划例题

求解的Matlab程序为:

clc,clear
c=[-3;-2;-1];intcon=3; % 整数变量的地址
a=ones(1,3);b=7;
aeq=[4 2 1];beq=12;
lb=zeros(3,1);ub=[inf;inf;1]; % x(3)为0-1变量
x=intlinprog(c,intcon,a,b,aeq,beq,lb,ub)

运行结果

例1.10 (蒙特卡洛法)已知非线性整数规划为
数学建模 | 第一章 线性规划例题 数学建模 | 第一章 线性规划例题
数学建模 | 第一章 线性规划例题

:如果用显枚举法试探,则共需计算数学建模 | 第一章 线性规划例题个点,其计算量非常之大。然而应用蒙特卡洛去随机计算106个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?下面就随机取样采集106个点计算,应用概率理论来估计一下可信度。
不失一般性,假定一个整数规划的最优点不是孤立的奇点。
假设目标函数落在高值区的概率分别为0. 01、0. 00001,则当计算106个点后,至少有一个点能落在高值区的概率分别为1-0. 991000000≈0. 99···99(100多位),1-0.999991000000≈0.999954602。

👀答案:使用Lingo求得的全局最优解为数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题数学建模 | 第一章 线性规划例题,最优值为数学建模 | 第一章 线性规划例题;使用Matlab求得的因为是随机模拟,所以每次的运行结果都是不一样的。

(1)首先编写M文件mente.m定义目标函数f和约束向量函数g,程序如下:

function[f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)^2-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];

(2)求解的Matlab程序为:

rand('state',sum(clock)); % 初始化随机数发生器
p0=0;
tic % 计时开始
for i=1:10^6
	x=randi([0,99],1,5); % 产生一行五列的区间[0,99]上的随机整数
	[f,g]=mengte(x);
	if all(g<=0)
		if p0<f
			x0=x;p0=f; % 记录下当前较好的解
		end
	end
end
x0,p0
toc % 计时结束	

(3)求解的Lingo程序为:

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));
	@ for(col:@ bnd(0,x,99));

end

版权声明:本文为博主作者:九又四分之三(9¾)站台原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/m0_62876521/article/details/131822678

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年4月16日
下一篇 2024年4月16日

相关推荐