|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
[AMPL 1841] Defining declarations on subscripted variablesSo this this is a simplified version of what I have: ###########START########### model; reset; set OUTCOMES; set SOME_SET; data; set OUTCOMES := foo bar; set SOME_SET := wilma fred; model; var x (SOME_SET} var y {OUTCOMES}; subj to Some_Constraint_1: y["foo"] = 21*x["wilma"] - 11*x["fred"]; subj to Some_Constraint_2: y["bar"] = -9*x["wilma"] - 28 *x["fred"]; /* more stuff follows */ ###########END########### Now what I'd like to do is get rid of the two constraints and just add them to the declaration of y, but I just can't figure out the proper format for doing so. Obviously if y weren't subscripted I could just write something like var y = 21*x["wilma"] - 11*x["fred"] but because of the subscripts I just don't know how to handle it. As always, my apologies if I've missed this in either the FAQ or the AMPL book. Thanks in advance, J. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "AMPL Modeling Language" group. To post to this group, send email to ampl@... To unsubscribe from this group, send email to ampl-unsubscribe@... For more options, visit this group at http://groups.google.com/group/ampl?hl=en -~----------~----~----~----~------~----~------~--~--- |
|
|
[AMPL 1846] Re: Defining declarations on subscripted variablesOne clarification. In the example I've given the y variables are just linear combinations of the x variables. This was merely a simplification, and in general is *not* the case within my model. On Jun 19, 7:35 am, Jacob JKW <jacob...@...> wrote: > So this this is a simplified version of what I have: > > ###########START########### > model; > reset; > > set OUTCOMES; > set SOME_SET; > > data; > set OUTCOMES := foo bar; > set SOME_SET := wilma fred; > > model; > > var x (SOME_SET} > var y {OUTCOMES}; > > subj to Some_Constraint_1: > y["foo"] = 21*x["wilma"] - 11*x["fred"]; > > subj to Some_Constraint_2: > y["bar"] = -9*x["wilma"] - 28 *x["fred"]; > > /* more stuff follows */ > > ###########END########### > > Now what I'd like to do is get rid of the two constraints and just add > them to the declaration of y, but I just can't figure out the proper > format for doing so. > > Obviously if y weren't subscripted I could just write something like > > var y = 21*x["wilma"] - 11*x["fred"] > > but because of the subscripts I just don't know how to handle it. > > As always, my apologies if I've missed this in either the FAQ or the > AMPL book. > > Thanks in advance, > J. You received this message because you are subscribed to the Google Groups "AMPL Modeling Language" group. To post to this group, send email to ampl@... To unsubscribe from this group, send email to ampl-unsubscribe@... For more options, visit this group at http://groups.google.com/group/ampl?hl=en -~----------~----~----~----~------~----~------~--~--- |
|
|
[AMPL 1848] Re: Defining declarations on subscripted variablesSee "Automatic substitution of variables" on pages 399-400 of the AMPL book. This feature is more general than writing "var y {i in OUTCOMES} = ... ;". To use it, try setting "option substout 1;" before solving. As an example, consider your simple problem with some objective function added: set OUTCOMES; set SOME_SET; data; set OUTCOMES := foo bar; set SOME_SET := wilma fred; model; var x {SOME_SET}; var y {OUTCOMES}; minimize obj: sum {i in OUTCOMES} (y[i]-1) ^ 2; subj to Some_Constraint_1: y["foo"] = 21*x["wilma"] - 11*x["fred"]; subj to Some_Constraint_2: y["bar"] = -9*x["wilma"] - 28 *x["fred"]; Solving with option substout 0, four variables are send to the solver: ampl: option substout 0; ampl: solve; 4 variables: 2 nonlinear variables 2 linear variables 2 constraints, all linear; 6 nonzeros 1 nonlinear objective; 2 nonzeros. MINOS 5.5: optimal solution found. 4 iterations, objective 0 Nonlin evals: obj = 8, grad = 7. ampl: display x; display y; x [*] := fred -0.0436681 wilma 0.0247453 ; y [*] := bar 1 foo 1 ; Solving with option substout 1, only two variables (the x-variables) are sent to the solver: ampl: option substout 1; ampl: solve; Substitution eliminates 2 variables. Adjusted problem: 2 variables, all nonlinear 0 constraints 1 nonlinear objective; 2 nonzeros. MINOS 5.5: optimal solution found. 4 iterations, objective 1.972152263e-31 Nonlin evals: obj = 9, grad = 8. ampl: display x; display y; x [*] := fred -0.0436681 wilma 0.0247453 ; y [*] := bar 1 foo 1 ; Similar results are achieved when some of the expressions for the y-variables are nonlinear. Bob Fourer 4er@... > -----Original Message----- > From: ampl@... [mailto:ampl@...] On Behalf Of Jacob > JKW > Sent: Thursday, June 19, 2008 6:36 AM > To: AMPL Modeling Language > Subject: [AMPL 1841] Defining declarations on subscripted variables > > > So this this is a simplified version of what I have: > > ###########START########### > model; > reset; > > set OUTCOMES; > set SOME_SET; > > data; > set OUTCOMES := foo bar; > set SOME_SET := wilma fred; > > model; > > var x (SOME_SET} > var y {OUTCOMES}; > > subj to Some_Constraint_1: > y["foo"] = 21*x["wilma"] - 11*x["fred"]; > > subj to Some_Constraint_2: > y["bar"] = -9*x["wilma"] - 28 *x["fred"]; > > /* more stuff follows */ > > ###########END########### > > Now what I'd like to do is get rid of the two constraints and just add > them to the declaration of y, but I just can't figure out the proper > format for doing so. > > Obviously if y weren't subscripted I could just write something like > > var y = 21*x["wilma"] - 11*x["fred"] > > but because of the subscripts I just don't know how to handle it. > > As always, my apologies if I've missed this in either the FAQ or the > AMPL book. > > > Thanks in advance, > J. > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "AMPL Modeling Language" group. To post to this group, send email to ampl@... To unsubscribe from this group, send email to ampl-unsubscribe@... For more options, visit this group at http://groups.google.com/group/ampl?hl=en -~----------~----~----~----~------~----~------~--~--- |
|
|
|
|
|
[AMPL 1858] Re: Defining declarations on subscripted variablesRodolfo, When substout is turned on, it may cause some linear or mostly-linear constraints to be substituted out, with the result that the problem has fewer variables and constraints but is much more "highly nonlinear" in its expressions. As a result a solver may have more trouble with it. More generally, it is hard to predict the effect of substitutions on solver behavior. Thus we decided to turn on "substout" only when the user asked for it explicitly. Bob Fourer 4er@... > -----Original Message----- > From: ampl@... [mailto:ampl@...] On Behalf Of > Rodolfo Carboni Borrase > Sent: Monday, June 23, 2008 3:27 PM > To: ampl@... > Subject: [AMPL 1856] Re: Defining declarations on subscripted variables > > > Hello Robert, I was wondering why the substout option isn't set to 1 by > default, is there some kind of "adverse" effect of allowing substitution of > variables by their defining constraints? or will it always allow for a > simpler/less complicated model formulation passed to the solver? Thanks! > > Rodolfo > > -----Mensaje original----- > De: ampl@... [mailto:ampl@...]En nombre de > Robert Fourer > Enviado el: viernes, 20 de junio de 2008 19:42 > Para: ampl@...; 'Jacob JKW' > Asunto: [AMPL 1848] Re: Defining declarations on subscripted variables > > > > > See "Automatic substitution of variables" on pages 399-400 of the AMPL book. > This feature is more general than writing "var y {i in OUTCOMES} = ... ;". > To > use it, try setting "option substout 1;" before solving. > > As an example, consider your simple problem with some objective function > added: > > set OUTCOMES; > set SOME_SET; > > data; > set OUTCOMES := foo bar; > set SOME_SET := wilma fred; > > model; > > var x {SOME_SET}; > var y {OUTCOMES}; > > minimize obj: sum {i in OUTCOMES} (y[i]-1) ^ 2; > > subj to Some_Constraint_1: > y["foo"] = 21*x["wilma"] - 11*x["fred"]; > > subj to Some_Constraint_2: > y["bar"] = -9*x["wilma"] - 28 *x["fred"]; > > Solving with option substout 0, four variables are send to the solver: > > ampl: option substout 0; > ampl: solve; > > 4 variables: > 2 nonlinear variables > 2 linear variables > 2 constraints, all linear; 6 nonzeros > 1 nonlinear objective; 2 nonzeros. > > MINOS 5.5: optimal solution found. > 4 iterations, objective 0 > Nonlin evals: obj = 8, grad = 7. > > ampl: display x; display y; > x [*] := > fred -0.0436681 > wilma 0.0247453 > ; > > y [*] := > bar 1 > foo 1 > ; > > Solving with option substout 1, only two variables (the x-variables) are sent > to the solver: > > ampl: option substout 1; > ampl: solve; > > Substitution eliminates 2 variables. > Adjusted problem: > 2 variables, all nonlinear > 0 constraints > 1 nonlinear objective; 2 nonzeros. > > MINOS 5.5: optimal solution found. > 4 iterations, objective 1.972152263e-31 > Nonlin evals: obj = 9, grad = 8. > > ampl: display x; display y; > x [*] := > fred -0.0436681 > wilma 0.0247453 > ; > > y [*] := > bar 1 > foo 1 > ; > > Similar results are achieved when some of the expressions for the y-variables > are nonlinear. > > Bob Fourer > 4er@... > > > > -----Original Message----- > > From: ampl@... [mailto:ampl@...] On Behalf Of > Jacob > > JKW > > Sent: Thursday, June 19, 2008 6:36 AM > > To: AMPL Modeling Language > > Subject: [AMPL 1841] Defining declarations on subscripted variables > > > > > > So this this is a simplified version of what I have: > > > > ###########START########### > > model; > > reset; > > > > set OUTCOMES; > > set SOME_SET; > > > > data; > > set OUTCOMES := foo bar; > > set SOME_SET := wilma fred; > > > > model; > > > > var x (SOME_SET} > > var y {OUTCOMES}; > > > > subj to Some_Constraint_1: > > y["foo"] = 21*x["wilma"] - 11*x["fred"]; > > > > subj to Some_Constraint_2: > > y["bar"] = -9*x["wilma"] - 28 *x["fred"]; > > > > /* more stuff follows */ > > > > ###########END########### > > > > Now what I'd like to do is get rid of the two constraints and just add > > them to the declaration of y, but I just can't figure out the proper > > format for doing so. > > > > Obviously if y weren't subscripted I could just write something like > > > > var y = 21*x["wilma"] - 11*x["fred"] > > > > but because of the subscripts I just don't know how to handle it. > > > > As always, my apologies if I've missed this in either the FAQ or the > > AMPL book. > > > > > > Thanks in advance, > > J. > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "AMPL Modeling Language" group. To post to this group, send email to ampl@... To unsubscribe from this group, send email to ampl-unsubscribe@... For more options, visit this group at http://groups.google.com/group/ampl?hl=en -~----------~----~----~----~------~----~------~--~--- |
| Free Forum Powered by Nabble | Forum Help |