1 Востаннє редагувалося kerimov_e (06.04.2021 15:47:19)

Тема: Транспортна задача

Не можу зрозуміти як зробити так, щоб при виборі методу північно-західного кута + метод оптимизації потенціалів оптимізувало за один клік.
Наприклад: В мене є деяка транспортна задача і я хочу її порахувати методом північно-західного кута, а потім хочу оптимізувати її за допомогою методу потенціалів.

Я написав код, який робить це, але після двух кліків по кнопці "Знаходимо рішення методом потенціалів" видає "План є оптимальним", отже робиться лише кілька ітерацій. Я хочу збільшити кількість ітерацій при розрахунку метод північно-західного кута+методом потенціалів.

При розрахунку методом мінімальних затрат рахує вірноhttps://replace.org.ua/uploads/images/8036/ef2800e6b8a9079d35df05df61ade9ee.png
, а при виборі північно-західного кута ні.https://replace.org.ua/uploads/images/8036/9d76c96f2c076f2bb132e28f08cc4799.png

Інакше кажучи, я хочу, щоб і в методі мін. затрат і в методі північно-західного кута при оптимізації були однакові відповіді  (як це і повинно бути).
Прикріпив увесь проект

Post's attachments

Transport.zip 18.13 kb, 52 downloads since 2021-04-06 

2

Re: Транспортна задача

Прихований текст

ось це "rar" своє приберіть, ми з таким не злигаємось. Або zip, або tar.gz

3

Re: Транспортна задача

FakiNyan написав:
Прихований текст

ось це "rar" своє приберіть, ми з таким не злигаємось. Або zip, або tar.gz

Прибрав :)

Подякували: FakiNyan1

4

Re: Транспортна задача

kerimov_e написав:
if (goods[i, j] != 0 && (Vpotent[i] == 99999 || Upotent[j] == 99999))
{
    if (Vpotent[i] == 99999 && Upotent[j] == 99999)
        continue;
    if (Vpotent[i] != 99999)
    {
        for (int k = 0; k < cost.GetLength(1); k++)
            if (goods[i, k] != 0)
                Upotent[k] = cost[i, k] - Vpotent[i];
    }
    if (Upotent[j] != 99999)
    {
        for (int k = 0; k < cost.GetLength(0); k++)
            if (goods[k, j] != 0)
                Vpotent[k] = cost[k, j] - Upotent[j];
    }
}

Практикуєте окультизм ?

5

Re: Транспортна задача

leofun01 написав:
kerimov_e написав:
if (goods[i, j] != 0 && (Vpotent[i] == 99999 || Upotent[j] == 99999))
{
    if (Vpotent[i] == 99999 && Upotent[j] == 99999)
        continue;
    if (Vpotent[i] != 99999)
    {
        for (int k = 0; k < cost.GetLength(1); k++)
            if (goods[i, k] != 0)
                Upotent[k] = cost[i, k] - Vpotent[i];
    }
    if (Upotent[j] != 99999)
    {
        for (int k = 0; k < cost.GetLength(0); k++)
            if (goods[k, j] != 0)
                Vpotent[k] = cost[k, j] - Upotent[j];
    }
}

Практикуєте окультизм ?

Я знайшов схожий приклад та написав як і там. Я знаю, що це дуже погано написано, дуже неякісний код, але єдина проблема, яку я не можу вирішити на даний момент це оптимизація з методом потенціалів. Навіть адекватного прикладу не знайшов :(