Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma warning(disable:4996)
- #include "CMscnProblem.h"
- #define PREFIX 4
- CMscnProblem::CMscnProblem()
- {
- i_Dostawca_amount = 1;
- i_Fabryka_amount = 1;
- i_Magazyn_amount = 1;
- i_Sklep_amount = 1;
- d_sd = new double[i_Dostawca_amount];
- d_sf = new double[i_Fabryka_amount];
- d_sm = new double[i_Magazyn_amount];
- d_ss = new double[i_Sklep_amount];
- //cd
- d_cd = new double *[i_Dostawca_amount];
- for (int i = 0; i < i_Dostawca_amount; i++)
- d_cd[i] = new double[i_Fabryka_amount];
- //cf
- d_cf = new double *[i_Fabryka_amount];
- for (int i = 0; i < i_Fabryka_amount; i++)
- d_cf[i] = new double[i_Magazyn_amount];
- //cm
- d_cm = new double *[i_Magazyn_amount];
- for (int i = 0; i < i_Magazyn_amount; i++)
- d_cm[i] = new double[i_Sklep_amount];
- d_prize = new double[i_Sklep_amount];
- d_ud = new double[i_Dostawca_amount];
- d_uf = new double[i_Fabryka_amount];
- d_um = new double[i_Magazyn_amount];
- i_pdSolution_expected_length = 0;
- b_error = false;
- }
- CMscnProblem::~CMscnProblem()
- {
- delete d_sd;
- delete d_sf;
- delete d_sm;
- delete d_ss;
- for (int i = 0; i < i_Dostawca_amount; i++)
- delete d_cd[i];
- for (int i = 0; i < i_Fabryka_amount; i++)
- delete d_cf[i];
- for (int i = 0; i < i_Magazyn_amount; i++)
- delete d_cm[i];
- delete d_cd;
- delete d_cf;
- delete d_cm;
- delete d_prize;
- delete d_ud;
- delete d_uf;
- delete d_um;
- if(pfFile==NULL)
- delete pfFile;
- delete pd_min_max;
- }
- bool CMscnProblem::b_set_Dostawca_amount(int i_amount)
- {
- if (i_amount <= 0)
- return false;
- if (i_amount == i_Dostawca_amount)
- return true;
- b_modify_matrix(&d_cd, i_amount, i_Fabryka_amount, i_Dostawca_amount, i_Fabryka_amount);
- b_modify_table(&d_sd, i_Dostawca_amount, i_amount);
- b_modify_table(&d_ud, i_Dostawca_amount, i_amount);
- i_Dostawca_amount = i_amount;
- return true;
- }
- bool CMscnProblem::b_set_Fabryka_amount(int i_amount)
- {
- if (i_amount < 0)
- return false;
- if (i_amount == i_Fabryka_amount)
- return true;
- b_modify_matrix((&d_cf), i_amount, i_Magazyn_amount, i_Fabryka_amount, i_Magazyn_amount);
- b_modify_matrix(&d_cd, i_Dostawca_amount, i_amount, i_Dostawca_amount, i_Fabryka_amount);
- b_modify_table(&d_sf, i_Fabryka_amount, i_amount);
- b_modify_table(&d_uf, i_Fabryka_amount, i_amount);
- i_Fabryka_amount = i_amount;
- return true;
- }
- bool CMscnProblem::b_set_Magazyn_amount(int i_amount)
- {
- if (i_amount < 0)
- return false;
- if (i_amount == i_Magazyn_amount)
- return true;
- b_modify_matrix(&d_cm, i_amount, i_Sklep_amount, i_Magazyn_amount, i_Sklep_amount);
- b_modify_matrix(&d_cf, i_Fabryka_amount, i_amount, i_Fabryka_amount, i_Magazyn_amount);
- b_modify_table(&d_sm, i_Magazyn_amount, i_amount);
- b_modify_table(&d_um, i_Magazyn_amount, i_amount);
- i_Magazyn_amount = i_amount;
- return true;
- }
- bool CMscnProblem::b_set_Sklep_amount(int i_amount)
- {
- if (i_amount < 0)
- return false;
- if (i_amount == i_Sklep_amount)
- return true;
- b_modify_matrix(&d_cm, i_amount, i_Sklep_amount, i_Magazyn_amount, i_Sklep_amount);
- b_modify_table(&d_ss, i_Sklep_amount, i_amount);
- b_modify_table(&d_prize, i_Sklep_amount, i_amount);
- i_Sklep_amount = i_amount;
- return true;
- }
- bool CMscnProblem::b_set_value_cd_at(double d_value, int i_row, int i_column)
- {
- if (i_row < 0 || i_column < 0 || d_value < 0)
- return false;
- d_cd[i_row][i_column] = d_value;
- return true;
- }
- bool CMscnProblem::b_set_value_cf_at(double d_value, int i_row, int i_column)
- {
- if (i_row < 0 || i_column < 0 || d_value < 0)
- return false;
- d_cf[i_row][i_column] = d_value;
- return true;
- }
- bool CMscnProblem::b_set_value_cm_at(double d_value, int i_row, int i_column)
- {
- if (i_row < 0 || i_column < 0 || d_value < 0)
- return false;
- d_cm[i_row][i_column] = d_value;
- return true;
- }
- bool CMscnProblem::b_set_value_sd_at(double d_value, int i_index)
- {
- if (i_index<0 || d_value < 0)
- return false;
- d_sd[i_index] = d_value;
- return true;
- }
- bool CMscnProblem::b_set_value_sf_at(double d_value, int i_index)
- {
- if (i_index < 0 || d_value < 0)
- return false;
- d_sf[i_index] = d_value;
- return true;
- }
- bool CMscnProblem::b_set_value_sm_at(double d_value, int i_index)
- {
- if (i_index < 0 || d_value < 0)
- return false;
- d_sm[i_index] = d_value;
- return true;
- }
- bool CMscnProblem::b_set_value_ss_at(double d_value, int i_index)
- {
- if (i_index < 0 || d_value < 0)
- return false;
- d_ss[i_index] = d_value;
- return true;
- }
- double CMscnProblem::d_Get_Quality(double *pdSolution, bool &error)
- {
- i_pdSolution_expected_length = PREFIX + (i_Dostawca_amount*i_Fabryka_amount) + (i_Fabryka_amount*i_Magazyn_amount) + (i_Magazyn_amount*i_Sklep_amount);
- i_pdSolution_length = PREFIX + (pdSolution[0] * pdSolution[1]) + (pdSolution[1] * pdSolution[2]) + (pdSolution[2] * pdSolution[3]);
- if (i_pdSolution_expected_length != i_pdSolution_length)
- {
- error = true;
- return 0;
- }
- b_error = false;
- double d_quality = 0;
- d_quality -= d_get_transport_cost(pdSolution);
- if (b_error == true)
- {
- error = b_error;
- return d_quality;
- }
- d_quality += d_get_income(pdSolution);
- d_quality -= d_get_intrest_cost(pdSolution);
- error = b_error;
- return d_quality;
- }
- double CMscnProblem::d_get_transport_cost(double *pdSolution)
- {
- double d_suma = 0;
- int i_counter = PREFIX;
- for(int i=0; i<i_Dostawca_amount; i++)
- for (int j = 0; j < i_Fabryka_amount; j++) {
- if (d_cd[i][j] == NULL || pdSolution[i_counter] == NULL || pdSolution[i_counter]<0)
- {
- b_error = true;
- return d_suma;
- }
- d_suma += d_cd[i][j] * pdSolution[i_counter];
- i_counter++;
- }
- for(int i=0; i<i_Fabryka_amount; i++)
- for (int j = 0; j < i_Magazyn_amount; j++) {
- if (d_cf[i][j] == NULL || pdSolution[i_counter] == NULL || pdSolution[i_counter] < 0)
- {
- b_error = true;
- return d_suma;
- }
- d_suma += d_cf[i][j] * pdSolution[i_counter];
- i_counter++;
- }
- for(int i=0; i<i_Magazyn_amount; i++)
- for (int j = 0; j < i_Sklep_amount; j++){
- if (d_cm[i][j] == NULL || pdSolution[i_counter] == NULL || pdSolution[i_counter] < 0)
- {
- b_error = true;
- return d_suma;
- }
- d_suma += d_cm[i][j] * pdSolution[i_counter];
- i_counter++;
- }
- return d_suma;
- }
- double CMscnProblem::d_get_intrest_cost(double *pdSolution)
- {
- double d_suma = 0;
- int i_counter = PREFIX;
- bool b_done = false;
- for (int i = 0; i < i_Dostawca_amount; i++) {
- for (int j = 0; (j < i_Fabryka_amount && b_done==false); j++)
- {
- if (pdSolution[i_counter] > 0)
- b_done = true;
- i_counter++;
- }
- if (b_done == true)
- d_suma += d_ud[i];
- b_done = false;
- }
- i_counter = PREFIX + i_Dostawca_amount * i_Fabryka_amount ;
- for (int i = 0; i < i_Fabryka_amount; i++) {
- for (int j = 0; (j < i_Magazyn_amount && b_done == false); j++)
- {
- if (pdSolution[i_counter] > 0)
- b_done = true;
- i_counter++;
- }
- if (b_done == true)
- d_suma += d_uf[i];
- b_done = false;
- }
- i_counter = PREFIX + (i_Dostawca_amount*i_Fabryka_amount) + (i_Fabryka_amount*i_Magazyn_amount) ;
- for (int i = 0; i < i_Magazyn_amount; i++) {
- for (int j = 0; (j < i_Sklep_amount && b_done == false); j++)
- {
- if (pdSolution[i_counter] > 0)
- b_done = true;
- }
- if (b_done == true)
- d_suma += d_um[i];
- b_done = false;
- }
- return d_suma;
- }
- double CMscnProblem::d_get_income(double *pdSolution)
- {
- double d_suma = 0;
- int i_counter = PREFIX + (i_Dostawca_amount*i_Fabryka_amount) + (i_Magazyn_amount*i_Fabryka_amount) ;
- for(int i=0; i<i_Magazyn_amount; i++)
- for (int j = 0; j < i_Sklep_amount; j++)
- {
- d_suma += d_prize[j] * pdSolution[i_counter];
- i_counter++;
- }
- return d_suma;
- }
- bool CMscnProblem::b_ConstraintsSatisfied(double *pdSolution, bool &error)
- {
- int i_counter = PREFIX;
- double d_suma = 0;
- double *d_fabryka_value;
- d_fabryka_value = new double[i_Fabryka_amount];
- for (int i = 0; i < i_Fabryka_amount; i++)
- d_fabryka_value[i] = 0;
- for (int i = 0; i < i_Dostawca_amount; i++)
- {
- for (int j = 0; j < i_Fabryka_amount; j++)
- {
- d_fabryka_value[j] += pdSolution[i_counter];
- d_suma += pdSolution[i_counter];
- i_counter++;
- }
- if (d_suma > d_sd[i])
- return false;
- d_suma = 0;
- }
- double *d_magazyn_value;
- d_magazyn_value = new double[i_Magazyn_amount];
- for (int i = 0; i < i_Magazyn_amount; i++)
- d_magazyn_value[i] = 0;
- for (int i = 0; i < i_Fabryka_amount; i++)
- {
- for (int j = 0; j < i_Magazyn_amount; j++)
- {
- d_magazyn_value[j] += pdSolution[i_counter];
- d_suma += pdSolution[i_counter];
- i_counter++;
- }
- if (d_fabryka_value[i] < d_suma)
- return false;
- if (d_suma > d_sf[i])
- return false;
- d_suma = 0;
- }
- double *d_sklep_value;
- d_sklep_value= new double[i_Sklep_amount];
- for (int i = 0; i < i_Sklep_amount; i++)
- d_sklep_value[i] = 0;
- for (int i = 0; i < i_Magazyn_amount; i++)
- {
- for (int j = 0; j < i_Sklep_amount; j++)
- {
- d_sklep_value[j] += pdSolution[i_counter];
- d_suma += pdSolution[i_counter];
- i_counter++;
- }
- if (d_magazyn_value[i] < d_suma)
- return false;
- if (d_suma > d_sm[i])
- return false;
- d_suma = 0;
- }
- for (int i = 0; i < i_Sklep_amount; i++)
- {
- if (d_sklep_value[i] > d_ss[i])
- return false;
- }
- delete d_fabryka_value;
- delete d_sklep_value;
- delete d_magazyn_value;
- return true;
- }
- bool CMscnProblem::b_save(std::string s_file_name, double *pdSolution)
- {
- if (s_file_name == "")
- return false;
- pfFile = fopen(s_file_name.c_str(), "w+");
- if (pfFile != NULL) {
- fprintf(pfFile, "%s %d\n", "D", i_Dostawca_amount);
- fprintf(pfFile, "%s %d\n", "F", i_Fabryka_amount);
- fprintf(pfFile, "%s %d\n", "M", i_Magazyn_amount);
- fprintf(pfFile, "%s %d\n", "S", i_Sklep_amount);
- int i_counter = PREFIX;
- fprintf(pfFile, "xd\n");
- for (int i = 0; i < i_Dostawca_amount; i++) {
- for (int j = 0; j < i_Fabryka_amount; j++) {
- fprintf(pfFile, "%g;", pdSolution[i_counter]);
- i_counter++;
- }
- fprintf(pfFile, "\n");
- }
- fprintf(pfFile, "xf\n");
- for (int i = 0; i < i_Fabryka_amount; i++) {
- for (int j = 0; j < i_Magazyn_amount; j++) {
- fprintf(pfFile, "%g;", pdSolution[i_counter]);
- i_counter++;
- }
- fprintf(pfFile, "\n");
- }
- fprintf(pfFile, "xm\n");
- for (int i = 0; i < i_Magazyn_amount; i++) {
- for (int j = 0; j < i_Sklep_amount; j++) {
- fprintf(pfFile, "%g;", pdSolution[i_counter]);
- i_counter++;
- }
- fprintf(pfFile, "\n");
- }
- fclose(pfFile);
- return true;
- }
- else
- {
- return false;
- }
- }
- bool CMscnProblem::b_save_object(std::string s_file_name)
- {
- if (s_file_name == "")
- return false;
- pfFile = fopen(s_file_name.c_str(), "w+");
- if (pfFile != NULL) {
- fprintf(pfFile, "%s %d\n", "D", i_Dostawca_amount);
- fprintf(pfFile, "%s %d\n", "F", i_Fabryka_amount);
- fprintf(pfFile, "%s %d\n", "M", i_Magazyn_amount);
- fprintf(pfFile, "%s %d\n", "S", i_Sklep_amount);
- fprintf(pfFile, "sd\n");
- for (int i = 0; i < i_Dostawca_amount; i++)
- fprintf(pfFile, "%g ", d_sd[i]);
- fprintf(pfFile, "\nsf\n");
- for (int i = 0; i < i_Fabryka_amount; i++)
- fprintf(pfFile, "%g ", d_sf[i]);
- fprintf(pfFile, "\nsm\n");
- for (int i = 0; i < i_Magazyn_amount; i++)
- fprintf(pfFile, "%g ", d_sm[i]);
- fprintf(pfFile, "\nss\n");
- for (int i = 0; i < i_Sklep_amount; i++)
- fprintf(pfFile, "%g ", d_ss[i]);
- fprintf(pfFile, "\ncd\n");
- for (int i = 0; i < i_Dostawca_amount; i++) {
- for (int j = 0; j < i_Fabryka_amount; j++)
- fprintf(pfFile, "%g ", d_cd[i][j]);
- fprintf(pfFile, "\n");
- }
- fprintf(pfFile, "cf\n");
- for (int i = 0; i < i_Fabryka_amount; i++) {
- for (int j = 0; j < i_Magazyn_amount; j++)
- fprintf(pfFile, "%g ", d_cf[i][j]);
- fprintf(pfFile, "\n");
- }
- fprintf(pfFile, "cm\n");
- for (int i = 0; i < i_Magazyn_amount; i++) {
- for (int j = 0; j < i_Sklep_amount; j++)
- fprintf(pfFile, "%g ", d_cm[i][j]);
- fprintf(pfFile, "\n");
- }
- fprintf(pfFile, "ud\n");
- for (int i = 0; i < i_Dostawca_amount; i++)
- fprintf(pfFile, "%g ", d_ud[i]);
- fprintf(pfFile, "\nuf\n");
- for (int i = 0; i < i_Fabryka_amount; i++)
- fprintf(pfFile, "%g ", d_uf[i]);
- fprintf(pfFile, "\num\n");
- for (int i = 0; i < i_Magazyn_amount; i++)
- fprintf(pfFile, "%g ", d_um[i]);
- fprintf(pfFile, "\np\n");
- for (int i = 0; i < i_Sklep_amount; i++)
- fprintf(pfFile, "%g ", d_prize[i]);
- fprintf(pfFile, "\nxdminmax\n");
- for (int i = 0; i < 2 * i_Dostawca_amount*i_Fabryka_amount; i++)
- fprintf(pfFile, "%g ", pd_min_max->at(i));
- fprintf(pfFile, "\nxfminmax\n");
- for (int i = 2 * i_Dostawca_amount*i_Fabryka_amount; i < 2 * i_Dostawca_amount*i_Fabryka_amount + 2 * i_Fabryka_amount*i_Magazyn_amount; i++)
- fprintf(pfFile, "%g ", pd_min_max->at(i));
- fprintf(pfFile, "\nxmminmax\n");
- for (int i = 2 * i_Dostawca_amount*i_Fabryka_amount + 2 * i_Fabryka_amount*i_Magazyn_amount; i < pd_min_max->size(); i++)
- fprintf(pfFile, "%g ", pd_min_max->at(i));
- fclose(pfFile);
- return true;
- }
- else {
- return false;
- };
- }
- bool CMscnProblem::b_load(std::string s_file_name) {
- if (s_file_name == "")
- return false;
- pfFile = fopen(s_file_name.c_str(), "r");
- if (pfFile != NULL) {
- char cBuf[100];
- int iBuf;
- fscanf(pfFile, "%s", cBuf);
- fscanf(pfFile, "%d", &iBuf);
- if (i_Dostawca_amount != iBuf)
- b_set_Dostawca_amount(iBuf);
- fscanf(pfFile, "%s", cBuf);
- fscanf(pfFile, "%d", &iBuf);
- if (i_Fabryka_amount != iBuf)
- b_set_Fabryka_amount(iBuf);
- fscanf(pfFile, "%s", cBuf);
- fscanf(pfFile, "%d", &iBuf);
- if (i_Magazyn_amount != iBuf)
- b_set_Magazyn_amount(iBuf);
- fscanf(pfFile, "%s", cBuf);
- fscanf(pfFile, "%d", &iBuf);
- if (i_Sklep_amount != iBuf)
- b_set_Sklep_amount(iBuf);
- float fBuf;
- char cbuf;
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Dostawca_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_sd[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Fabryka_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_sf[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Magazyn_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_sm[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Sklep_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_ss[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Dostawca_amount; i++)
- for (int j = 0; j < i_Fabryka_amount; j++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_cd[i][j] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Fabryka_amount; i++)
- for (int j = 0; j < i_Magazyn_amount; j++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_cf[i][j] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Magazyn_amount; i++)
- for (int j = 0; j < i_Sklep_amount; j++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_cm[i][j] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Dostawca_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_ud[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Fabryka_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_uf[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Magazyn_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_um[i] = fBuf;
- }
- fscanf(pfFile, "%s", cBuf);
- for (int i = 0; i < i_Sklep_amount; i++) {
- fscanf(pfFile, "%f", &fBuf);
- fscanf(pfFile, "%c", &cbuf);
- if (cbuf != ';') { fclose(pfFile); return false; }
- d_prize[i] = fBuf;
- }
- fclose(pfFile);
- return true;
- }
- else {
- return false;
- }
- }
- bool CMscnProblem::b_modify_table(double **d_old_table, int i_old_size, int i_new_size)
- {
- if (d_old_table == NULL || i_old_size <= 0 || i_new_size <= 0)
- return false;
- else
- {
- double *d_new_table = new double[i_new_size];
- if (i_old_size > i_new_size) {
- for (int i = 0; i < i_new_size; i++) {
- d_new_table[i] = (*d_old_table)[i];
- }
- }
- else {
- for (int i = 0; i < i_old_size; i++) {
- d_new_table[i] = (*d_old_table)[i];
- }
- }
- delete *d_old_table;
- *d_old_table = d_new_table;
- }
- return true;
- }
- bool CMscnProblem::b_modify_matrix(double ***d_old_matrix, int i_new_rows, int i_new_columns, int i_old_rows, int i_old_columns)
- {
- bool b_error = true;
- double **d_new_matrix = new double*[i_new_rows];
- for (int i = 0; i < i_new_rows; i++) {
- d_new_matrix[i] = new double[i_new_columns];
- }
- if (i_new_rows >= i_old_rows && i_new_columns >= i_old_columns) {
- b_error=b_copy_values_of_matrix(&d_new_matrix, d_old_matrix, i_old_rows, i_old_columns);
- }
- else
- if (i_new_rows < i_old_rows && i_new_columns >= i_old_columns) {
- b_error=b_copy_values_of_matrix(&d_new_matrix, d_old_matrix, i_new_rows, i_old_columns);
- }
- else if (i_new_rows >= i_old_rows && i_new_columns < i_old_columns) {
- b_error=b_copy_values_of_matrix(&d_new_matrix, d_old_matrix, i_old_rows, i_new_columns);
- }
- else {
- b_error=b_copy_values_of_matrix(&d_new_matrix, d_old_matrix, i_new_rows, i_new_columns);
- }
- if (b_error == false)
- return false;
- for (int i = 0; i < i_old_rows; i++)
- delete[] (*d_old_matrix)[i];
- delete[] (*d_old_matrix);
- *d_old_matrix = d_new_matrix;
- return true;
- }
- bool CMscnProblem::b_copy_values_of_matrix(double ***d_old_matrix, double ***d_new_matrix, int i_rows, int i_columns)
- {
- if (d_old_matrix == NULL || d_new_matrix == NULL)
- return false;
- else
- {
- for (int i = 0; i < i_rows; i++)
- for (int j = 0; j < i_columns; j++)
- (*d_old_matrix)[i][j] = (*d_new_matrix)[i][j];
- }
- return true;
- }
- void CMscnProblem::v_get_min_max(double *pdSolution)
- {
- std::vector<double> *temp_min_max = new std::vector<double>;
- int iSuppliersFactories = i_Dostawca_amount * i_Fabryka_amount;
- for (int i = 0; i < i_Dostawca_amount; i++)
- for (int j = 0; j < i_Fabryka_amount; j++) {
- temp_min_max->push_back(0);
- temp_min_max->push_back(d_sd[i]);
- }
- for (int i = 0; i < i_Fabryka_amount; i++)
- for (int j = 0; j < i_Magazyn_amount; j++) {
- temp_min_max->push_back(0);
- temp_min_max->push_back(d_sf[i]);
- }
- for (int i = 0; i < i_Magazyn_amount; i++)
- for (int j = 0; j < i_Sklep_amount; j++) {
- temp_min_max->push_back(0);
- temp_min_max->push_back(d_sm[i]);
- }
- pd_min_max = temp_min_max;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement