Let us worry about your assignment instead!

We Helped With This MATLAB Programming Homework: Have A Similar One?

SOLVED
CategoryProgramming
SubjectMATLAB
DifficultyUndergraduate
StatusSolved
More InfoPay Someone To Do My Matlab Homework
166111

Assignment Description

Assignment 4

 

This assignment 4 is divided into 3 parts:

-          Part 1: GA and DE (Maximum of 3 points) o Pre-requisites: None.

-          Part 2: PSO (Maximum of 2 point) o Pre-requisites: Minimum of 2 points in Part 1.

 

Part 1: Basic algorithms A

 

The objective of this assignment is to study the performance of evolutionary algorithms with real codification. The algorithms will be applied to 10 functions with dimension 30. These functions were proposed in the competition organized by the especial session “Real parameter optimization” in the 2005 IEEE Congress on Evolutionary Computation (CEC2005).

 

 

Your assignment is to implement two different algorithms:

1)      GA algorithm (Lecture 3) (0.75 points)

2)      DE algorithm (Lecture 3) (0.75 points)

 

Your report for part 1 has to cover the key parts as follow:

1a. Explain the implemented GA algorithm and give the parameter settings. 1b. Give the results of the GA algorithm. (0.75, Mandatory to have part a and b) 2a. Explain the implemented DE algorithm and give the parameter settings.

2b. Give the results of the DE algorithm. (0.75, Mandatory to have part a and b)

 

How to present the results:

1.  - Run the algorithm to each function 20 times and calculate the mean value of the 20 runs. One algorithms has to have the same setting for all the functions and runs. For example: If you use a mutation factor F = 0.5, you have to use this value to all the functions.

2.  - Present the following table:

 

F1

F2

F3

F4

F5

F6

F7

F8

F9

F10

Algorithm name

X.XXE+XX

X.XXE-XX

1.23E+02

 

 

 

 

 

 

 

 

Each value inside the table is the mean value of the 20 runs for each algorithm on each function.

Every run is independently of the others.

The mean values has to be presented in scientific formulation.

Examples: 567.8 = 5.68E+02,   0.023 = 2.30E-02, 5.345 = 5.35E+00

 

In order to do the assignment, you have to use the matlab code given by the teacher and explained in the lectures. If you have doubts of how to use it, you can ask the teacher. 

 

 

 

 

 

 

 

 

Part 2: Basic Algorithms B

 

Your assignment is to implement two different algorithms:

1) PSO algorithm (Lecture 4) (1 points)

 

Your report for part 2 has to cover the key parts as follow:

1a. Explain the implemented PSO algorithm and give the parameter settings.

1b. Give the results of the PSO algorithm. (1, Mandatory to have part a and b)

 

How to present the results:

1.  - Run the algorithm to each function 20 times and calculate the mean value of the 20 runs. One algorithms has to have the same setting for all the functions and runs. For example: If you use a mutation factor F = 0.5, you have to use this value to all the functions.

2.  - Present the following table:

 

F1

F2

F3

F4

F5

F6

F7

F8

F9

F10

Algorithm name

X.XXE+XX

X.XXE-XX

1.23E+02

 

 

 

 

 

 

 

 

Each value inside the table is the mean value of the 20 runs for each algorithm on each function.

Every run is independently of the others.

The mean values has to be presented in scientific formulation.

Examples: 567.8 = 5.68E+02,   0.023 = 2.30E-02, 5.345 = 5.35E+00

 

In order to do the assignment, you have to use the matlab code given by the teacher and explained in the lectures. If you have doubts of how to use it, you can ask the teacher. A second option is to implement your own version of the code in a different language and ask for help/permission to the teacher.

 

 

 

 

Conditions to approve the assignment 4

In order to receive the points for the code, you need to submit the report and have more than half of the points. Example: If a report have 1 point, then you need to have a minimum of 0.5.

-          Score to pass part 1: 2 points.

-          Score to pass part 2: 1 point.

-          Minimum score to pass assignment 4: 3 points.

 

 

SCORES

-          Your score < 3: U

-          3 <= your score <= 3.75: 3 -   4 <= your score < 4.75: 4

-          4.75 <= your score <= 5: 5

 

SUBMISSION DETAILS

 

Maximum Score: 5 points.

