Sərbəst iş №3 Mövzu: Xətti alqoritmlərə aid məsələlərin C++ dilində proqramların tərtibi Fənn: Kompüter sistemlərinin aparat və proqram təminatının əsasları Fakültə: Fizika texnologiyaları İxtisas: Cihaz mühəndisliyi Qrup: 2523a Tələbə: Əlisultanov Sultan



Yüklə 81,98 Kb.
səhifə1/3
tarix05.12.2023
ölçüsü81,98 Kb.
#173834
  1   2   3
Xətti alqoritmlərə aid məsələlərin C dilində proqramların tərtibi




Sərbəst iş №3



  • Mövzu: Xətti alqoritmlərə aid məsələlərin C++ dilində proqramların tərtibi

  • Fənn: Kompüter sistemlərinin aparat və proqram təminatının əsasları

  • Fakültə: Fizika texnologiyaları

  • İxtisas: Cihaz mühəndisliyi

  • Qrup: 2523a

  • Tələbə: Əlisultanov Sultan

  • Müəllim: Quliyeva Xavər



BAKI 2023

Optimallaşdırmanın ən qədim və ən çox istifadə edilən sahələrindən biri xətti optimallaşdırmadır (və ya xətti proqramlaşdırma ), burada məqsəd funksiyası və məhdudiyyətlər xətti ifadələr kimi yazıla bilər. Bu tip problemin sadə bir nümunəsidir.


3x + yAşağıdakı məhdudiyyətlərə uyğun olaraq maksimuma çatdırın :

  1. 0 ≤ x≤ 1

  2. 0 ≤ y≤ 2

  3. x + y≤ 2

Bu nümunədəki məqsəd funksiyası 3x + y. Həm məqsəd funksiyası, həm də məhdudiyyətlər xətti ifadələrlə verilir və bu, xətti problemə çevirir.
Problemin həllində əsas addımlar
Hər bir dil üçün problemi qurmaq və həll etmək üçün əsas addımlar eynidir:

  1. Lazımi kitabxanaları idxal edin,

  2. Həll edəni elan edin,

  3. Dəyişənləri yaradın,

  4. Məhdudiyyətləri müəyyənləşdirin,

  5. Məqsəd funksiyasını təyin edin,

  6. Həlledicini çağırın və

  7. Nəticələri göstərin.

C++ proqramı
Bu bölmə problemi quran və həll edən C++ proqramından keçir.
Qeyd: Tam C++ proqramı və onu işə salmaq üçün addımlar bölmənin sonunda göstərilir.
Budur addımlar:

  • Lazımi kitabxanaları idxal edin.

 #include "ortools/linear_solver/linear_solver.h"
 Həlledicini elan edin.
 // Create the linear solver with the GLOP backend.
std::unique_ptr solver(MPSolver::CreateSolver("GLOP"));
MPSolverhər hansı xətti proqramlaşdırma və ya qarışıq tam proqramlaşdırma məsələlərini həll etmək üçün sarğıdır .
 Dəyişənləri yaradın.
 // Create the variables x and y.
MPVariable* const x = solver->MakeNumVar(0.0, 1, "x");
MPVariable* const y = solver->MakeNumVar(0.0, 2, "y");

LOG(INFO) << "Number of variables = " << solver->NumVariables();


 Məhdudiyyətləri müəyyənləşdirin. İlk iki məhdudiyyət, 0≤ x≤ 1və 0≤ y≤ 2, artıq dəyişənlərin tərifləri ilə müəyyən edilmişdir. Aşağıdakı kod məhdudiyyəti x + y≤ müəyyən edir 2:
 // Create a linear constraint, 0 <= x + y <= 2.
MPConstraint* const ct = solver->MakeRowConstraint(0.0, 2.0, "ct");
ct->SetCoefficient(x, 1);
ct->SetCoefficient(y, 1);

LOG(INFO) << "Number of constraints = " << solver->NumConstraints();


xy
 Məqsəd funksiyasını təyin edin.
 // Create the objective function, 3 * x + y.
MPObjective* const objective = solver->MutableObjective();
objective->SetCoefficient(x, 3);
objective->SetCoefficient(y, 1);
objective->SetMaximization();
 Həlledicini çağırın və nəticələri göstərin.

  • solver->Solve();
    LOG(INFO) << "Solution:" << std::endl;
    LOG(INFO) << "Objective value = " << objective->Value();
    LOG(INFO) << "x = " << x->solution_value();
    LOG(INFO) << "y = " << y->solution_value();


Yüklə 81,98 Kb.

Dostları ilə paylaş:
  1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin