【数学建模】8 非线性规划及例题讲解

1 定义

目标函数和约束条件中至少有一个非线性规划函数的数学规划问题称为非线性规划问题(UP问题)
在这里插入图片描述

2 MATLAB软件求解

函数 fmincon
在这里插入图片描述

(1)建立M文件fun.m

function f = fun(x)
f =F(x);

(2)若约束条件中有非线性约束

G(x)<=0或Ceq(x)=0,则建立M文件nonlcon.m定义函数G(x)与Ceq(x)
function [G,Ceq] = nonlcon(x)
G = ...;
Ceq =...;

(3)建立主程序
在这里插入图片描述

3 例题

min f(x) = -2×1-x2

g1(x) = 25 -x12-x22

g2(x) = 7-x12+x22

0<=x1<=5,0<=x2<=10

(1)先建立M-文件fun.m定义
目标函数:

function f = fun(x);
f = -2*x(1)-x(2);

(2)再建立M文件mycon2.m定义非线性约束

function [g,ceq] = mycon2(x)
g = [x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7]

(3)主程序fxx.m

x0 =[3;2.5];
VLB =[0,0];下限
VUB =[5,10];上限
[x,fval,] = fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2']没有线性约束,参数设置为[]

4 应用实例

某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出。规划设立两个料场位于A,B,日储量各为20吨。假设从料场到工地之间均有直线道路相连
试确定料场的位置,并制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。
在这里插入图片描述

(1)符号说明
(ai,bi)第i个工地的位置坐标
(xj,yj)第j个料场的位置坐标
di第i个工地的水泥日用量
ej第j个料场的水泥日存储量
xij第j个料场向第i个工地的水泥日运量
(2)模型建立
目标函数
在这里插入图片描述

约束条件
在这里插入图片描述

(3)MATLAB求解

clear
a=[1.25 8.75 0.5 5.75 3 7.25];
b=[1.25 0.75 4.75 5 6.5 7.75];
d=[3 5 4 7 6 11];
x=[5 2];
y=[1 7];
e=[20 20];
for  i=1:6
   for j=1:2
      aa(i,j)=sqrt((x(j)-a(i))^2+(y(j)-b(i))^2);
   end
end
CC=[aa(:,1); aa(:,2)]';
A=[1 1 1 1 1 1 0 0 0 0 0 0
   0 0 0 0 0 0 1 1 1 1 1 1];
B=[20;20];
Aeq=[1 0 0 0 0 0 1 0 0 0 0 0
    0 1 0 0 0 0 0 1 0 0 0 0 
    0 0 1 0 0 0 0 0 1 0 0 0 
    0 0 0 1 0 0 0 0 0 1 0 0 
    0 0 0 0 1 0 0 0 0 0 1 0 
    0 0 0 0 0 1 0 0 0 0 0 1 ];
beq=[d(1);d(2);d(3);d(4);d(5);d(6)];
VLB=[0 0 0 0 0 0 0 0 0 0 0 0];VUB=[];
x0=[1 2 3 0 1 0 0 1 0 1 0 1];
[xx,fval]=linprog(CC,A,B,Aeq,beq,VLB,VUB,x0)

计算结果为:
x =[ 3.0000 5.0000 0.0000 7.0000 0.0000 1.0000 0.0000 0.0000 4.0000 0.0000 6.0000 10.0000]’
结果分别对应x11 x12 x13 x14 x15 x16 x21 x22 x23 x24 x25 x26
fval = 136.2275

5 课后作业

某计算机公司生产A,B,C3种型号的笔记本电脑。这3 种笔记本电脑在复杂的装配线上生产,生产一台A,B,C 型号的笔记本电脑分别需要5小时、8小时、12小时。公司装配线正常的生产时间是每月27000小时,公司营业部门估计A,B,C 3种笔记本电脑每台的利润分别是1000元、1440元、2520元,而公司预测这个月生产的笔记本电脑能够全部售出。投入生产的某种型号的电脑必须至少生产1000台且不多于2000台。试建立数学模型,为该公司制定一个使得生产利润达到最大的方案。
解:

建立模型:
设生产A、B、C型号的电脑数量为x1 x2 x3
目标函数
Max Z = 1000×1+1440×2+2520×3
约束条件
5×1 +8×2+12×3 = 27000
x1=0 or 1000<=x1<=2000
x2=0 or 10000<=x2<=2000
x3 =0 or10000<=x3<=2000

© 版权声明
THE END
喜欢就支持一下吧
点赞584 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容