### Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

## GA calculates wrong penalty

Tom Brenner

### Tom Brenner (view profile)

さんによって質問されました 2019 年 3 月 26 日

### Tom Brenner (view profile)

さんによって コメントされました 2019 年 3 月 26 日
Alan Weiss

### Alan Weiss (view profile)

さんの 回答が採用されました
I have a GA problem with the optimization file Lowest. I set the initial population using a set of parameters X:
optim.options.InitialPopulationMatrix = X;
I check the result:
Lowest(X,[5 15], 1)
or indeed
Lowest(optim.options.InitialPopulationMatrix,[5 15], 1)
both yield
ans = 0.16.
I now define and run the following:
fopt = @(x)Lowest(x,[5 15],1);
[x,fval]=ga(fopt,optim.nvars,optim.Aineq,optim.bineq,[],[],optim.lb,optim.ub,[],optim.intcon,optim.options);
With optim.options.Display = 'iter'; The first values the GA run generates for me are always much higher than 0.16.
Why??!?
Any help greatly appreciated.

#### 0 件のコメント

サインイン to comment.

R2018a

## 3 件の回答

### Alan Weiss (view profile)

2019 年 3 月 26 日
採用された回答

To answer your second question first, if you set a problem structure as documented then you can call ga by
[x,fval] = ga(problem)
For your first question, you can see the description of the penalty function in Integer ga algorithm. What I was trying to say is that your initial point might be infeasible, and then the penalty function is higher than the fitness function.
For the documentation on passing extra parameters, see Passing Extra Parameters.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Tom Brenner

### Tom Brenner (view profile)

2019 年 3 月 26 日
Yes, somehow some of the variables violated the upper or lower limits (not the intcon). That was not supposed to happen, but somehow wrong values made their way in.

サインイン to comment.

### Alan Weiss (view profile)

2019 年 3 月 26 日

You are probably seeing the result of the integer-constrained solver. The fitness function is modified by a penalty term. It is possible that your initial population matrix is not integer-feasible.
Also, since you seem to like making a struct for your problem, why not go all the way and use a real problem structure?
Alan Weiss
MATLAB mathematical toolbox documentation

#### 0 件のコメント

サインイン to comment.

2019 年 3 月 26 日

### Tom Brenner (view profile)

2019 年 3 月 26 日

Thank you for the reply, Alan. I am ashamed to admit I can make no head or tail of it. Integer-constrained solver = the constraint I set through optim.intcon? In my case, optim.intcon = 1, and the first parameter in optim.options.InitialPopulationMatrix is 44. The fitness function cannot operate with anything other than an integer for x(1).
What is the difference between a problem structure and the "struct" I used for my problem? Again, sorry, I could not make the difference from the documentation page you directed me to. I picked up the syntax I posted after searching for the recommended ways to pass extra variables to the fitness function used by GA.

#### 0 件のコメント

サインイン to comment.

Translated by