# Job shop scheduling problem description

Job Shop Scheduling (JSP) is one of the most classic NP-hard problems. Its application fields are extremely wide, involving aircraft carrier dispatching, airport aircraft dispatching, port terminal cargo dispatching, automobile processing assembly lines, etc.

JSP problem description: A processing system has M machines and requires N jobs to be processed . Among them, job i contains the number of processes Li . Let, then L is the total number of processes in the task set. Among them, the processing time of each process has been determined, and each job must be processed in the order of the process. The task of scheduling is to arrange the processing scheduling sequence of all jobs, while the constraint conditions are met, the performance indicators are optimized.

Job shop scheduling needs to consider the following constraints:

Cons 1: Each process is processed on a designated machine, and processing can only be started after the previous process is completed;

Cons 2: One machine can only process one job at a certain time;

Cons 3: Each job can only be processed once on one machine;

Cons 4: The process sequence and processing time of each job are known and do not change with the change of the processing sequence.

### Problem instance

An example of a job shop scheduling problem is given below, where each process is marked with a pair of values (m, p), where m represents the current process must be processed on the mth machine, and p represents the current process of the mth machine The processing time required for the process. (Note: The numbers of machines and jobs start from 0)
jop0=[(0,3),(1,2),(2,2)]
jop1=[(0,2),(2,1),(1 ,4)]
jop2=[(1,4),(2,3)]
In this example, job jop0 has 3 steps: its first step is marked with (0,3), which means the first The process must be processed on the 0th machine and requires 3 units of processing time; its second process is marked with (1,2), which means that the second process must be performed on the first machine Processing, and requires 2 units of processing time; the rest is the same. In total, there are 8 processes in this example.
A feasible solution to this problem is a permutation of the start time of L=8 procedures, and satisfies the constraints of the problem. The following figure shows an example of a feasible solution (note: this solution is not the optimal solution):