Time to submit: 21 January – 24 March & 1 April – 7 April & 21 April – 28 April

 

I will not consider a submission without the following format:

File names for the submission:

StudentName_StudentLastName_Assignment4_Part1_Code.zip

StudentName_StudentLastName_Assignment4_Part1_Report.pdf StudentName_StudentLastName_Assignment4_Part2_Code.zip

StudentName_StudentLastName_Assignment4_Part2_Report.pfd

 

Email subject for the submission:

[DVA340] StudentName StudentLastName Assignment4 Part1 Code

[DVA340] StudentName StudentLastName Assignment4 Part1 Report

 

 

 

ADDITIONAL INFORMATION!

You are allowed to send each part of the assignment a maximum of three times. When you approve the assignment, you are not allowed to submit the assignment again.

Before defending the code to Miguel Leon, you have to send the code by email to ....

Before submitting the report, you should present this assignment first to Miguel Leon. After that, and only if everything is correct, you are able to send the report to ....

You cannot get the points of the report without presenting the code first. 

 

Extra information

The functions description is given in the file: “assignment 5 function description.pdf”.

Use the code given in: “assignment 5 matlab code.zip”. Only use “test.m”

To compare the results, you can use the summation of the relative error. Use the file: “assignment 5 comparison.xlsx”

Assignment Code


%
%
%
%
%

function populationFitness = calculateFitnessPopulation_2005(func, population, o, A, M, a, alpha, b)
                                                                                
    populationSize = size(population,1);
    dimension = size(population,2);
    populationFitness = zeros(1,populationSize);

    i = 1;
    
    while i <= populationSize
        
        if func == 1

            populationFitness(i) = f1_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 2

            populationFitness(i) = f2_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 3

            populationFitness(i) = f3_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 4

            populationFitness(i) = f4_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 5

            populationFitness(i) = f5_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 6

            populationFitness(i) = f6_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 7

            populationFitness(i) = f7_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 8

            populationFitness(i) = f8_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 9

            populationFitness(i) = f9_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 10

            populationFitness(i) = f10_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 11

            populationFitness(i) = f11_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 12

            populationFitness(i) = f12_2005(population(i,:), o, A, M, a, alpha, b);

        end

        if func == 13

            populationFitness(i) = f13_2005(population(i,:), o, A, M, a, alpha, b);

        end
        
        i = i + 1;
        
    end

end

Assignment Code


%
%        DATABASE INFORMATION 
%
%  1999 -> 1-13 functions
%
function res = calculateFitness_2005(func, x, o, A, M, a, alpha, b)

    dimension = size(x,2);

    if func == 1
    
        res = f1_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 2
    
        res = f2_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 3
    
        res = f3_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 4
    
        res = f4_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 5
    
        res = f5_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 6
    
        res = f6_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 7
    
        res = f7_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 8
    
        res = f8_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 9
    
        res = f9_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 10
    
        res = f10_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 11
    
        res = f11_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 12
    
        res = f12_2005(x, o, A, M, a, alpha, b);
        
    end
    
    if func == 13
    
        res = f13_2005(x, o, A, M, a, alpha, b);
        
    end
end

Assignment Code


%
%          DATABASE INFORMATION 
%
%  1999 -> 1-13 functions
%
%                 OUTPUTS
%
%  correct = 1 -> The function is correct.
%  correst = 0 -> The function is incorrect.
%

