@@ -831,6 +831,8 @@ SCIP_Real Stabilization::calculateSubgradientProduct(
831
831
}
832
832
833
833
/* extended master conss */
834
+ GCG_PRICINGMODIFICATION** pricingmods;
835
+ int block;
834
836
for ( int i = 0 ; i < nstabcenterextendedmasterconss; ++i )
835
837
{
836
838
SCIP_COL** cols;
@@ -885,18 +887,15 @@ SCIP_Real Stabilization::calculateSubgradientProduct(
885
887
gradientproduct -= (dual - stabcenterextendedmasterconsvals[i]) * val;
886
888
}
887
889
888
- for ( int block = 0 ; block < GCGgetNPricingprobs (gcg); block++ )
890
+ pricingmods = GCGextendedmasterconsGetPricingModifications (tmpextendedmasterconsdata);
891
+ for ( int j = 0 ; j < GCGextendedmasterconsGetNPricingModifications (tmpextendedmasterconsdata); j++ )
889
892
{
890
- if ( !GCGisPricingprobRelevant (gcg, block) )
891
- continue ;
892
-
893
- GCG_PRICINGMODIFICATION* pricingmod = GCGextendedmasterconsGetPricingModification (gcg, tmpextendedmasterconsdata, block);
894
- if ( pricingmod == NULL )
895
- continue ;
896
-
893
+ block = GCGpricingmodificationGetBlock (pricingmods[j]);
894
+ assert (pricingmods[j] != NULL );
895
+ assert (GCGisPricingprobRelevant (gcg, block));
897
896
assert (pricingcols[block] != NULL );
898
897
899
- SCIP_VAR* pricingvar = GCGpricingmodificationGetCoefVar (pricingmod );
898
+ SCIP_VAR* pricingvar = GCGpricingmodificationGetCoefVar (pricingmods[j] );
900
899
assert (GCGvarIsInferredPricing (pricingvar));
901
900
val = GCGcolGetSolVal (pricingcols[block], pricingvar);
902
901
assert (!SCIPisInfinity (masterprob, ABS (val)));
@@ -915,10 +914,10 @@ SCIP_Real Stabilization::calculateSubgradientProduct(
915
914
SCIP_VAR* mastervar;
916
915
SCIP_VAR* pricingvar;
917
916
SCIP_CONS* linkingcons = linkingconss[i];
918
- int block = linkingconsblocks[i];
919
917
mastervar = SCIPgetVarsLinear (masterprob, linkingcons)[0 ];
920
918
assert (GCGvarIsMaster (mastervar));
921
919
920
+ block = linkingconsblocks[i];
922
921
pricingvar = GCGlinkingVarGetPricingVars (GCGmasterVarGetOrigvars (mastervar)[0 ])[block];
923
922
assert (GCGvarIsPricing (pricingvar));
924
923
@@ -948,7 +947,7 @@ SCIP_Real Stabilization::calculateSubgradientProduct(
948
947
/* * calculates the subgradient (with linking variables) */
949
948
SCIP_RETCODE Stabilization::calculateSubgradient (
950
949
GCG_COL** pricingcols /* *< columns of the pricing problems */
951
- )
950
+ )
952
951
{
953
952
SCIP* origprob = GCGgetOrigprob (gcg);
954
953
SCIP_CONS** origmasterconss = GCGgetOrigMasterConss (gcg);
@@ -1109,6 +1108,8 @@ SCIP_RETCODE Stabilization::calculateSubgradient(
1109
1108
}
1110
1109
1111
1110
/* extended master conss */
1111
+ GCG_PRICINGMODIFICATION** pricingmods;
1112
+ int block;
1112
1113
for ( int i = 0 ; i < nsubgradientextendedmasterconss; ++i )
1113
1114
{
1114
1115
SCIP_COL** cols;
@@ -1149,18 +1150,15 @@ SCIP_RETCODE Stabilization::calculateSubgradient(
1149
1150
activity += val;
1150
1151
}
1151
1152
1152
- for ( int block = 0 ; block < GCGgetNPricingprobs (gcg); block++ )
1153
+ pricingmods = GCGextendedmasterconsGetPricingModifications (tmpextendedmasterconsdata);
1154
+ for ( int j = 0 ; j < GCGextendedmasterconsGetNPricingModifications (tmpextendedmasterconsdata); j++ )
1153
1155
{
1154
- if ( !GCGisPricingprobRelevant (gcg, block) )
1155
- continue ;
1156
-
1157
- GCG_PRICINGMODIFICATION* pricingmod = GCGextendedmasterconsGetPricingModification (gcg, tmpextendedmasterconsdata, block);
1158
- if ( pricingmod == NULL )
1159
- continue ;
1160
-
1156
+ block = GCGpricingmodificationGetBlock (pricingmods[j]);
1157
+ assert (pricingmods[j] != NULL );
1158
+ assert (GCGisPricingprobRelevant (gcg, block));
1161
1159
assert (pricingcols[block] != NULL );
1162
1160
1163
- SCIP_VAR* pricingvar = GCGpricingmodificationGetCoefVar (pricingmod );
1161
+ SCIP_VAR* pricingvar = GCGpricingmodificationGetCoefVar (pricingmods[j] );
1164
1162
assert (GCGvarIsInferredPricing (pricingvar));
1165
1163
val = GCGcolGetSolVal (pricingcols[block], pricingvar);
1166
1164
assert (!SCIPisInfinity (masterprob, ABS (val)));
@@ -1193,12 +1191,12 @@ SCIP_RETCODE Stabilization::calculateSubgradient(
1193
1191
SCIP_VAR* mastervar;
1194
1192
SCIP_VAR* pricingvar;
1195
1193
SCIP_CONS* linkingcons = linkingconss[i];
1196
- int block = linkingconsblocks[i];
1197
1194
SCIP_Real activity;
1198
1195
SCIP_Real infeasibility;
1199
1196
mastervar = SCIPgetVarsLinear (masterprob, linkingcons)[0 ];
1200
1197
assert (GCGvarIsMaster (mastervar));
1201
1198
1199
+ block = linkingconsblocks[i];
1202
1200
pricingvar = GCGlinkingVarGetPricingVars (GCGmasterVarGetOrigvars (mastervar)[0 ])[block];
1203
1201
assert (GCGvarIsPricing (pricingvar));
1204
1202
assert (pricingcols[block] != NULL );
0 commit comments