forum.alglib.net

ALGLIB forum
It is currently Fri Dec 02, 2022 7:51 pm

All times are UTC


Forum rules


1. This forum can be used for discussion of both ALGLIB-related and general numerical analysis questions
2. This forum is English-only - postings in other languages will be removed.



Post new topic Reply to topic  [ 8 posts ] 
Author Message
 Post subject: Create a loop for Levenberg–Marquardt algorithm C#
PostPosted: Thu Jul 14, 2022 6:50 am 
Offline

Joined: Tue Jul 12, 2022 7:09 am
Posts: 3
Hello everyone,

When I use optimization package with minlm, my function fvec change with 1 variable ( this variable I store it in an array, this array have 100 components).
The question is that , is there anyway to create a for loop to use minlmoptimize and automatic change function fvec?

For example, in the first loop, fvec is equal to the first value of array, and the second loop, fvec is equal the second value.
The start ting point of second loop is the result of 1st loop.

I don't want to create 100 fvec method manually!!


Top
 Profile  
 
 Post subject: Re: Create a loop for Levenberg–Marquardt algorithm C#
PostPosted: Thu Jul 14, 2022 8:51 am 
Offline
Site Admin

Joined: Fri May 07, 2010 7:06 am
Posts: 880
Hi!

minlmoptimize() function accepts additional parameter which is a System.Object reference in C#, a void* ptr in C++. This parameter is forwarded to your callback "as is", without changes. You can use it to dynamically change behavior of your fvec method, e.g. to tell it to use first variable from array, second one, third one, etc.

E.g. you can create an instance of control structure that tells fvec what to do, and forward a pointer to this structure to fvec using aforementioned mechanism.


Top
 Profile  
 
 Post subject: Re: Create a loop for Levenberg–Marquardt algorithm C#
PostPosted: Thu Jul 14, 2022 1:31 pm 
Offline

Joined: Tue Jul 12, 2022 7:09 am
Posts: 3
Thank you for your fast response.

Howerver, I'm not familiar with the alglib yet. Can you elaborate it more?

Below is my example.
As you can see, the method Getvalue() contains the array. The method fvec1() will get the first 3 of this array, and the next 3 value is for fvec2(), etc.
And the fvec1 and fvec2 are the same template, just different from the value of array.

So, how to create a for loop for calculate the result in Main() which method fvec() can automatic realize the of array's value corresponding with step of the for loop?
I just want to use only 1 fvec, not creating the second one.

Thanks again!

----------------------------------------------------------------------------------------------------
public static double[,] GetValue()
{
double[,] L = { { 806, 806, 806 }, { 607, 607, 607 }, {702, 702, 702} };

return L;
}

public void function_fvec1(double[] p, double[] fi, object obj)
{
// Set static value
double[] a1 = { (-435 * Math.Cos(Math.PI / 6)), (-435 * Math.Sin(Math.PI / 6)), 0 };
double[] a2 = { (435 * Math.Cos(Math.PI / 6)), (-435 * Math.Sin(Math.PI / 6)), 0 };
double[] a3 = { 0, 435, 0 };

// Array of value
double[,] L = GetValue();
double[] l = { L[0, 0], L[0, 1], L[0, 2] };

// This is call back calculation
fi[0] = Math.Pow(a1[0] - p[0] + 35 * Math.Cos(Math.PI / 6), 2) +
Math.Pow(a1[1] - p[1] + 35 * Math.Sin(Math.PI / 6), 2) +
Math.Pow(a1[2] - p[2], 2) -
Math.Pow(l[0], 2);

fi[1] = Math.Pow(a2[0] - p[0] - 35 * Math.Cos(Math.PI / 6), 2) +
Math.Pow(a2[1] - p[0] + 35 * Math.Sin(Math.PI / 6), 2) +
Math.Pow(a2[2] - p[2], 2) -
Math.Pow(l[1], 2);

fi[2] = Math.Pow(a3[0] - p[0], 2) +
Math.Pow(a3[1] - p[1] - 35, 2) +
Math.Pow(a3[2] - p[2], 2) -
Math.Pow(l[2], 2);
}

public void function_fvec2(double[] p, double[] fi, object obj)
{
// Set static value
double[] a1 = { (-435 * Math.Cos(Math.PI / 6)), (-435 * Math.Sin(Math.PI / 6)), 0 };
double[] a2 = { (435 * Math.Cos(Math.PI / 6)), (-435 * Math.Sin(Math.PI / 6)), 0 };
double[] a3 = { 0, 435, 0 };

// Array of value
double[,] L = GetValue();
double[] l = { L[1, 0], L[1, 1], L[1, 2] };

// This is call back calculation
fi[0] = Math.Pow(a1[0] - p[0] + 35 * Math.Cos(Math.PI / 6), 2) +
Math.Pow(a1[1] - p[1] + 35 * Math.Sin(Math.PI / 6), 2) +
Math.Pow(a1[2] - p[2], 2) -
Math.Pow(l[0], 2);

fi[1] = Math.Pow(a2[0] - p[0] - 35 * Math.Cos(Math.PI / 6), 2) +
Math.Pow(a2[1] - p[0] + 35 * Math.Sin(Math.PI / 6), 2) +
Math.Pow(a2[2] - p[2], 2) -
Math.Pow(l[1], 2);

fi[2] = Math.Pow(a3[0] - p[0], 2) +
Math.Pow(a3[1] - p[1] - 35, 2) +
Math.Pow(a3[2] - p[2], 2) -
Math.Pow(l[2], 2);
}