function [correct, upper, lower, optimum, o, A, M, a, alpha, b] = getInformation_2005(func, dimension)

    correct  = 1;
    D = dimension;

    if func == 1

		lower = -100;
		upper = 100;
		optimum = 0;
        load sphere_func_data
        A = []; M = []; a = []; alpha = []; b = [];

    end
    
	if func == 2

		lower = -100;
		upper = 100;
		optimum = 0;
        
        load schwefel_102_data
        A = []; M = []; a = []; alpha = []; b = [];

    end
    
	if func == 3

		lower = -100;
		upper = 100;
		optimum = 0;
        
        load high_cond_elliptic_rot_data
        A = []; a = []; alpha = []; b = [];

        if D == 2
            load elliptic_M_D2;
        elseif D == 10
            load elliptic_M_D10;
        elseif D == 30
            load elliptic_M_D30;
        elseif D == 50
            load elliptic_M_D50;
        end
    
    end
    
    if func == 4

		lower = -100;
		upper = 100;
		optimum = 0;
        
        load schwefel_102_data
        A = []; M = []; a = []; alpha = []; b = [];
    
    end

    if func == 5

		lower = -100;
		upper = 100;
		optimum = 0;
        
        load schwefel_206_data
        M = []; a = []; alpha = []; b = [];

    end
    
    if func == 6

		lower = -100;
		upper = 100;
		optimum = 0;
        
        load rosenbrock_func_data
        A = []; M = []; a = []; alpha = []; b = [];

    end
    
    if func == 7

		lower = -600;
		upper = 600;
		optimum = 0;
        
        load griewank_func_data
        A = []; a = []; alpha = []; b = [];

        if D == 2, load griewank_M_D2,
        elseif D == 10, load griewank_M_D10,
        elseif D == 30, load griewank_M_D30,
        elseif D == 50, load griewank_M_D50,
        end

    end
    
    if func == 8

		lower = -32;
		upper = 32;
		optimum = -12569.5*dimension/30;
        
        load ackley_func_data
        A = []; a = []; alpha = []; b = [];

        if D == 2, load ackley_M_D2,
        elseif D == 10, load ackley_M_D10,
        elseif D == 30, load ackley_M_D30,
        elseif D == 50, load ackley_M_D50,
        end

    end
    
    if func == 9

		lower = -5;
		upper = 5;
		optimum = 0;
        
        load rastrigin_func_data
        A = []; M = []; a = []; alpha = []; b = [];

    end
    
    if func == 10

		lower = -5;
		upper = 5;
		optimum = 0;
        
        load rastrigin_func_data
        A = []; a = []; alpha = []; b = [];
        if D == 2, load rastrigin_M_D2,
        elseif D == 10, load rastrigin_M_D10,
        elseif D == 30, load rastrigin_M_D30,
        elseif D == 50, load rastrigin_M_D50,
        end

    end
    
    if func == 11

		lower = -0.5;
		upper = 0.5;
		optimum = 0;
        
        load weierstrass_data
        A = []; a = []; alpha = []; b = [];
        if D == 2, load weierstrass_M_D2, ,
        elseif D == 10, load weierstrass_M_D10,
        elseif D == 30, load weierstrass_M_D30,
        elseif D == 50, load weierstrass_M_D50,
        end

    end
    
    if func == 12

		lower = -pi;
		upper = pi;
		optimum = 0;
        
        load schwefel_213_data
        A = []; M = []; 
        o = [];

    end
    
    if func == 13

		lower = -3;
		upper = 1;
		optimum = 0;
        
        load EF8F2_func_data
        A = []; M = []; a = []; alpha = []; b = [];

    end
    
    if func == 14

		lower = -100;
		upper = 100;
		optimum = 0;
        
        load E_ScafferF6_func_data
        if D == 2, load E_ScafferF6_M_D2,
        elseif D == 10, load E_ScafferF6_M_D10,
        elseif D == 30, load E_ScafferF6_M_D30,
        elseif D == 50, load E_ScafferF6_M_D50,
        end
        A = []; a = []; alpha = []; b = [];

    end
    
    if func > 13 || func < 1
        
        correct = 0;
        
    end

end

