非线性规划转化为线性规划问题(司守奎老师数模例题)-------数模学习笔记一

本文详细介绍了如何将非线性规划问题通过引入新的ui和vi变量转化为线性方程,并以司守奎数模书中的一道例题为例,展示了求解步骤,包括目标函数的转换和使用Matlab进行线性规划求解的过程。关键步骤涉及绝对值的处理和线性约束的建立。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本文主要记录司守奎数模书中第一章所给例题

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、非线性问题

1.问题描述与分析

1>、根据线性规划定义,目标函数和约束条件都要为线性方程的才算为LP问题。而上述所给目标函数中各个变量为绝对值,故为非线性。

2>、线性方程:因变量与自变量之间的关系为线性的关系,就是直角坐标系中一条直线;一个自变量对应一个因变量。而这里目标函数中有绝对值,所以很明显此方程肯定不是一个自变量对应一个因变量。

2.问题解决思路

1>、将非线性方程利用数学方法更改为线性方程,那么非线性规划问题就变为线性规划问题了。
2>、这里是由于绝对值导致方程非线性,故想方设法去掉绝对值。

二、具体求解步骤

1.引入ui与vi变量

构造xi与(ui,vi)的关系:xi = (ui,vi)

ui=(|xi|+xi)/2
vi=(|xi|-xi)/2
ui-vi=xi
ui+vi=|xi| 
i = 1234

2.引入变量后新方程

由于ui+vi=|xi| ,如:|x1| = u1+v1 2 |x2| = 2(u2+v2)
本来一个变量变为两个翻倍,故问题共有8个变量

目标函数minZ  =(u1+v1)+2(u2+v2)+3(u3+v3)+4(u4+v4)
             =u1+2u2+3u3+4u4+v1+2v2+3v3+4v4    (整齐好看点)
s.t.约束条件  A1(Ui-Vi) = 0
             A2(Ui-Vi) = 1
             A3(Ui-Vi) = -0.5

3.matlab程序

%% 非线性转为线性问题
clc;clear;
c  = [1,2,3,4,1,2,3,4]';
A1 = [1,-1,-1,1;1,-1,1,-3;1,-1,-2,3];
Aeq = [A1,-A1];
Beq = [0;1;-0.5];
Ib = zeros(8,1);
%三个等方式约束,不等式直接空矩阵
[x,f] = linprog(c,[],[],Aeq,Beq,Ib);
f
x  = x(1:4)-x(5:8);
x

结果:


Optimal solution found.


f =

    1.2500


x =

    0.2500
         0
         0
   -0.2500

总结

难点应该是:由于变量增加一倍,故梳理起来肯定会更复杂,但是我们可以展开,就是把具体化表达,从u1—>u4,都在方程中列写出来,这样更加清晰。也要注意目标函数中变量的顺序,因为系数不同,不要搞错系数了,还有就是,有一个矩阵的拼接。
A1 = [1,-1,-1,1;
1,-1,1,-3;
1,-1,-2,3];
Aeq = [A1,-A1]; % -A1整个矩阵加在A1矩阵右侧
结果:

Aeq =

     1    -1    -1     1    -1     1     1    -1
     1    -1     1    -3    -1     1    -1     3
     1    -1    -2     3    -1     1     2    -3
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值