2013-03-16 21 views
6

Mam do czynienia z problemem z AMPL. Używam 32-bitowej wersji systemu operacyjnego Linux. Próbuję rozwiązać prosty liniowy problem programisty, ale nie mogę zrozumieć, co jest nie tak ... Oto model, pliki danych i skrypt sesji. Odpowiedź na polecenie "rozwiązać" to: Nie można znaleźć "minos". Ale solver jest obecnie w moim folderze! Zmiana solverów nie pomaga. Jakieś sugestie?AMPL nie może znaleźć "minos"

Model problemu:

param n; 
param t; 
param p{i in 1..n}; 
param r{i in 1..n}; 
param m{i in 1..n}; 
#Declaration of variables 
var x {i in 1..n} >=0; 
#Objective Function 
maximize revenues: sum {i in 1..n} p[i]*x[i] ; 
#Constraints 
subject to Aval_Time: sum{i in 1..n} x[i]/r[i]<=t; 
subject to Max_Flavor {i in 1..n}: x[i]<=m[i]; 

Dane problemu:

param n := 4;# No of Flavors 
param t := 40; # Total labor hour in a week 
param p := 1 1 2 1.5 3 1 4 1.5; # Revenue per package flavor i 
param r := 1 40 2 30 3 50 4 20; # Production rate of package flavor i 
param m := 1 1000 2 900 3 500 4 800; # Maximum demand package flavor i 

AMPL sesja:

reset; 
model example2.mod; 
data example2.dat; 
solve; 
display x; 

Odpowiedź systemu:

Nie można wybrać " Minos "

Odpowiedz

5

Komunikat o błędzie próbuje stwierdzić, że brakuje solver. AMPL nie rozwiązuje twojego problemu, po prostu przekształca twój model w formę odpowiednią dla solvera, przekazuje ją do solver, a rzeczywiste rozwiązanie wykonuje solver. Chodzi o komunikat o błędzie.

Potrzebujesz rozwiązania, aby rozwiązać ten problem. Download i wyodrębnij minimos solver. Zrób to wykonywalne: W powłoce bash (nie AMPL shell) emisja następuje:

chmod +x minos 

można również powiedzieć AMPL gdzie solver jest przed wydaniem komendy solve;. Przed poleceniem rozwiązania, kwestia tego czy w powłoce AMPL lub w pliku modelu:

option solver "/path/to/minos"; 

gdzie można zmienić /path/to/minos zależności od instalacji.

To wszystko.

+0

Hmm ... Rzeczywiście Wiem, że AMPL nie rozwiązuje problemu bezpośrednio.Narzędzie do rozwiązywania problemów z minos zostało już pobrane i wyodrębnione. Flaga wykonywalna (chmod + x) jest prawdziwa. Ponadto ten plik binarny znajduje się w tym samym dworze, w którym znajduje się moja AMPL. Ale nadal nie działa i AMPL pokazuje mi ten komunikat o błędzie (nie mogę znaleźć "minos") ... –

+0

@RomanDryndik Czy wypróbowałeś 'solver opcji \/path/to/minos"; 'zasugerowałem w mojej odpowiedzi ? – Ali

+0

Tak, próbowałem, ale to nie pomogło. –

4

W systemach operacyjnych Unix i Unix, takich jak Linux, bieżący katalog zazwyczaj nie znajduje się na search path. Dostępne są następujące opcje:

  • Korzystając option solver './minos'; przed komendą solve.
  • Podobny do powyższego, ale użyj bezwzględnej ścieżki do minos zgodnie z sugestią Ali.
  • Dodaj ścieżkę do katalogu AMPL do zmiennej środowiskowej PATH.
  • Kopiuj (lub utworzyć dowiązanie symboliczne) minos do jakiegoś katalogu na ścieżce wyszukiwania, takie jak /usr/local/bin
1

Przepraszamy za opóźnienie mojej odpowiedzi. Problem został rozwiązany przez wykonanie następującego polecenia: w folderze z AMPL. Dzięki.

Powiązane problemy