Hi
I hve problem when I use x(0) in nonlinear constraint in my code and I have to start with x(0)!.
Please, Could any one solve this issue. I have to solve it to find the lower and upper bounds.
Screen Shot 2019-03-06 at 10.07.31 PM.png
Screen Shot 2019-03-06 at 9.50.28 PM.png
THE ERROR:
Screen Shot 2019-03-06 at 10.03.23 PM.png

12 commentaires

Torsten
Torsten le 7 Mar 2019
1, Array indices start at 1; thus x(0) will produce an error.
2. Put [] around the c-vector.
Best wishes
Torsten.
Talal Alharbi
Talal Alharbi le 9 Mar 2019
Thank you Torston
If I put c=[] That mean the ((inequality constraints c)) is empty and I use this constraint to effect on my optimization problem to give me different results.
Your suggestion it works but without use this constraint.
What Torsten meant was not:
c=[]
but
c=[x(1)...]
Talal Alharbi
Talal Alharbi le 13 Mar 2019
Thank you Stephan
I should start from x(0) since The first row from the matrix is [1 1 1 1 1 1 1 1 1 1]
So, I cannot start from x(1).
Torsten
Torsten le 13 Mar 2019
Modifié(e) : Torsten le 13 Mar 2019
Shift all your x-indices by 1 - this will do the job:
objective = @(x) sum(x(2:end));
and
for i = 2:9
c(i-1,1) = x(i)^2-x(i-1)*x(i+1);
end
Talal Alharbi
Talal Alharbi le 14 Mar 2019
Thank you Torsten . I appreciate it.
Actually,I did this way before. But I try to get other results when I start from x(0) since I want to compare them with other studing. NOW, I conclude, I cannot get results from this situation if I start from x(0).
My concern now is how can I find the upper bound from this problem?
I try to change the objective function by multiplying it (-1) but it did not work and I got this error.
Screen Shot 2019-03-14 at 2.06.05 AM.png
Torsten
Torsten le 14 Mar 2019
It is impossible to load your screenshots into MATLAB.
So please include your complete code as plain text and use the CODE button to format it.
Talal Alharbi
Talal Alharbi le 10 Avr 2019
I found the minimize, but I could not find the maximize for the same code, Could you help me, please?
Torsten
Torsten le 10 Avr 2019
If you use
objective=@(x) -(x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+x(8));
you maximize the expression
x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+x(8)
TALAL ALHARBI
TALAL ALHARBI le 10 Avr 2019
Actually, I did but it does give me the different value.
Torsten
Torsten le 10 Avr 2019
What do you mean by "different value" ? Different to what ?
Talal Alharbi
Talal Alharbi le 14 Avr 2019
I attached the code. The problem when I try to find the upper bound (max) which after I multply by (-)Screen Shot 2019-04-14 at 3.09.01 PM.png

Connectez-vous pour commenter.

 Réponse acceptée

David Wilson
David Wilson le 10 Avr 2019

0 votes

Are you confusing x0, the start guess with x(0), which does not exist. In your constraint, you write x(0). If that is really what you want, then you need to roll your indices on by one. But somehow I doubt it. If you hadpasted your code, I'd have taken a look at it.

3 commentaires

Talal Alharbi
Talal Alharbi le 14 Avr 2019
x0 it is ok , there is no effect of it. But (the maximize) I could not find it when I change the obejctive function to negative.
Walter Roberson
Walter Roberson le 14 Avr 2019
You assign the output of the first fmincon() call to a pair of variables named x and fmincon . When you do that, fmincon becomes a numeric scalar instead of a function, and the [x,fval] = fmincon(etc) that you have becomes a request to index into the scalar named fmincon and somehow return two different variables from that, which is not possible from an indexing operation.
Talal Alharbi
Talal Alharbi le 14 Avr 2019
Ok, I got it. Thank you so much. :)

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by