鲁棒优化代码


```matlab
% clc;
% clear;
% 
% %begin rome
% h = rome_begin;
% an1 = 0.01;
% an2 = 0.02;
% % decision variables
% newvar Drug1 nonneg;     % nonneg:非负
% newvar Drug2 nonneg;
% newvar Raw1 nonneg;
% newvar Raw2 nonneg;
% 
% % Objective to maximize the profit
% rome_maximize(6200 * Drug1 + 6900*Drug2 - (100 * Raw1 + 199 * Raw2 + 700 * Drug1 + 800 * Drug2));
% 
% % Storage constraint
% rome_constraint(Raw1 + Raw2 <= 1000);
% 
% % manpower constraint
% rome_constraint(90 * Drug1 + 100 * Drug2 <= 2000);
% 
% % Equipment constraint
% rome_constraint(40 * Drug1 + 50 * Drug2 <= 800);
% 
% %Budget constraint
% rome_constraint(100 * Raw1 + 199.9 * Raw2 + 700 * Drug1 + 800 * Drug2 <= 100000);
% 
% %Constraint to have enough active agent A
% rome_constraint(an1 * Raw1 + an2 * Raw2 - 0.5 * Drug1 - 0.6 * Drug2 >= 0);
% 
% %solve the model
% h.solve;
% optobj_det = h.objective;               % get optimal value
% det_sol.Drug1 = h.eval(Drug1);      % get optimal solution
% det_sol.Drug2 = h.eval(Drug2);     % get optimal solution
% det_sol.Raw1 = h.eval(Raw1);        % get optimal solution
% det_sol.Raw2 = h.eval(Raw2);       % get optimal solution
% 
% fprintf('Profit:\t  %10.3f\n', optobj_det);
% fprintf('Drug1:\t  %10.3f\n', det_sol.Drug1);
% fprintf('Drug2:\t  %10.3f\n', det_sol.Drug2);
% fprintf('Raw1:\t  %10.3f\n', det_sol.Raw1);
% fprintf('Raw2:\t  %10.3f\n', det_sol.Raw2);
% rome_end;













%% 改写成rsome
clc;
clear;
close all;
model = rsome;
% % 设置求解器为gurobi
% model.Param.solver = 'gurobi'; 
an1 = 0.0095;
an2 = 0.0196;


%设置决策变量
Drug1= model.decision;                % 不确定的需求变量u
Drug2 = model.decision;               % 中间变量v
Raw1= model.decision;                 % 创建具有S个场景的模糊集
Raw2= model.decision;                 % 创建具有S个场景的模糊集




%目标函数  收益最大


% f=6200 * Drug1 + 6900*Drug2 - (100 * Raw1 + 199.90 * Raw2 + 700 * Drug1 + 800 * Drug2);
model.max(6200*Drug1 + 6900*Drug2 - (100*Raw1 + 199.9*Raw2 + 700*Drug1 + 800*Drug2))

% 约束条件
% Storage constraint
model.append(Raw1 + Raw2 <= 1000);

% manpower constraint
model.append(90 * Drug1 + 100 * Drug2 <= 2000);

% Equipment constraint
model.append(40 * Drug1 + 50 * Drug2 <= 800);

%Budget constraint
model.append(100 * Raw1 + 199.9 * Raw2 + 700 * Drug1 + 800 * Drug2 <= 100000);

%Constraint to have enough active agent A
model.append(an1 * Raw1 + an2 * Raw2 - 0.5 * Drug1 - 0.6 * Drug2 >= 0);

model.append(Raw1>=0);
model.append(Raw2>=0);
model.append(Drug1>=0);
model.append(Drug2>=0);


% 设置求解器为gurobi
model.Param.solver = 'gurobi'; 
%% 求解问题
model.solve;                            % 求解模型

%% 结果
profit=model.get;                                 % 目标函数取值
Raw1_Result=Raw1.get;                             % 决策变量取值
Raw2_Result=Raw2.get;                             % 决策变量取值
Drug1_Result=Drug1.get;                           % 决策变量取值
Drug2_Result=Drug2.get;                           % 决策变量取值
% disp(['目标函数取值:',num2str(profit),',决策变量取值:',num2str(Raw1)])


fprintf('Profit:\t  %10.3f\n', profit);
fprintf('Drug1:\t  %10.3f\n', Drug1_Result);
fprintf('Drug2:\t  %10.3f\n', Drug2_Result);
fprintf('Raw1:\t  %10.3f\n', Raw1_Result);
fprintf('Raw2:\t  %10.3f\n', Raw2_Result);

你可能感兴趣的:(算法)