Skip to content

Commit

Permalink
Merge pull request #162 from Argonne-National-Laboratory/dro
Browse files Browse the repository at this point in the history
fixed the Wasserstein order-p
  • Loading branch information
kibaekkim authored Nov 18, 2020
2 parents aa98e64 + fd0fe00 commit ba1d50d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
27 changes: 19 additions & 8 deletions src/Model/StoModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,7 @@ DSP_RTN_CODE StoModel::setWassersteinAmbiguitySet(double lp_norm, double eps)
return DSP_RTN_ERR;
}

wass_eps_ = eps;
wass_eps_ = pow(eps, lp_norm);
isdro_ = true;

/** Count the number of reference scenarios.
Expand Down Expand Up @@ -502,29 +502,40 @@ DSP_RTN_CODE StoModel::setWassersteinAmbiguitySet(double lp_norm, double eps)
{
for (int j = 0; j < ncols_[1]; ++j)
{
wass_dist_[r][ss] += pow(fabs((*obj_scen_[s])[j] - (*obj_scen_[ss])[j]), lp_norm);
wass_dist_[r][ss] += pow(fabs((*obj_scen_[s])[j] - (*obj_scen_[ss])[j]), 2);
if ((*clbd_scen_[s])[j] > -1.e+20 && (*clbd_scen_[ss])[j] > -1.e+20)
wass_dist_[r][ss] += pow(fabs((*clbd_scen_[s])[j] - (*clbd_scen_[ss])[j]), lp_norm);
wass_dist_[r][ss] += pow(fabs((*clbd_scen_[s])[j] - (*clbd_scen_[ss])[j]), 2);
if ((*cubd_scen_[s])[j] < 1.e+20 && (*cubd_scen_[ss])[j] < 1.e+20)
wass_dist_[r][ss] += pow(fabs((*cubd_scen_[s])[j] - (*cubd_scen_[ss])[j]), lp_norm);
wass_dist_[r][ss] += pow(fabs((*cubd_scen_[s])[j] - (*cubd_scen_[ss])[j]), 2);
}
for (int i = 0; i < nrows_[1]; ++i)
{
if ((*rlbd_scen_[s])[i] > -1.e+20 && (*rlbd_scen_[ss])[i] > -1.e+20)
wass_dist_[r][ss] += pow(fabs((*rlbd_scen_[s])[i] - (*rlbd_scen_[ss])[i]), lp_norm);
wass_dist_[r][ss] += pow(fabs((*rlbd_scen_[s])[i] - (*rlbd_scen_[ss])[i]), 2);
if ((*rubd_scen_[s])[i] < 1.e+20 && (*rubd_scen_[ss])[i] < 1.e+20)
wass_dist_[r][ss] += pow(fabs((*rubd_scen_[s])[i] - (*rubd_scen_[ss])[i]), lp_norm);
wass_dist_[r][ss] += pow(fabs((*rubd_scen_[s])[i] - (*rubd_scen_[ss])[i]), 2);
for (int j = 0; j < mat_scen_[s]->getNumCols(); ++j)
{
wass_dist_[r][ss] += pow(fabs(mat_scen_[s]->getCoefficient(i, j) - mat_scen_[ss]->getCoefficient(i, j)), lp_norm);
wass_dist_[r][ss] += pow(fabs(mat_scen_[s]->getCoefficient(i, j) - mat_scen_[ss]->getCoefficient(i, j)), 2);
}
}
wass_dist_[r][ss] = pow(wass_dist_[r][ss], 1.0 / lp_norm);
wass_dist_[r][ss] = pow(wass_dist_[r][ss], lp_norm / 2.0);
}
r++;
}
}

/** scaling vector */
double scaling_constant = pow(wass_eps_, 2);
for (int r = 0; r < nrefs_; ++r)
for (int s = 0; s < nscen_; ++s)
scaling_constant += pow(wass_dist_[r][s], 2);
scaling_constant = sqrt(scaling_constant);
wass_eps_ /= scaling_constant;
for (int r = 0; r < nrefs_; ++r)
for (int s = 0; s < nscen_; ++s)
wass_dist_[r][s] /= scaling_constant;

