前面讲解了Excel求解一些简单的线性规划、线性整数规划和0-1规划,适合电脑中没有安装MATLAB、Lingo、Python等编程求解规划的软件。今天以实际的例子讲解Excel求解非线性规划,并用MATLAB规划求解函数验证结果。
1.非线性规划实例
Step1:新建一个excel文件,在任意空白区域输入模型的目标函数和约束条件。
Step2:按照文字描述将模型转化为excel规划模型,没有的项,其系数为0。
Step3:将目标函数值处I31单元格的计算公式输入目标函数计算式。
=I19*I28^2+J19*I29^2+K19*I30^2+L19
Step4:将约束条件左半部分的计算公式输入对应的单元格。
M21单元格输入的公式
=I21*I28^2+J21*I29+K21*I30^2
M22单元格输入的公式
=I22*I28+J22*I29^2+K22*I30^2
M23单元格输入的公式
=I23*I28+J23*I29^2+K23*I30
M24单元格输入的公式
=I24*I28+J24*I29+K24*I30^2
M25单元格输入的公式
=I25*I28
M26单元格输入的公式
=J26*I29
M27单元格输入的公式
=K27*I30
Step5:利用Excel规划求解工具求解,点击数据->右上角的规划求解,弹出以下对话框。
我们首先将目标函数计算值的单元格选入为“设置目标”,同时将x1,x2,x3的变量取值处的单元格选择为“通过更改可变单元格”。其次,我们要添加我们的约束条件,按照以前讲解的添加约束条件的方式,点击添加相应的约束条件。选择对应的计算方法非线性GRE的方法求解,选择方法之后点击求解按键。
2.MATLAB规划求解编程验证
主程序
clc;
clear all;
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')
fun1.m
function f=fun1(x);
f=x(1).^2+x(2).^2+x(3).^2+8;
end
fun2.m
function [g,h]=fun2(x);
g=[-x(1).^2+x(2)-x(3).^2;
x(1)+x(2).^2+x(3).^3-20];
h=[-x(1)-x(2).^2+2;
x(2)+2*x(3).^2-3];
end
运行结果
Local minimum found that satisfies the constraints.
Optimization completed because the objective function is non-decreasing in
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.