clc, clear
%%%求解线性规划
%%min(x) c‘x,c、x为n维列向量
%%s.t. {Ax <= b; Aeq * x = beq; lb <= x <= ub}
%max z = 2x1 + 3x2 - 5x3;
%{x1 + x2 + x3 = 7; 2x1 - 5x2 + x3 >= 10; x1 + 3x2 + x3 <= 12; x1, x2, x3 >= 0}
% c = [2; 3; -5];
% a = [-2, 5, -1; 1, 3, 1];
% b = [-10; 12];
% aeq = [1, 1, 1];
% beq = 7;
%[x, fval] = linprog(c, A, b, Aeq, beq, LB, UB, X0,
%OPTIONS),fval返回目标函数的值,LB和UB分别是x的下界和上界,x0是x的初始值,options是控制参数
% x = linprog(-c, a, b, aeq, beq, zeros(3, 1))%zeros(3, 1)是LB
% value = c‘ * x
% [x, fval] = linprog(-c, a, b, aeq, beq, zeros(3, 1))
% 无相等项
% c = [2; 3; 1];
% a = [1, 4, 2; 3, 2, 0];
% b = [8; 6];
% [x, y] = linprog(c, -a, -b, [], [], zeros(3, 1))
%%循环搜索a
% a = 0;
% hold on%只要hold in在循环之前或循环中,就可以发挥作用
% while a < 0.05
% c = [-0.05, -0.27, -0.19, -0.185, -0.185];
% A = [zeros(4, 1), diag([0.025, 0.015, 0.055, 0.026])];%diag创建对角矩阵或获取矩阵的对角元素
% b = a * ones(4, 1);
% Aeq = [1, 1.01, 1.02, 1.045, 1.065];
% beq = 1;
% LB = zeros(5, 1);
% [x, Q] = linprog(c, A, b, Aeq, beq, LB);
% Q = -Q;
% plot(a, Q, ‘*r‘);
%
% a = a + 0.001;
% end
% xlabel(‘a‘), ylabel(‘Q‘)
%