1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
clear;clc format long g
x0 = [0 0]; A = [-2 3]; b = 6; [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1) fval = -fval
目标函数 function f = fun1(x)
f = -x(1)^2-x(2)^2 +x(1)*x(2)+2*x(1)+5*x(2) ; end 这是非线性约束
function [c,ceq] = nonlfun1(x)
c = [(x(1)-1)^2-x(2)]; ceq = []; end
option = optimoptions('fmincon','Algorithm','interior-point') [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option) fval = -fval
option = optimoptions('fmincon','Algorithm','sqp') [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option) fval = -fval
x0 = [1 1]; [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option) fval = -fval
option = optimoptions('fmincon','Algorithm','active-set') [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option) fval = -fval
option = optimoptions('fmincon','Algorithm','trust-region-reflective') [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option) fval = -fval
x0 = [40.8, 10.8]; option = optimoptions('fmincon','Algorithm','interior-point') [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option) fval = -fval
n = 10; Fval = +inf; X = [0,0]; A = [-2 3]; b = 6; for i = 1:n x0 = [rand()*10 , rand()*10]; [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1,option); if fval < Fval Fval = fval; X = x; end end Fval = -Fval X
clc,clear; n=10000000; x1=unifrnd(-100,100,n,1); x2=unifrnd(-100,100,n,1); fmin=+inf; for i=1:n x = [x1(i), x2(i)]; if ((x(1)-1)^2-x(2)<=0) & (-2*x(1)+3*x(2)-6 <= 0) result = -x(1)^2-x(2)^2 +x(1)*x(2)+2*x(1)+5*x(2) ; if result < fmin fmin = result; x0 = x; end end end disp('蒙特卡罗选取的初始值为:'); disp(x0) A = [-2 3]; b = 6; [x,fval] = fmincon(@fun1,x0,A,b,[],[],[],[],@nonlfun1) fval = -fval
|