/** Quadratic equations
* TODO: The quadratic objective function and constraints need to be considered.
* - https://github.com/Argonne-National-Laboratory/DSP/issues/155
Expand Down
8 changes: 4 additions & 4 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ if(SCIPLIB)
add_test(NAME scip_farmer_dd COMMAND $ENV{PWD}/src/runDsp --algo dd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108389.9994043)
add_test(NAME scip_farmer_dw COMMAND $ENV{PWD}/src/runDsp --algo dw --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108389.9994043)
add_test(NAME scip_farmer_bd COMMAND $ENV{PWD}/src/runDsp --algo bd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108389.9994043)
add_test(NAME scip_farmer_drbd COMMAND $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -106905)
add_test(NAME scip_farmer_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -106905)
add_test(NAME scip_farmer_drbd COMMAND $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108354)
add_test(NAME scip_farmer_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108354)
add_test(NAME scip_sslp_bd COMMAND $ENV{PWD}/src/runDsp --algo bd --smps ${CMAKE_SOURCE_DIR}/examples/smps/sslp_5_25_50 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -121.6)
add_test(NAME scip_drslp_drbd COMMAND $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/dro/drslp_5_5_5_5 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test 5.60247)
add_test(NAME scip_drslp_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/dro/drslp_5_5_5_5 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test 5.60247)
Expand All @@ -24,7 +24,7 @@ if(CPLEXLIB)
add_test(NAME cpx_farmer_de COMMAND $ENV{PWD}/src/runDsp --algo de --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_cpx.txt --test -108389.9994043)
add_test(NAME cpx_farmer_dd COMMAND $ENV{PWD}/src/runDsp --algo dd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_cpx.txt --test -108389.9994043)
add_test(NAME cpx_farmer_dw COMMAND $ENV{PWD}/src/runDsp --algo dw --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_cpx.txt --test -108389.9994043)
add_test(NAME cpx_farmer_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -106905)
add_test(NAME cpx_farmer_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108354)
add_test(NAME cpx_drslp_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/dro/drslp_5_5_5_5 --param ${CMAKE_SOURCE_DIR}/test/params_cpx.txt --test 5.60247)
add_test(NAME cpx_sslp_BB_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/dro/sslp_5_25_15_BB --param ${CMAKE_SOURCE_DIR}/test/params_cpx.txt --test -98.0703)
add_test(NAME cpx_sslp_BC_drdd COMMAND $ENV{PWD}/src/runDsp --algo drdd --smps ${CMAKE_SOURCE_DIR}/examples/dro/sslp_5_25_15_BC --param ${CMAKE_SOURCE_DIR}/test/params_cpx.txt --test -98.0705)
Expand All @@ -50,7 +50,7 @@ if (MPI_CXX_FOUND)
add_test(NAME scip_farmer_dd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo dd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108389.9994043)
add_test(NAME scip_farmer_dw_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo dw --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108389.9994043)
add_test(NAME scip_farmer_bd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo bd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108389.9994043)
add_test(NAME scip_farmer_drbd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -106905)
add_test(NAME scip_farmer_drbd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/smps/farmer --wassnorm 2 --wasseps 0.1 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -108354)
add_test(NAME scip_sslp_bd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo bd --smps ${CMAKE_SOURCE_DIR}/examples/smps/sslp_5_25_50 --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -121.6)
add_test(NAME scip_sslp_BB_drbd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/dro/sslp_5_25_15_BB --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -98.0703)
add_test(NAME scip_sslp_BC_drbd_mpi COMMAND mpiexec -np 3 $ENV{PWD}/src/runDsp --algo drbd --smps ${CMAKE_SOURCE_DIR}/examples/dro/sslp_5_25_15_BC --param ${CMAKE_SOURCE_DIR}/test/params_scip.txt --test -98.0705)
Expand Down

0 comments on commit ba1d50d

Please sign in to comment.