static void Main(string[] args)
{
// Set static value
double[] a1 = { (-435 * Math.Cos(Math.PI / 6)), (-435 * Math.Sin(Math.PI / 6)), 0 };
double[] a2 = { (435 * Math.Cos(Math.PI / 6)), (-435 * Math.Sin(Math.PI / 6)), 0 };
double[] a3 = { 0, 435, 0 };

double[] plow;
double[] phigh;


double[] p = new double[] { 0, 0, -710 };
double[] s = new double[] { 1, 1, 1 };
double epsx = 0.0000000001;
int maxits = 0;
alglib.minlmstate state;

determine_bc(a1, a2, a3, out plow, out phigh);

alglib.minlmcreatev(3, p, 0.0001, out state);
alglib.minlmsetbc(state, plow, phigh);
alglib.minlmsetcond(state, epsx, maxits);
alglib.minlmsetscale(state, s);

// Optimize
alglib.minlmoptimize(state, function_fvec1, null, null);


// Test result
alglib.minlmreport rep;
alglib.minlmresults(state, out p, out rep);
Console.WriteLine("\n This is result: \n {0}", alglib.ap.format(p, 5));

}


Top
 Profile  
 
 Post subject: Re: Create a loop for Levenberg–Marquardt algorithm C#
PostPosted: Sun Jul 17, 2022 11:20 am 
Offline
Site Admin

Joined: Fri May 07, 2010 7:06 am
Posts: 880
Hi!

You can replace last parameter in minlpoptimize() by a reference to a function index, e.g. use boxing to convert int to an object reference. And then decide within fvec() what to do, depending on the unboxed value.


Top
 Profile  
 
 Post subject: Re: Create a loop for Levenberg–Marquardt algorithm C#
PostPosted: Mon Jul 18, 2022 3:27 am 
Offline

Joined: Tue Jul 12, 2022 7:09 am
Posts: 3
I get it.

Thank you for support!


Top
 Profile  
 
 Post subject: Добровольное Медицинское Страхование Росгосстрах
PostPosted: Fri Dec 02, 2022 12:41 pm 
Offline

Joined: Sun Nov 06, 2022 7:05 am
Posts: 3
Location: Tajikistan
Одной из самой главной болезнью, которой занимается флеболог – это варикозная болезнь, которой страдают многие люди "https://Legamed21.ru/centr-ambulatornoj-hirurgii/genitalnaya-hirurgiya-v-ginekologii>прием"
Также флеболог изучает, исследует, диагностирует и назначает лечение по таким еще болезням, как: флебит и тромбофлебит, флеботромбоз и тромбоз, различные расстройства, которые вызывают тромбы и образования https://Legamed21.ru/uslugi/kompyuternaya-tomografiya
Кроме этого, в перечень болезней входят и венозная недостаточность в хронической форме, трофические язвы и венозные дисплазии, патологические нарушения в венах малого таза и различные виды кровотечений, причина которых – варикоз https://legamed21.ru/novosti/zhizn-posle-covid-19
Неправильное физическое развитие вен также входит в перечень болезней, которые лечит флеболог, а также и многое другое, что вызывает болезни ног "https://Legamed21.ru/centr-ambulatornoj-hirurgii/flebologiya&"


Подруга долго не могла забеременеть и для того чтобы исключить бесплодие, ей назначили диагностическую лапароскопию https://Legamed21.ru/doctors/lobov-lev-lvovich
Проводил процедуру Олими Ширинбек https://Legamed21.ru/doctors
Благодаря его знаниям подруга точно уверена, что дети у нее быть могут и продолжает курс лечения https://Legamed21.ru/uslugi/medicinskaya-psihologiya

Заболевания вен считается серьезной проблемой человечества, потому как вертикальное положение тела способствует замедлению кровотока, расширению венозных сосудов https://Legamed21.ru/vosstanovitelnoe-lechenie/fizioterapiya-cheboksary/beskontaktnaya-mestnaya-krioterapiya
Старания специалистов направлены на то, чтобы предотвратить образование хронической недостаточности, трофических язв и тромбов https://Legamed21.ru/konsultacii-specialistov/akusher-ginekolog