Assignment Code


 %path = 'C:Usersmlz02DocumentsMATLABDE LIBRARY';
 %addpath(genpath(path))

 functions = [1 2 3 4 5 6 7 8 9 10]; %functions being solved
 %example: functions = 1;
 %example: functions = [2 4 9];
 numF = size(functions,2);
 nTimes = 20; % Number of times in which a function is going to be solved
 dimension = 30; % Dimension of the problem
 populationSize = 10; % Adjust this to your algorithm

 for i = 1:numF

    fitfun = functions(i); %fitfun is the function that we are solving

    fprintf('
-----  Function %d started  -----

', fitfun);

    for t = 1:nTimes

         maxEval = 10000*dimension; % maximum number of evaluation
         [value, upper,lower,objetiveValue, o, A, M, a, alpha, b] = getInformation_2005(fitfun, dimension);

         currentEval = 0;

         % Start generating the initial population

         population = zeros(populationSize, dimension);

         for j =1:populationSize

             population(j,:) = lower + (upper-lower).*rand(1,dimension);

         end

         populationFitness = calculateFitnessPopulation_2005(fitfun, population, o, A, M, a, alpha, b); %Fitness values of all individuals (smaller value is better)
         bestSolutionFitness = min(populationFitness);
         currentEval = currentEval + populationSize;

         % Algorithm loop

         while(objetiveValue < bestSolutionFitness && currentEval < maxEval)

              % Your algorithm goes here

              populationFitness = calculateFitnessPopulation_2005(fitfun, population, o, A, M, a, alpha, b); %Fitness values of all individuals (smaller value is better)
              bestSolutionFitness = min(populationFitness);
              currentEval = currentEval + populationSize;
              
              % Your algorithm goes here
              
         end

         % best individual
         bestSolutionFitness = min(populationFitness);
         fprintf('%dth run, The best individual fitness is %d
', t, bestSolutionFitness);

     end

end

Assignment Code


%
%
%
%
%

function f = f10_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -5 + 10 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    x = x * M;
    f = sum(x .^ 2 - 10 .* cos(2 .* pi .* x) + 10, 2);
    
end

Assignment Code


%
%
%
%
%

function f = f11_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -0.5 + 0.5 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    x = x * M;
    x = x + 0.5;
    a = 0.5;%0<a<1
    b = 3;
    kmax = 20;
    [ps, D] = size(x);
    c1(1 : kmax + 1) = a .^ (0 : kmax);
    c2(1 : kmax + 1) = 2 * pi * b .^ (0 : kmax);
    c = -w(0.5, c1, c2);
    f = 0;
    for i = 1 : D
        f = f + w(x(:, i)', c1, c2);
    end
    f = f + repmat(c * D, ps, 1);
    
end

function y = w(x, c1, c2)
    y = zeros(length(x), 1);
    for k = 1 : length(x)
        y(k) = sum(c1 .* cos(c2 .* x(:, k)));
    end
end

Assignment Code


%
%
% No confiar en esta funcion
%
%

function f = f12_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(alpha) >= D
        alpha = alpha(1 : D);
        b = b(1 : D, 1 : D);
        a = a(1 : D, 1 : D);
        
    else
        alpha = -3 + 6 * rand(1, D);
        a = round(-100 + 200 .* rand(D, D));
        b = round(-100 + 200 .* rand(D, D));
    end
    alpha = repmat(alpha, D, 1);
    A = sum(a .* sin(alpha) + b .* cos(alpha), 2);
    for i = 1 : ps
        xx = repmat(x(i, :), D, 1);
        B = sum(a .* sin(xx) + b .* cos(xx), 2);
        f(i, 1) = sum((A - B) .^ 2, 1);
    end
    
end

Assignment Code


%
%
%
%
%

function fit = f13_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -1 + 1 * rand(1, D);
    end
    x = x - repmat(o, ps, 1) + 1;
    fit = 0;
    for i = 1 : (D - 1)
        fit = fit + F8F2(x(:, [i, i + 1]));
    end
    fit = fit + F8F2(x(:, [D, 1]));
    
end

function f = F8F2(x)
f2 = 100 .* (x(:, 1).^2 - x(:, 2)).^2 + (1 - x(:, 1)).^2;
f = 1 + f2 .^ 2 ./ 4000 - cos(f2);
end

Assignment Code


%
%
%
%
%

function fit = f1_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -100 + 200 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    fit = sum(x .^ 2, 2);

end

Assignment Code


%
%
%
%
%

function f = f2_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -100 + 200 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    f = 0;
    for i = 1 : D
        f = f + sum(x(:, 1 : i), 2).^2;
    end

end

Assignment Code


%
%
%
%
%

function fit = f3_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -100 + 200 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    x = x * M;
    a = 1e+6;
    fit = 0;
    for i = 1 : D
        fit = fit + a .^ ((i - 1) / (D - 1)) .* x(:, i).^2;
    end

end

Assignment Code


%
%
%
%
%

function f = f4_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -100 + 200 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    f = 0;
    for i = 1 : D
        f = f + sum(x(:, 1 : i), 2).^2;
    end
    f = f .* (1 + 0.4 .* abs(normrnd(0, 1, ps, 1)));

end

Assignment Code


%
%
%
% No confiar en esta funcion
%

function f = f5_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        A = A(1 : D, 1 : D); o = o(1 : D);
    else
        o = -100 + 200 * rand(1, D);
        A = round(-100 + 2 * 100 .* rand(D, D));
        while det(A) == 0
            A = round(-100 + 2 * 100 .* rand(D, D));
        end
    end
    o(1 : ceil(D / 4)) = -100; o(max(floor(0.75 * D), 1) : D) = 100;
    B = A * o';
    for i = 1 : ps
        f(i, 1) = max(abs(A * (x(i, :)') - B));
    end
    
end

Assignment Code


%
%
%
%
%

function f = f6_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -90 + 180 * rand(1, D);
    end
    x = x - repmat(o, ps, 1) + 1;
    f = sum(100 .* (x(:, 1 : D - 1) .^ 2 - x(:, 2 : D)) .^ 2 + (x(:, 1 : D - 1) - 1) .^ 2, 2);
end

Assignment Code


%
%
%
%
%

function f = f7_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -600 + 0 * rand(1, D);
    end
    o = o(1 : D);
    x = x - repmat(o, ps, 1);
    x = x * M;
    f = 1;
    for i = 1 : D
        f = f .* cos(x(:, i) ./ sqrt(i));
    end
    f = sum(x .^ 2, 2) ./ 4000 - f + 1;

end

Assignment Code


%
%
%
%
%

function f = f8_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -30 + 60 * rand(1, D);
    end
    o(2 .* [1 : floor(D / 2)] - 1) = -32;
    x = x - repmat(o, ps, 1);
    x = x * M;
    f = sum(x .^ 2, 2);
    f = 20 - 20.* exp(-0.2 .* sqrt(f ./ D)) - exp(sum(cos(2 .* pi .* x), 2) ./ D) + exp(1);

end

Assignment Code


%
%
%
%
%

function f = f9_2005(x, o, A, M, a, alpha, b)

    [ps, D] = size(x);
    if length(o) >= D
        o = o(1 : D);
    else
        o = -5 + 10 * rand(1, D);
    end
    x = x - repmat(o, ps, 1);
    f = sum(x .^ 2 - 10 .* cos(2 .* pi .* x) + 10, 2);
    
end

Frequently Asked Questions

Is it free to get my assignment evaluated?

Yes. No hidden fees. You pay for the solution only, and all the explanations about how to run it are included in the price. It takes up to 24 hours to get a quote from an expert. In some cases, we can help you faster if an expert is available, but you should always order in advance to avoid the risks. You can place a new order here.

How much does it cost?

The cost depends on many factors: how far away the deadline is, how hard/big the task is, if it is code only or a report, etc. We try to give rough estimates here, but it is just for orientation (in USD):

Regular homework$20 - $150
Advanced homework$100 - $300
Group project or a report$200 - $500
Mid-term or final project$200 - $800
Live exam help$100 - $300
Full thesis$1000 - $3000

How do I pay?

Credit card or PayPal. You don't need to create/have a Payal account in order to pay by a credit card. Paypal offers you "buyer's protection" in case of any issues.

Why do I need to pay in advance?

We have no way to request money after we send you the solution. PayPal works as a middleman, which protects you in case of any disputes, so you should feel safe paying using PayPal.

Do you do essays?

No, unless it is a data analysis essay or report. This is because essays are very personal and it is easy to see when they are written by another person. This is not the case with math and programming.

Why there are no discounts?

It is because we don't want to lie - in such services no discount can be set in advance because we set the price knowing that there is a discount. For example, if we wanted to ask for $100, we could tell that the price is $200 and because you are special, we can do a 50% discount. It is the way all scam websites operate. We set honest prices instead, so there is no need for fake discounts.

Do you do live tutoring?

No, it is simply not how we operate. How often do you meet a great programmer who is also a great speaker? Rarely. It is why we encourage our experts to write down explanations instead of having a live call. It is often enough to get you started - analyzing and running the solutions is a big part of learning.

What happens if I am not satisfied with the solution?

Another expert will review the task, and if your claim is reasonable - we refund the payment and often block the freelancer from our platform. Because we are so harsh with our experts - the ones working with us are very trustworthy to deliver high-quality assignment solutions on time.

Customer Feedback

"Thanks for explanations after the assignment was already completed... Emily is such a nice tutor! "

Order #13073

Find Us On

soc fb soc insta


Paypal supported