例题
1.模型中出现给出取值的参数
- 例题
借助for循环,在参数a,b范围内求解最小值问题
clc,clear
for a = 0:4
for b = [2,4,6,7]
f = @ (x) 4 * x(1) - a * x(1) -2 * x(2);
aa = [1,1;2,1;1,-b]
bb = [4;5;-2]
[x,y] = fmincon(f,rand(2,1),aa,bb,[],[],zeros(2,1))
fprintf('a = % d,b = % d时,y = % f \n',a,b,y) % y值为浮点型所以%f
x
end
end
% 输出为:
a = 4,b = 7时,y = -7.999995
2.约束条件同时出现线性和非线性
- 例题
线性约束条件写入主程序的文件中
编写目标函数ff1
function y = ff1(x)
c1 = [2,3,1];
c2 = [3,1,0];
y = c1 * x + c2 * x.^2;
y = -y;
编写非线性约束函数ff2
function [f,g] = ff2(x)
f = [ x(1) + 2 * x(1)^2 + x(2) + 2 * x(2)^2 + x(3) - 10
x(1) + x(1)^2 + x(2) + x(2)^2 - x(3) - 50
2 * x(1) + x(1)^2 + 2 * x(2) + x(3) - 40];
g = x(1)^2 + x(3) - 2;
运行主程序
a = [-1,-2,0;-1,0,0];
b = [-1,0];
[x,y] = fmincon(@ff1,rand(3,1),a,b,[],[],[],[],@ff2)
x,y=-y
% 输出为
x1 =2.3333
x2=0.1667
x3=-3.4444
y =18.0833