Хотелось бы выразить огромную благодарность сосудистому хирургу, флебологу Центральной клинической больницы гражданской авиации Сафонову Михаилу Владимировичу https://Legamed21.ru/vosstanovitelnoe-lechenie/fizioterapiya-cheboksary/udarno-volnovaya-terapiya-uvt
Кажется, что врачей с данной специализацией много и не всегда удается правильно выбрать врача https://Legamed21.ru/centr-ambulatornoj-hirurgii/genitalnaya-hirurgiya-v-urologii
Но, если кому-то понадобится консультация или операция, без колебаний рекомендую обратиться именно к Михаилу Владимировичу https://Legamed21.ru/otzyvy
Высокий профессионализм, доброжелательное отношение к пациенту отличает его https://Legamed21.ru/doctors/ginzburg-alla-mihajlovna
Мой муж обратился к Михаилу Владимировичу с жалобами на покраснения ноги https://Legamed21.ru/vosstanovitelnoe-lechenie/fizioterapiya-cheboksary
До этого он безуспешно пытался получить помощь в больнице по месту проживания https://Legamed21.ru/uslugi/gastroenterologiya
Ситуация была критическая, как показало УЗИ вен, была угроза отрыва вены в любую минуту https://Legamed21.ru/vosstanovitelnoe-lechenie/fizioterapiya-cheboksary/amplipulsterapiya
На консультации Михаил Владимирович в течение 40 минут вел прием, тщательно обследовал ноги и рекомендовал делать операцию "https://Legamed21.ru/vosstanovitelnoe-lechenie/ksenonoterapiya>Ñ&"
Операция прошла успешно, врач ежедневно после операции контролировал восстановление и лечение https://Legamed21.ru/novosti/diagnostika-prohodimosti-matochnyh-trub-metodom-uzi
Низкий поклон этому великому человеку и профессионалу в своей области https://legamed21.ru/sportivnye-travmy

Хочу выразить огромную благодарность врачу сосудистому хирургу Сафонову Михаилу Владимировичу, который успешно провёл операцию по удалению варикоза https://Legamed21.ru/centr-ambulatornoj-hirurgii/endoskopiya
На протяжении всего периода восстановления, доктор очень чутко реагировал на все вопросы и жалобы https://legamed21.ru/vosstanovitelnoe-lechenie
Всегда всё рассказывал подробно https://Legamed21.ru/konsultacii-specialistov/vrach-gastroenetorolog
Очень добрый, отзывчивый и светлый врач!

_________________
https://Legamed21.ru/centr-ambulatornoj-hirurgii/endoskopiya


Top
 Profile  
 
 Post subject: Клиники Где
PostPosted: Fri Dec 02, 2022 12:42 pm 
Offline

Joined: Sun Nov 06, 2022 7:05 am
Posts: 3
Location: Tajikistan
В 2009 г https://Legamed21.ru/doctors/semenov-valerij-vasilevich
окончил докторантуру (диплом доктора медицинских наук) в отделении сосудистой хирургии Научного Центра сердечно-сосудистой хирургии имени А https://legamed21.ru/novosti/zhizn-posle-covid-19
Н https://Legamed21.ru/esteticheskaya-medicina/dermatologiya
Бакулева РАМН https://legamed21.ru/assets/mgr/prajs-na-podpis-s-01.02.21.xlsx

Уважаемый Сабир Салимович! Примите мою благоданость за восстановление красоты ног! Только хирург высочайшей квалификации может сделать то, что сделали Вы https://legamed21.ru/novosti/kak-pravilno-pit-morkovnyj-fresh
Советую Вас всем друзьям и знакомым! отзыв о враче



Хирург-флеболог, врач ультразвуковой диагностики "https://Legamed21.ru/vosstanovitelnoe-lechenie/krioterapiya>врач"
Член Ассоциации Флебологов России https://Legamed21.ru/uslugi/uzi
Руководитель Центра Флебологии и Косметологии, г https://Legamed21.ru/novosti/transnazalnaya-gastroskopiya-ddetyam
Самара Андрей Викторович Красильников25 https://Legamed21.ru/centr-ambulatornoj-hirurgii/flebologiya
08 https://Legamed21.ru/uslugi/kardiologiya1
2022 12:32

_________________
https://Legamed21.ru/centr-ambulatornoj-hirurgii/endoskopiya


Top
 Profile  
 
 Post subject: Узи Википедия
PostPosted: Fri Dec 02, 2022 12:43 pm 
Offline

Joined: Sun Nov 06, 2022 7:05 am
Posts: 3
Location: Tajikistan
Еще несколько лет назад, такими вопросами занимался хирург, однако, стремительный рост сосудистых болезней привел к тому, что возникла необходимость сделать отдельное для них направление https://Legamed21.ru/doctors/yakovlev-sergej-petrovich


В случае когда болезнь перешла в критическую стадию или консервативная терапия не дает желаемого результата, применяется оперативное лечение, в том числе щадящее, малоинвазивное:

После беременности у меня повсюду появились венозные звездочки и я не знала что делать https://legamed21.ru/doctors/zaharov-boris-petrovich
Спасибо Вам, Ольга Сергеевна, что вернули мои красивые ноги!!! Все прошло без следа после двух склеротерапий https://Legamed21.ru/doctors/emelyanova-olga-nikolaevna
Все, кому делали склеротерапию больно – не ходите к таким врачам! Крищанович все сделала аккуратно, заботливо https://legamed21.ru/sportivnye-travmy
Никакой боли я вообще не почувствовала! Теперь я счастлива и снова щеголяю в мини-юбках, буд то и не рожала! отзыв о враче

_________________
https://Legamed21.ru/centr-ambulatornoj-hirurgii/endoskopiya


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group