```function varargout = diaodu(varargin)
% DIAODU MATLAB code for diaodu.fig
% DIAODU, by itself, creates a new DIAODU or raises the existing
% singleton*.
%
% H = DIAODU returns the handle to a new DIAODU or the handle to
% the existing singleton*.
%
% DIAODU('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in DIAODU.M with the given input arguments.
%
% DIAODU('Property','Value',...) creates a new DIAODU or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before diaodu_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to diaodu_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%

% Edit the above text to modify the response to help diaodu

% Begin initialization code-DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @diaodu_OpeningFcn, ...
'gui_OutputFcn', @diaodu_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code-DO NOT EDIT

% --- Executes just before diaodu is made visible.
function diaodu_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to diaodu (see VARARGIN)

% Choose default command line output for diaodu
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes diaodu wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = diaodu_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double

% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit9 as text
% str2double(get(hObject,'String')) returns contents of edit9 as a double

% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double

% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit4_Callback(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit17 as text
% str2double(get(hObject,'String')) returns contents of edit17 as a double

% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit5_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double

% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit6_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit5 as text
% str2double(get(hObject,'String')) returns contents of edit5 as a double

% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit7_Callback(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit4 as text
% str2double(get(hObject,'String')) returns contents of edit4 as a double

% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit8_Callback(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit7 as text
% str2double(get(hObject,'String')) returns contents of edit7 as a double

% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit9_Callback(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit6 as text
% str2double(get(hObject,'String')) returns contents of edit6 as a double

% --- Executes during object creation, after setting all properties.
function edit9_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit10_Callback(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit9 as text
% str2double(get(hObject,'String')) returns contents of edit9 as a double

% --- Executes during object creation, after setting all properties.
function edit10_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit11_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit5 as text
% str2double(get(hObject,'String')) returns contents of edit5 as a double

% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit12_Callback(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit17 as text
% str2double(get(hObject,'String')) returns contents of edit17 as a double

% --- Executes during object creation, after setting all properties.
function edit12_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit13_Callback(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit7 as text
% str2double(get(hObject,'String')) returns contents of edit7 as a double

% --- Executes during object creation, after setting all properties.
function edit13_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit14_Callback(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit17 as text
% str2double(get(hObject,'String')) returns contents of edit17 as a double

% --- Executes during object creation, after setting all properties.
function edit14_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit15_Callback(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit9 as text
% str2double(get(hObject,'String')) returns contents of edit9 as a double

% --- Executes during object creation, after setting all properties.
function edit15_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit16_Callback(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit17 as text
% str2double(get(hObject,'String')) returns contents of edit17 as a double

% --- Executes during object creation, after setting all properties.
function edit16_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit17_Callback(hObject, eventdata, handles)
% hObject handle to edit8 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit8 as text
% str2double(get(hObject,'String')) returns contents of edit8 as a double

% --- Executes during object creation, after setting all properties.
function edit17_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit8 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit18_Callback(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit17 as text
% str2double(get(hObject,'String')) returns contents of edit17 as a double

% --- Executes during object creation, after setting all properties.
function edit18_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit19_Callback(hObject, eventdata, handles)
% hObject handle to edit19 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit19 as text
% str2double(get(hObject,'String')) returns contents of edit19 as a double

% --- Executes during object creation, after setting all properties.
function edit19_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit19 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit20_Callback(hObject, eventdata, handles)
% hObject handle to edit20 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit20 as text
% str2double(get(hObject,'String')) returns contents of edit20 as a double

% --- Executes during object creation, after setting all properties.
function edit20_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit20 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit21_Callback(hObject, eventdata, handles)
% hObject handle to edit21 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit21 as text
% str2double(get(hObject,'String')) returns contents of edit21 as a double

% --- Executes during object creation, after setting all properties.
function edit21_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit21 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
gx11=str2num(get(handles.edit1,'String'));
gx12=str2num(get(handles.edit2,'String'));
gx13=str2num(get(handles.edit3,'String'));
gx21=str2num(get(handles.edit4,'String'));
gx22=str2num(get(handles.edit5,'String'));
gx23=str2num(get(handles.edit6,'String'));
gx31=str2num(get(handles.edit7,'String'));
gx32=str2num(get(handles.edit8,'String'));
gx33=str2num(get(handles.edit9,'String'));
gxt11=str2num(get(handles.edit10,'String'));
gxt12=str2num(get(handles.edit11,'String'));
gxt13=str2num(get(handles.edit12,'String'));
gxt21=str2num(get(handles.edit13,'String'));
gxt22=str2num(get(handles.edit14,'String'));
gxt23=str2num(get(handles.edit15,'String'));
gxt31=str2num(get(handles.edit16,'String'));
gxt32=str2num(get(handles.edit17,'String'));
gxt33=str2num(get(handles.edit18,'String'));
sl1=str2num(get(handles.edit19,'String'));
sl2=str2num(get(handles.edit20,'String'));
sl3=str2num(get(handles.edit21,'String'));
% Instance=[2 10 1 45 0 0
% 2 10 1 45 0 0
% 2 34 1 20 0 10
% 2 34 1 20 0 10
% 2 34 1 20 0 10
% 0 28 1 12 2 10
% 0 28 1 12 2 10
% 0 28 1 12 2 10];
% gx11=str2num(gx11);
% gx12=str2num(gx12);
% gx13=str2num(gx13);
% gx21=str2num(gx21);
% gx22=str2num(gx22);
% gx23=str2num(gx23);
% gx31=str2num(gx31);
% gx32=str2num(gx32);
% gx33=str2num(gx33);
% gxt11=str2num(gxt11);
% gxt12=str2num(gxt12);
% gxt13=str2num(gxt13);
% gxt21=str2num(gxt21);
% gxt22=str2num(gxt22);
% gxt23=str2num(gxt23);
% gxt31=str2num(gxt31);
% gxt32=str2num(gxt32);
% gxt33=str2num(gxt33);
% sl1=str2num(sl1);
% sl2=str2num(sl2);
% sl3=str2num(sl3);
Instance=zeros(sl1+sl2+sl3,6);
% for i=1:sl1
% Instance(i,:)=[3-gx11 gxt13 3-gx12 gxt12 3-gx13 gxt11];
% end
% for i=3:5
% Instance(i,:)=[3-gx21 gxt23 3-gx22 gxt22 3-gx23 gxt21];
% end
% for i=6:9
% Instance(i,:)=[3-gx31 gxt33 3-gx32 gxt32 3-gx33 gxt31];
% end
for i=1:sl1
Instance(i,:)=[3-gx11 gxt13 3-gx12 gxt12 3-gx13 gxt11];
end
for i=sl1+1:sl1+sl2
Instance(i,:)=[3-gx21 gxt23 3-gx22 gxt22 3-gx23 gxt21];
end
for i=sl1+sl2+1:sl1+sl2+sl3
Instance(i,:)=[3-gx31 gxt31 3-gx32 gxt32 3-gx33 gxt33];
end
NumOfPopulation=20;% the number of individuals in the population
population=cell(1,NumOfPopulation);% population

MaxGen=500;% maximum number of iterations
PCross=0.9;% cross probability
PMutation=0.08;% mutation probability

SchedulingBest=cell(1,MaxGen);% best order
TimeBest=zeros(MaxGen,1);% the best time of each generation
TimeAvg=zeros(MaxGen,1);% average time of each generation

% Generate initial population
for i=1:NumOfPopulation
population{i}=InitPopulation(Instance);
end
% Start population iteration

SchedulingBest{1}= population{1};
SchedulingBestSofar=SchedulingBest{1};

for i=1:MaxGen
disp(['The current evolution algebra is' num2str(i)]);
MaxTime=zeros(1,NumOfPopulation);% the best time for individuals in the population

%copy
population=Selection(population,Instance);
%cross
population=CrossOver(population,PCross,SchedulingBestSofar);
%Mutations
population=Mutation(population,PMutation);

%Statistics
TotalTime=0;
for j=1:NumOfPopulation
MaxTime(j)=MaxSpoon(Instance,population{j});
TotalTime=TotalTime+MaxTime(j);
end

[MinMaxTime,Index]=min(MaxTime);

SchedulingBest{i}=population{Index};% The best order of each generation
SchedulingBestSofar=SchedulingBest{i};
TimeBest(i)=MinMaxTime;% the best time of each generation
TimeAvg(i)=TotalTime/NumOfPopulation;% The average time of each generation
end

%Display the best processing sequence Gantt chart

[MinTime,Index]=min(TimeBest);
MaxMaxTime=max(TimeBest);
[MinMaxTime,Pstarts,Pends,PJobName]=MaxSpoon(Instance,SchedulingBest{Index});
starts=Pstarts;
ends=Pends;
JobName=PJobName;
%Maximum completion time is MinMaxTime

disp(['Maximum processing cycle is' num2str(MinMaxTime)]);

%The following is a graphic display%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%
axes(handles.axes1);
[m,n]=size(JobName);
axis_size=[0 max(max(ends))+2 0 m];
yla=[1:m];
set(gca,'ytick',yla);

ylabel('Machine','FontSize',12,'color','b');
xlabel('Processing time (minutes)','FontSize',12,'color','b');
title(['Optimal processing time (minutes):'num2str(MinMaxTime)],'FontSize',16,'color','r');

ZO=m+1;
for i=1:m
for j=1:n
x=[starts(i,j) ends(i,j)];
y=[ZO-i ZO-i];
line(x,y);

x=[ends(i,j) ends(i,j)];
y=[ZO-i ZO-i-0.5];
line(x,y);

x=[starts(i,j) ends(i,j)];
y=[ZO-i-0.5 ZO-i-0.5];
line(x,y);

st=strcat(int2str(starts(i,j)));
text(x(1),y(1)-0.1,st,'FontSize',8,'color','m');
st=strcat(int2str(ends(i,j)));
text(x(2),y(2)-0.1,st,'FontSize',8,'color','m');

x=[starts(i,j) starts(i,j)];
y=[ZO-i ZO-i-0.5];
line(x,y);

TrueJobName=strcat(int2str(JobName(i,j)));
text((starts(i,j)+ends(i,j))/2-0.2,ZO-i-0.2,TrueJobName);
end
end

% Shows the change of the optimal time and the average time during the iteration
figure(2);
axis_size=[0 MaxGen 0 MaxMaxTime+10];
axis(axis_size);

ylabel('Processing Time','FontSize',12,'color','b');
xlabel('Processing Generation','FontSize',12,'color','b');
title('The Literator of Best Time and Average Time','FontSize',16,'color','r');

Gen=[1:MaxGen];
plot(Gen,TimeBest,'r',Gen,TimeAvg,'b')
h = legend('optimal time','average time');
set(h,'Location','Best');

function edit22_Callback(hObject, eventdata, handles)
% hObject handle to edit22 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit22 as text
% str2double(get(hObject,'String')) returns contents of edit22 as a double

% --- Executes during object creation, after setting all properties.
function edit22_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit22 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit23_Callback(hObject, eventdata, handles)
% hObject handle to edit20 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit20 as text
% str2double(get(hObject,'String')) returns contents of edit20 as a double

% --- Executes during object creation, after setting all properties.
function edit23_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit20 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function edit24_Callback(hObject, eventdata, handles)
% hObject handle to edit21 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit21 as text
% str2double(get(hObject,'String')) returns contents of edit21 as a double

% --- Executes during object creation, after setting all properties.
function edit24_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit21 (see GCBO)
% eventdata reserved-to be defined in a future version of MATLAB
% handles empty-handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

Copy code```

References and code private message bloggers