目录
1 近似线性法2 罚函数法3 MATLAB函数求解方法4 LINGO软件求解方法5 课后习题
1 近似线性法
近似线性法:在一个小范围内展开
2 罚函数法
基本思想是通过构造罚函数把约束问题转化为一系列无约束最优化问题,进而用无约束最优化方法去求解。这类方法为序列无约束最小化方法。简称为SUMT。分为内点法和外点法两种。 罚函数法:将约束条件放入目标函数 (1)SUMT外点法 原问题化为
其中T(X,M)称为罚函数,M称为罚因子,带M的项称为罚项。罚函数只对不满足约束条件的点实行惩罚。 (2)SUMT内点法(障碍函数法) 构造障碍函数
3 MATLAB函数求解方法
(1)二次规划模型 标准型:
用MATB软件求解,其输入格式如下:
1,x=quadprog(H,CA,b);
2,x=quadprog(H,CA,b,Aeqbeq);
3,x=quadprog(H,C,A,b,Aeq,beq,VLBVUB);
4,x=quadprog(H,CA,b,Aeq,beqVLBVUBXO);
5,x=quadprog(H,C,A,b,AeqbeqVLBVUB,XOoptions);
6,[xfva刂=quaprog(...);
7,[xfval,exitflag]=quaprog(...);
8,[xfval,exitflag,output]=quaprog(,..);
举例:
写成标准型
程序设计:
H = [1 1 ;1 1]
C = [-1;-2]
A = [2 3;1 4]
b = [6:5]
vlb = [0,0]
[x,fval] = quadprog(H,C,A,b,[],[],vlb)
(2)一般规划模型 标准型
MATLAB求解方法
首先建立M文件fun.m。用来定义目标函数F(X)若约束条件中有非线性约束:G(X)<=0或Ceq = 0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X)
function[G,Ceq](X〕
G=...
Ceq=...
建立主程序
x = fmincon('fun',X0,A, b)
x =fmincon('fun' , XO,A, b, Aeq, beq)
x =fmincon('fun',X0,A,b,Aeq, beq, VLB, VUB)
x=fmincon ( 'fun' , XO , A, b, Aeg, beg,VLB, VLJB, 'nonlcon' )
x=fmincon ('fun' ,XO,A,b,Aeq, beq, YLB, YUB, ' nonlcon' , options )
[z, fval]= fmincon(... )
[z, fval, exitflag] = fmincon(... )
[z, fval, exitflag, output] = fmincon(...)
举例:
写成标准形式:
程序设计
x0 = [1;1];
A=[2 3 ;1 4 ];
b = [6;5];
Aeq = [];
beq = [];
vlb = [0;0];
[x,fval] = fmincon(@fun,x0,A,b,Aeq,beq,vlb)
function f = fun(x)
f = -x(1)-2*x(2)+ (1/2)*x(1)^2+(1/2)*x(2)^2+ x(1)*x(2)
end
4 LINGO软件求解方法
min =-x1-2*x2 + x1^2/2 + x2^2/2 + x1*x2
2*x1 + 3*x2 <6
x1 + 4*x2 <5
5 课后习题
编程求解下列非线性数学规划模型
x0 = rand(3,1);
VLB = zeros(3,1);
[x,fval] = fmincon(@fun1,x0,[],[],[],[],VLB,[],@fun2)
function f=fun1(x)
f=2*x(1)+3*x(1)^2+3*x(2)+x(2)^2+x(3);
end
function [C,Ceq]=fun2(x)
C(1)=x(1)+2*x(1)^2+x(2)+2*x(2)^2+x(3)-10; % 非线性约束,若不止1个,则用C(1),C(2),...
C(2)=x(1)+x(1)^2+x(2)+x(2)^2-x(3)-50;
C(3)=2*x(1)+x(1)^2+2*x(2)+x(3)-40;
C(4)= -x(1)-2*x(2)+1;
Ceq= x(1)^2+x(3)-2; % 等式约束, 若没有等式约束,可令Ceq=[];
end
输出结果是 x = 0.0006 0.4997 2.0000 fval = 3.7500
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里无偿获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
文章链接
发表评论