数学建模-规划工具箱yalmip

  1. 官网下载

  2. 实例

%% yalmip 求解    yalmip
clc;clear;close all;
%%
%sdpvar实型变量   intvar 整形变量   binvar 0-1型变量
p=sdpvar(3,1);   %定义变量
%目标函数  要把求最大值转化为最小值
Objective=-p(1)^2+p(2)^2-p(2)*p(3);

%约束条件
Constraints=[0<=p<=1,(p(1)^2+p(1)*p(2)+p(2)*p(3)<=p(2)+6),((2*p(1)+p(2)+3*p(3))<=6)];
%优化求解
optimize(Constraints,Objective)

P=double(p);
Obj=double(-Objective);
objstr=['目标函数最优值:',num2str(Obj)];
disp(objstr)
for i=1:length(P)
    xstr=['x',num2str(i),'的值为:',num2str(P(i))];
    disp(xstr)
end
%% yalmip 求解
%背包问题
clc;clear;close all;
%sdpvar实型变量   intvar 整形变量   binvar 0-1型变量
%各个物品的质量
w=[80,82,85,70,72,70,82,75,78,45,49,76,45,35,94,49,76,79,84,74,76,63,...
    35,26,52,12,56,78,16,52, 16,42,18,46,39,80,41,41,16,35,70,72,70,66,50,55,25, 50,55,40];
%各个物品的价值
v=[200,208,198,192,180,180,168,176,182,168,187,138,184,154,168,175,198,...
    184,158,148,174,135, 126,156,123,145,164,145,134,164,134,174,102,149,134,...
    156,172,164,101,154,192,180,180,165,162,160,158,155, 130,125]; 
%%
p=binvar(length(w),1); 
%%
%目标函数
%拿出物品价值最大,默认最小值优化,加个负号
Objective=-sum(v*p);
%约束条件
%背包总重量不超过1000
Constraints=[(sum(w*p)<=1000)];
%优化求解
optimize(Constraints,Objective)
P=double(p);
Obj=double(-Objective);
disp(P')
index=find(P==1);
objstr=['目标函数最优值:',num2str(Obj)];
disp(objstr)
disp('装入背包的物品为')
disp(index')

你可能感兴趣的:(数学建模,数学建模)