Not enough input arguments

Hi, I try to create a genetic algorithm model and i try to create a fitness function to calculate fitness of every child. However, Matlab gives a function input error.
Here is the code that I wrote so far,
_
function [ fitness ] = calcfitness( breedingpop, nbreeding, penalty )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
for i=1:nbreeding
fitness = (breedingpop(nbreeding).penalty - breedingpop(i).penalty) / (breedingpop(nbreeding).penalty - breedingpop(1).penaltybreedingpop)
end
i know "penalty" is not the correct way to add as an argument. Does anyone have any idea how I could add penalty as an argument. Thanks

Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 21 Jun. 2013
Bearbeitet: Azzi Abdelmalek am 21 Jun. 2013

0 Stimmen

function [ fitness ] = calcfitness( breedingpop, nbreeding, penalty )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
for i=1:nbreeding
fitness = (breedingpop(nbreeding).(penalty) - breedingpop(i).penalty) / (breedingpop(nbreeding).(penalty) - breedingpop(1).penaltybreedingpop)
end
penalty should be a strindg

6 Kommentare

tevzia
tevzia am 21 Jun. 2013
I know input arguments should be string but the penalty is a value that i calculate for every individuals in the model and i try to compare them (fitness) but I cannot figure out how to add argument for this functions.
% code
function [ fitness ] = calcfitness(breedingpop, nbreeding)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
for i = 1:nbreeding
fitness = (breedingpop(nbreeding).penalty - breeding(i).penalty) / (breedingpop(nbreeding).penalty - breedingpop(1).penalty);
% code
for this variable "breedingpop(nbreeding).penalty" of function, what should i add as an argument. Sorry I am new user of matlab Thanks
Did you read my answer?
use
breedingpop(nbreeding).(penalty) % instead of
breedingpop(nbreeding).penalty
tevzia
tevzia am 21 Jun. 2013
yes i did but i didnt work as well
Azzi Abdelmalek
Azzi Abdelmalek am 21 Jun. 2013
How did you call your function?
tevzia
tevzia am 21 Jun. 2013
in the main code
childfitness = calcfitness(breedingpop, nbreeding, penalty )
penalty should be a string
childfitness = calcfitness(breedingpop, nbreeding, 'penalty' )

Diese Frage ist geschlossen.

Gefragt:

am 21 Jun. 2013

Geschlossen:

am 20 Aug. 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by