NEAR-LINEAR OPTIMIZATION TOOL SENSITIVITY ANALYSIS
2008/01/16 | J. SCHOENMAEKERS | NEW
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(optgra), | intent(inout) | :: | me | |||
| integer(kind=ip), | intent(out) | :: | Consta(me%Numcon) |
CONSTRAINT STATUS (0=PAS 1=ACT) |
||
| real(kind=wp), | intent(out) | :: | Concon(me%Numcon+1,me%Numcon) |
SENSITIVITY OF CONTRAINTS+MERIT W.R.T. ACTIVE CONSTRAINTS |
||
| real(kind=wp), | intent(out) | :: | Convar(me%Numcon+1,me%Numvar) |
SENSITIVITY OF CONTRAINTS+MERIT W.R.T. PARAMETERS |
||
| real(kind=wp), | intent(out) | :: | Varcon(me%Numvar,me%Numcon) |
SENSITIVITY OF VARIABLES W.R.T. ACTIVE CONSTRAINTS |
||
| real(kind=wp), | intent(out) | :: | Varvar(me%Numvar,me%Numvar) |
SENSITIVITY OF VARIABLES W.R.T. PARAMETERS -> NOT SCALED |
subroutine ogsens(me,Consta,Concon,Convar,Varcon,Varvar) !! NEAR-LINEAR OPTIMIZATION TOOL SENSITIVITY ANALYSIS !! !! 2008/01/16 | J. SCHOENMAEKERS | NEW class(optgra),intent(inout) :: me integer(ip),intent(out) :: Consta(me%Numcon) !! CONSTRAINT STATUS (0=PAS 1=ACT) real(wp),intent(out) :: Concon(me%Numcon+1,me%Numcon) !! SENSITIVITY OF CONTRAINTS+MERIT W.R.T. ACTIVE CONSTRAINTS real(wp),intent(out) :: Convar(me%Numcon+1,me%Numvar) !! SENSITIVITY OF CONTRAINTS+MERIT W.R.T. PARAMETERS real(wp),intent(out) :: Varcon(me%Numvar,me%Numcon) !! SENSITIVITY OF VARIABLES W.R.T. ACTIVE CONSTRAINTS real(wp),intent(out) :: Varvar(me%Numvar,me%Numvar) !! SENSITIVITY OF VARIABLES W.R.T. PARAMETERS !! -> NOT SCALED real(wp) :: val , sca integer(ip) :: var , con , act , par , ind , typ ! CONVERGED Consta = 0 do act = 1 , me%Numact con = me%Actcon(act) Consta(con) = 1 end do ! SENSITIVITY OF CONTRAINTS W.R.T. ACTIVE CONSTRAINTS Concon = 0.0_wp do con = 1 , me%Numcon + 1 if ( me%Conact(con)>0 ) Concon(con,con) = 1.0_wp if ( me%Conact(con)>0 ) cycle me%Conref = me%Conred(con,1:me%Numact) me%Conref = me%ogrigt(me%Conref) do act = 1 , me%Numact ind = me%Actcon(act) Concon(con,ind) = -me%Conref(act) end do end do ! SENSITIVITY OF CONSTRAINTS W.R.T. PARAMETERS Convar = 0.0_wp do con = 1 , me%Numcon + 1 if ( me%Conact(con)>0 ) cycle do var = 1 , me%Numvar if ( me%Vartyp(var)==0 ) cycle val = me%Sender(con,var) do act = 1 , me%Numact ind = me%Actcon(act) val = val + Concon(con,ind)*me%Sender(ind,var) end do Convar(con,var) = val end do end do ! SENSITIVITY OF VARIABLES W.R.T. ACTIVE CONSTRAINTS Varcon = 0.0_wp do var = 1 , me%Numvar if ( me%Vartyp(var)/=0 ) cycle do act = 1 , me%Numact con = me%Actcon(act) me%Conref(act) = me%Conder(con,var) end do me%Conref = me%ogleft(me%Conref) me%Conref = me%ogrigt(me%Conref) do act = 1 , me%Numact con = me%Actcon(act) Varcon(var,con) = -me%Conref(act) end do end do ! SENSITIVITY OF VARIABLES W.R.T. PARAMETERS Varvar = 0.0_wp do par = 1 , me%Numvar Varvar(par,par) = 1.0_wp if ( me%Vartyp(par)/=1 ) cycle do var = 1 , me%Numvar if ( me%Vartyp(var)/=0 ) cycle val = 0.0_wp do act = 1 , me%Numact con = me%Actcon(act) val = val + Varcon(var,con)*me%Sender(con,par) end do Varvar(var,par) = val end do end do ! DESCALE SENSITIVITY do con = 1 , me%Numcon + 1 typ = me%Contyp(con) sca = me%Consca(con) if ( typ<0 ) sca = -sca Convar(con,1:me%Numvar) = Convar(con,1:me%Numvar)*sca Concon(con,1:me%Numcon) = Concon(con,1:me%Numcon)*sca if ( con>me%Numcon ) cycle Varcon(1:me%Numvar,con) = Varcon(1:me%Numvar,con)/sca Concon(1:me%Numcon+1,con) = Concon(1:me%Numcon+1,con)/sca end do do var = 1 , me%Numvar sca = me%Varsca(var) Varcon(var,1:me%Numcon) = Varcon(var,1:me%Numcon)*sca Varvar(var,1:me%Numvar) = Varvar(var,1:me%Numvar)*sca Convar(1:me%Numcon+1,var) = Convar(1:me%Numcon+1,var)/sca Varvar(1:me%Numvar,var) = Varvar(1:me%Numvar,var)/sca end do end subroutine ogsens