2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Линейное программирование в SciLab
Сообщение13.08.2009, 10:41 
Для решения задачи линейного программирования в SciLab есть функция linpro. Однако при ее вызове (впрочем, это написано и в справке о ней) требуется quapro. Я скачал последнюю с сайта scilab. это exe-шник. Запустил, Все прошло успешно. Но на поведение linpro это никак не сказалось - она по-прежнему требует quapro. Видимо, этот toolbox надо как-то цеплять из самого scilab. Но как - не знаю.
Заранее благодарен за советы.

 
 
 
 Re: ЛП в SciLab? Как решить пример из Help-a
Сообщение15.08.2009, 08:36 
У меня версия 5.1.1
Как указано в описании quapro 1.0 toolbox (windows 32 bits binary version):
1. Выполнил quapro-1.0-win32.exe и вопросное расширение инсталировалось в директорию
C:\Program Files\quapro-toolbox-1.0;
2. В основной т.наз. Console scilab-a вошел в команде File >> Execute, нашел директории
C:\Program Files\quapro-toolbox-1.0 с только что инсталированном расширении и там увидел,
выбрал и выполнил как указано "загрузчик" расширения loader.sce. В Consol-е пeрошли тексты:
Код:
Startup execution:
  loading initial environment
 
Start quapro toolbox   

Load macros   

Load gateways   

Load help   

Execution done. 
;
3. Теперь уже в Helpe scilab-a в самом конце наряду с прочими появилось расширение quapro. Там открыл
описание linpro. Из части его Examples скопировал "фирменный" примерчик прямо в Console и нажал Enter;
4. Получил решение
Код:
-->//Find x in R^6 such that:

-->//C1*x = b1  (3 equality constraints i.e me=3)

-->C1= [1,-1,1,0,3,1;
-->    -1,0,-3,-4,5,6;
-->     2,5,3,0,1,0];

-->b1=[1;2;3];

-->//C2*x <= b2  (2 inequality constraints)

-->C2=[0,1,0,1,2,-1;
-->    -1,0,2,1,1,0];

-->b2=[-1;2.5];

-->//with  x between ci and cs:

-->ci=[-1000;-10000;0;-1000;-1000;-1000];cs=[10000;100;1.5;100;100;1000];

-->//and minimize p'*x with

-->p=[1;2;3;4;5;6]
p  =

    1. 
    2. 
    3. 
    4. 
    5. 
    6. 

-->//No initial point is given: x0='v';

-->C=[C1;C2]; b=[b1;b2] ; me=3; x0='v';

-->[x,lagr,f]=linpro(p,C,b,ci,cs,me,x0)
f  =

  - 7706.4681 
lagr  =

    0.         
    0.         
  - 3.1914894 
  - 7.4893617 
    2.212766   
    0.         
  - 0.7659574 
  - 0.8723404 
  - 0.5531915 
    0.         
    0.         
x  =

    275.2766   
  - 129.51064 
    1.537D-14 
  -1000.       
    100.       
  - 703.78723 

-->// Lower bound constraints 3 and 4 are active and upper bound

-->// constraint 5 is active --> lagr(3:4) < 0 and lagr(5) > 0.

-->// Linear (equality) constraints 1 to 3 are active --> lagr(7:9) <> 0


5. Последный пункт можно сделать и не прямо из Console, а через Applications >> Editor.
Скопировать примерчик в редактор программ и выполнить его уже оттуда при помощью команды
Execute >> Load into SciLab. Тогда в Console более лаконическое:
Код:
->
  p  =

    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
f  =

  - 7706.4681 
lagr  =

    0.         
    0.         
  - 3.1914894 
  - 7.4893617 
    2.212766   
    0.         
  - 0.7659574 
  - 0.8723404 
  - 0.5531915 
    0.         
    0.         
x  =

    275.2766   
  - 129.51064 
    1.537D-14 
  -1000.       
    100.       
  - 703.78723 


Все.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group