⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.m

📁 Matlab code for knapsack
💻 M
字号:
close all;
clear all;
clc;

ITERATIONS= 5;    % final result will be  average of these
isML = 0;
isPlot = 1;

%%%%%%% Initialization%%%%%%%%%%%%%%%%%%%%%%%%%%
tic
St_KnapSack.NumItems = 4;
St_KnapSack.SearchSpace = 2^ St_KnapSack.NumItems; 
St_KnapSack.Weight = [4 3 5 2 ];  %% weight vector. This known as benefit
St_KnapSack.ItemCapacity = [6 7 8 1]; %% capacity of each item. (volume of )
St_KnapSack.WeightLength = length(St_KnapSack.Weight);
St_KnapSack.Constraint(1) = 10;
St_KnapSack.ItemCapacityLength = length(St_KnapSack.ItemCapacity);
%%% sorting is used here. This is good to make infeasible sol. feasible

[St_KnapSack.Value St_KnapSack.Index] = sort(St_KnapSack.Weight); 
St_KnapSack.Weight = St_KnapSack.Weight(St_KnapSack.Index);%% sorted weights 
St_KnapSack.ItemCapacity = St_KnapSack.ItemCapacity(St_KnapSack.Index);%% Adjust capacity according to weight 

%% Repeat Same line to convert back 
% St_KnapSack.Weight = St_KnapSack.Weight(St_KnapSack.Index);%% sorted weights 
% St_KnapSack.ItemCapacity = St_KnapSack.ItemCapacity(St_KnapSack.Index);%% Adjust capacity according to weight 
%% Repeat Same line to convert back

St_EDA.POPULATION_SIZE = 10;
St_EDA.SELECTION_PROBABILITY = 0.5;
St_EDA.ITERATION = 10;

%%%%%%%% Exhaustive Search %%%%%%%%%%%%%%%%%%%%%%%%
SumCapacity = zeros(1,St_KnapSack.SearchSpace);
ConstraintCheckAndValue = zeros(2,St_KnapSack.SearchSpace);%% row 1 value, Row constraint check 0 or 1

SearchSpaceInBin = zeros(St_KnapSack.SearchSpace,St_KnapSack.NumItems);

for i = 1:St_KnapSack.SearchSpace
    SearchSpaceInBin(i,:) = dec2binvect_m(i-1,St_KnapSack.NumItems);
    SumCapacity(i)= sum(St_KnapSack.Weight .* SearchSpaceInBin(i,:));
    ConstraintCheckAndValue(1,i)= sum(St_KnapSack.ItemCapacity .* SearchSpaceInBin(i,:));
end
ConstraintCheckAndValue(2,:) = ConstraintCheckAndValue(1,:) <= St_KnapSack.Constraint(1);
SumCapacity
ConstraintCheckAndValue
toc
%%%%%%% File Save%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
time = now;
str = datestr(time,0);
str_index=strfind(str,':');
str(str_index(1,1)) = '_';
str(str_index(1,2)) = '_';
% str1 = ['Data\\Knapsack_It_',num2str(ITERATIONS),'_NR_',num2str(N_R),'_Nr_',num2str(N_r_Start),'_',num2str(N_r_End),'_K_',num2str(K),'_Ks_',num2str(K_Start),'_',num2str(K_End),'_',str(1:17), '.mat'];
% save(str1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -